Recommended: create the app with the backend wizard first
Use the backend wizard as the primary path for local development.- Open the UI-proxied setup endpoint:
https://<your-public-ui-domain>/orchestrator/github/setup(orhttp://localhost:3030/orchestrator/github/setupwhen running UI locally). - The wizard generates a GitHub App manifest JSON payload for you.
- Continue the GitHub setup flow from that manifest, then copy the app install URL into
ORCHESTRATOR_GITHUB_APP_URLinui/.env.local.

PUBLIC_BASE_URLset to a reachable public URLINTERNAL_BASE_URLset to the backend internal service URL- Optional:
GITHUB_ORGto scope setup to a specific org
For the end-to-end GitHub setup flow, see Set up GitHub App. In local dev, the key difference is that you start from the backend wizard manifest JSON instead of going directly to the hosted OpenTaco GitHub App install link.
App credentials from GitHub
After app creation, GitHub shows credentials (including app ID and client ID). Copy these into your backend/drift environment configuration (for exampleself-hosting/docker-compose/orchestrator.env and self-hosting/docker-compose/drift.env):
GITHUB_APP_IDGITHUB_APP_CLIENT_IDGITHUB_APP_CLIENT_SECRETGITHUB_APP_PRIVATE_KEY_BASE64GITHUB_WEBHOOK_SECRET

Install the app on repositories
After creating the app, open its install link (for examplehttps://github.com/apps/<app-name>/installations/new) and install it to your org or user account.
During install, choose repository scope:
- All repositories for broad testing
- Only select repositories for safer local iteration
ORCHESTRATOR_GITHUB_APP_URL in ui/.env.local to the same install link so the UI “Connect with GitHub” action points to your app.
Troubleshooting
- 404 on connect:
ORCHESTRATOR_GITHUB_APP_URLnot set or points to a non-existent path. - Callbacks fail: UI not exposed publicly; tunnel the UI port and update callback/webhook URLs to that domain.
- Backend rejects /api/github/link: ensure
DIGGER_ENABLE_API_ENDPOINTS=trueandDIGGER_INTERNAL_SECRETmatches the UIORCHESTRATOR_BACKEND_SECRET.

