Deploy from a private repo
One GitHub App install, then private repos deploy like public ones. No deploy keys, no PATs.
Private GitHub repos deploy through the nyxory GitHub App: a one-time install in your browser, then every clone — interactive or inside a build — authenticates with short-lived tokens we mint per operation. You never create a deploy key or a PAT, and there’s nothing to rotate.
Prereqs
- An agent connected to nyxory (see Connect your agent)
- Admin access to the GitHub repo or org you want to connect
- Works for github.com repos; for GitLab / Bitbucket / self-hosted, talk to us
-
Just prompt.
deploy https://github.com/me/private-widget to nyxoryYour agent calls
nyx_brain, then tries the clone. For a public repo that’s the end of the story — for a private one, the clone bounces with an auth error. -
The agent hands you an install link.
On the bounce, the agent calls
nyx_github_install_urland gives you a signed install URL. The link expires after 10 minutes — if it goes stale, the agent just mints a fresh one; the call is idempotent. -
Install the app in your browser.
Open the link, pick the repositories you want nyxory to reach (or select the whole org), click Install. It’s a regular GitHub App: repo-scoped, visible under your GitHub settings, revocable there at any time.
-
Tell your agent you’re done.
It retries the clone via
nyx_clone_repo— the repo lands in your project workspace and the deploy continues exactly like a public-repo deploy. If several installations cover the same owner, the agent disambiguates withnyx_list_github_installationsandnyx_list_github_repos. -
Builds are covered automatically.
Container builds run in an isolated build environment that needs to clone your repo too. The platform mints a short-lived (~1 hour) token per build, scoped to the clone step only — your Dockerfile never sees it, it’s never stored, and it expires on its own.
Managing access
which GitHub accounts are connected to nyxory?
Your agent lists them via nyx_list_github_installations. To revoke:
- From the agent:
nyx_disconnect_githubrevokes the installation on GitHub and removes our record. Idempotent — safe to call twice. - From GitHub: Settings → Applications → Installed GitHub Apps → nyxory → Uninstall. Same effect.
After either path, no new tokens can be minted for that installation. Outstanding short-lived tokens age out within the hour.
Troubleshooting
Caution:
- The install link 404s or errors. It expired (10-minute window). Ask your agent for a fresh one —
nyx_github_install_urlre-signs on every call.- Installed, but the clone still fails. Check the repo was actually included in the installation: ask your agent to run
nyx_list_github_reposfor the installation — the repo’sfull_namemust appear there. If you picked “selected repositories” during install, add the missing repo from GitHub’s app settings.- Multiple orgs, wrong account. The install link binds to whichever GitHub account you’re logged into. Log into the right account (or use the org picker on GitHub’s install screen) and re-open a fresh link.
- Org requires approval. In orgs where you’re not an admin, GitHub queues the install as a request. The clone succeeds as soon as an org admin approves the request — that approval lives on GitHub’s side, so nudge the admin rather than re-running the install.
- Still stuck? Ask your agent for the exact clone error and the output of
nyx_list_github_installations— that pair is what we’ll ask for in support.
Next steps
- Deploy a Next.js app — the full deploy walk-through
- Builds & the execution surface — where the build token story comes from
- Add a custom domain — put the deploy on your own hostname