Connecting GitHub
One-click GitHub connect via device flow, plus a personal access token fallback for self-hosted or advanced setups.
Connecting GitHub isn't required — you can always paste a repo URL directly when creating an app — but it turns the New App form's repo field into a searchable picker and is what powers auto-deploy on push.
One-click connect
From Settings, click Continue with GitHub. This uses the same device authorization flow the gh CLI and many desktop tools use — the honest constraint being that a shipped desktop app can't safely embed a client secret the way a server-side "Sign in with GitHub" button can, so device flow is the real one-click option available to it.
What happens automatically:
- DeployOS requests a short one-time code and copies it to your clipboard.
- Your browser opens to GitHub's device-activation page.
- You paste the code (already on your clipboard) and approve access.
- DeployOS polls in the background and connects the moment you approve — no manual "I'm done" step.
Once connected, your GitHub login shows in Settings, and the New App form gets a repo picker — search your repos, pick one, and choose a branch — instead of a bare URL field.
Personal access token (advanced)
Behind an Advanced disclosure on the same card, you can instead paste a personal access token with repo scope. Useful if device flow isn't available to you, or you'd rather manage access via a token you control directly. A rejected token shows a clear "check its scopes" error rather than a silent failure.
Disconnecting
The same Settings card lets you disconnect — this only removes DeployOS's stored access; it doesn't revoke anything on GitHub's side (do that from github.com → Settings → Applications if you want to fully revoke it).
Private repositories without connecting GitHub
You don't have to connect an account at all. Paste a private repo's git@github.com:... SSH URL directly into the New App form, and DeployOS shows a Get deploy key helper instead — see Deploying Your First App for that path, which scopes access to one repo on one server rather than your whole GitHub account.