Skip to content

feat: Create and document the Fro Bot Agent GitHub App identity #703

@marcusrbrown

Description

@marcusrbrown

Summary

Create and document the public "Fro Bot Agent" GitHub App that the gateway uses for /fro-bot add-project. The runtime code already shipped in v0.45.0/v0.46.x — this issue covers the App's identity and documentation, not its code.

Why this app exists

/fro-bot add-project owner/repo authenticates as a GitHub App, discovers the installation for owner, mints an installation access token, and clones the repo into the workspace before creating its Discord channel. Because installation tokens are scoped per-installation, onboarding repos across different accounts requires the App to be installed on each of those accounts — which means the App must be public ("any account"). It needs only the contents: read repository permission.

Ownership and visibility

  • Owner: the fro-bot account (brand-coherent with this repo and the existing gatewayGitHubAppInstallUrl default).
  • Visibility: public. An external installation is inert on its own — it grants the App read access to that installer's repos only, and nothing happens unless a Fro Bot gateway operator runs /fro-bot add-project for them. The private key lives only on the operator's gateway host.
  • Permissions: contents: read only. No webhook.

Deliverables (in this repo)

  1. Creation runbookdocs/github-app-setup.md: step-by-step to register the App (name "Fro Bot Agent", contents: read, public, no webhook), generate the private key, and where the credentials go (the operator's gateway environment — never committed here). Make clear the App ID + PEM are consumed by the deployment, not stored in this repo.
  2. Logo asset — committed under assets/ (SVG preferred, 512×512 PNG export). Uploaded to the App settings by the operator.
  3. Minimal docs pagedocs/github-app.md (GitHub-Pages-friendly): what the App does, exact permissions, privacy posture, install/uninstall instructions, link to the runbook for self-hosters.
  4. Default install URL constant — confirm/update gatewayGitHubAppInstallUrl's default to the real App slug once the App exists, so the "App not installed" message in /add-project points operators at the correct install page.

Out of scope

  • Registering the App itself — that's a manual step in the GitHub UI under the fro-bot account (produces the App ID + private key). A human does this; it can't be automated.
  • Provisioning the credentials — the operator seeds GITHUB_APP_ID + GITHUB_APP_PRIVATE_KEY into their own deployment environment. Not this repo's concern.
  • Runtime code — already shipped.

Note on the install-URL slug

The current default is https://github.com/apps/fro-bot/installations/new. If the registered App's slug differs (e.g. fro-bot-agent because the fro-bot slug is taken), update the default constant to match the real slug as part of deliverable #4, so operators aren't sent to the wrong App.

Suggested @designer brief

For the logo + docs page (the same agent roster is available in this repo's OpenCode session):

Design the minimal public identity for the "Fro Bot Agent" GitHub App.

Context: Public GitHub App granting a self-hosted Discord gateway read-only repo access for the /fro-bot add-project owner/repo command. Permission: contents: read only. Owner: fro-bot. Audience: the GitHub App listing page + a minimal docs page.

Deliverables:

  1. Logo — SVG (+ 512×512 PNG export). Flat, geometric, legible as a 64px circle avatar, no text, works on light AND dark backgrounds, no Discord/GitHub-brand mimicry. Boring, trustworthy, developer-tooling aesthetic. Provide 2–3 concepts with one-line rationale each.
  2. Docs page — single markdown file (docs/github-app.md): what the app does, exact permissions (contents: read), privacy posture ("inert unless paired with a Fro Bot gateway in your Discord server"), install link, how to uninstall, link to the creation runbook.
  3. Listing copy — ~150-char description + a short tagline for the App page.

Constraints: plain markdown / static assets only — no frontend frameworks or build tools. Low-effort to maintain, easy to delete later.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions