GitHub Command Guide (si orbit github)
si orbit github supports GitHub REST/GraphQL using either GitHub App auth or OAuth token auth.
Related:
Auth policy:
appmode: GitHub App installation tokensoauthmode: OAuth access token / token-based auth (including PAT-style tokens)- Credentials should be injected from
si vault(or compatible env keys).
Credential Keys (Vault-Compatible)
Per account alias<ACCOUNT> (uppercase slug):
GITHUB_<ACCOUNT>_APP_IDGITHUB_<ACCOUNT>_APP_PRIVATE_KEY_PEMGITHUB_<ACCOUNT>_INSTALLATION_ID(optional)GITHUB_<ACCOUNT>_OAUTH_ACCESS_TOKENGITHUB_<ACCOUNT>_TOKEN
GITHUB_APP_IDGITHUB_APP_PRIVATE_KEY_PEMGITHUB_INSTALLATION_IDGITHUB_OAUTH_TOKENGITHUB_TOKENGH_TOKENGITHUB_API_BASE_URLGITHUB_DEFAULT_OWNERGITHUB_DEFAULT_ACCOUNTGITHUB_AUTH_MODEGITHUB_DEFAULT_AUTH_MODE
Context
Git Remotes (No PAT URLs)
Use GitHub App tokens throughsi vault as a Git credential helper, then normalize remotes to PAT-free HTTPS URLs:
si vault runusage here is host/admin-side.- In SI runtime containers, use
si fort ...for secret access paths.
--remote <name>: choose a remote other thanorigin--helper-owner <owner>: force a fixed owner in helper calls (default derives from remote path)--no-vault: use direct env lookup instead of wrapping helper calls withsi vault run--dry-run: preview remote/helper changes without writing
Git Remotes (PAT URLs from Vault)
When you need explicit PAT-authenticated remotes (for CI/dev environments that do not use git credential helpers), use:- reads the PAT from
si vaultusing--vault-key - rewrites both fetch and push URLs for the target remote (default
origin) to:https://<PAT>@github.com/<owner>/<repo>.git
- sets local branch upstream tracking so plain
git push/git pullwork without extra remote/branch args
--remote <name>: remote name to rewrite (defaultorigin)--owner <owner>: only apply to repos for that owner/org--track-upstream=false: skip branch tracking update--dry-run: preview changes without writing--json: structured output for automation
clone supports either owner/repo or full GitHub URL input, rewrites both fetch/push URLs with PAT auth, and sets upstream tracking for plain git push / git pull.
Troubleshooting Git App Access
If fetch/push still fails after setup:Repository not foundfor private repos usually means the app installation does not include that repo.github app installation id is requiredmeans owner/repo context could not map to an installation; pass--owner/--helper-owneror setGITHUB_<ACCOUNT>_INSTALLATION_ID.
Repositories
Branches and Protection
Pull Requests
Issues
Projects (GitHub Projects v2)
Project reference inputs accepted by project commands:- project node ID (for example
PVT_kwDOB2x6Nc4ArlO7) org/number(for exampleAureuma/7)- project URL (for example
https://github.com/orgs/Aureuma/projects/7/views/4) - project number (
7) when org is available from--owneror current context owner
setaccepts exactly one value update at a time:--text,--number,--date,--single-select-option-id,--single-select,--iteration-id, or--iteration.--single-selectand--iterationresolve IDs from project field metadata automatically.- OAuth/PAT auth for Projects v2 needs project permissions (
read:projectfor read/list/get/fields/items andprojectwrite scope for item mutations). Issue-linked operations also need repo issue permissions on the target repository.
Workflows
Releases
- If the requested tag already exists remotely,
si orbit github release createreuses it. - If the tag is missing and
--target <sha>is provided, SI createsrefs/tags/<tag>first, then creates the release. - If the tag is missing and
--targetis omitted, the command fails clearly instead of creating a broken/tagless release flow. - For draft releases, GitHub can still report an
untagged-...release URL until publish time. Treattag_nameplus the remote git ref as the source of truth.
Secrets
si orbit github fetches the target public key, encrypts plaintext with sealed-box compatible encryption, then upserts the secret.
Raw REST / GraphQL
Error Reporting
On failures,si orbit github surfaces:
- HTTP status
- request id (
X-GitHub-Request-Id) - API message and documentation URL
- structured
errorswhen present - redacted raw body for debugging

