Connect GitHub
Isoward uses two separate GitHub integrations:
- Sign in with GitHub: OAuth login (optional, env-gated) — callback
https://isoward.com/v1/auth/github/callback - GitHub App: clones repositories and receives push webhooks for auto-deploy
Where to create the App
Create and own the App under the isoward organization: Organization settings → Developer settings → GitHub Apps. Do not use Third-Party Access / Integrations (that gate is for approving other vendors' apps).
Preferred: open https://isoward.com/v1/setup/github-app (or run GITHUB_APP_ORG=isoward GITHUB_APP_REGISTRATION_TARGET=org node scripts/register-github-app.mjs) while logged in as an org owner — GitHub's Manifest flow pre-fills the same fields and returns the PEM and webhook secret.
Manual form field reference
If you create the App in the UI, use these values (base origin from ISOWARD_PUBLIC_URL):
| Setting | Value |
|---|---|
| GitHub App name | Isoward |
| Description | Clone repos and receive push webhooks for Isoward auto-deploy. |
| Homepage URL | https://isoward.com |
| Callback URL | https://isoward.com/v1/github/callback |
| Request user authorization during installation | Unchecked |
| Setup URL (post-installation) | https://isoward.com/v1/github/callback |
| Redirect on update | Checked — same as Setup URL |
| Webhook URL | https://isoward.com/webhook/github |
| Webhook active / SSL | Active; SSL verification enabled |
| Permissions | Metadata (read), Contents (read), Webhooks (read & write) |
| Events | push, pull_request, installation, installation_repositories |
| Where can this GitHub App be installed? | Any account (public App) |
Do not use /v1/setup/github-app/callback as the Setup URL — that path is only for one-time Manifest registration when creating the App. End-user installs must land on /v1/github/callback.
After create
- Set
GITHUB_APP_ID,GITHUB_APP_SLUG(preferisoward), and the webhook secret asGITHUB_APP_WEBHOOK_SECRET/GITHUB_WEBHOOK_SECRET - Generate a private key → save PEM → mount via
GITHUB_APP_PRIVATE_KEY_PATH(or import with./scripts/import-github-app.sh) - Optionally run
node scripts/update-github-app-isoward-urls.mjsto refresh the webhook URL via API - Restart the gateway; smoke Install → repo list → push auto-deploy
Private key rotation
- GitHub App settings → Private keys → Generate a private key
- Save PEM to server secrets path
- Run import script and restart gateway
- Verify with
GET /v1/github/diagnostics
Dashboard
Integrations → Connect GitHub for deployments. Choose account, org, and repositories. Use Connect another GitHub account for multiple identities.