Command reference
Everything on one page. Each command links to the page that explains it properly.
ngit is non-interactive by default
It won't prompt unless you ask. -i / --interactive opts into prompts; -d / --defaults accepts sensible defaults without asking.
Global flags
Available at any position — ngit --repo upstream send and ngit send --repo upstream are equivalent.
| Flag | Purpose |
|---|---|
-d, --defaults | Non-interactive; use sensible defaults |
-i, --interactive | Enable prompts |
--json | One machine-readable JSON document on stdout |
--offline | Local cache only, skip the network |
--repo <TARGET> | Select the repository: remote name, naddr, or nostr:// URL |
--repo-relay-only | Publish only to repository relays |
--signer <ALIAS|NPUB|NAME> | Use a stored signer for this one command |
-n, --nsec <NSEC> | Provide a key inline |
--nsec-file <PATH> | Read a one-shot key from a file (preferred in CI) |
--nbunksec <NBUNKSEC> | Established remote-signer session, inline |
--nbunksec-file <PATH> | Established remote-signer session from a file |
-f, --force | Bypass safety guards |
-v, --verbose | Verbose output |
-c, --customize | Print the git config reference and exit |
Repositories
| Command | Does |
|---|---|
ngit init | Publish a repository to nostr |
ngit repo | Show this repository's metadata and roster |
ngit repo init | Same as ngit init |
ngit repo edit | Change metadata, hosting or roster |
ngit repo accept | Accept a maintainer invitation |
ngit repo leave | End your own role |
ngit repo follow-lead | Follow a changed lead or roster |
ngit sync | Push nostr state out to the git servers |
Pull requests
| Command | Does |
|---|---|
git push origin pr/... | The normal way to open a PR |
ngit send | Open a PR with a long or file-sourced description |
ngit pr list | List PRs — --status, --label |
ngit pr view <ID> | Read one — --comments |
ngit pr checkout <ID> | Check it out locally |
ngit pr apply <ID> | Apply its patches — --stdout to just print them |
ngit pr comment <ID> | Comment — --reply-to to thread |
ngit merge <ID> | Merge into the target branch (does not push) |
ngit pr close / reopen / ready / draft | Change status |
ngit pr label <ID> | Add labels |
ngit pr set-subject / set-cover-note | Retitle or rewrite the description |
Issues
| Command | Does |
|---|---|
ngit issue create | Open an issue — --subject, --body, --label |
ngit issue list | List — --status, --label |
ngit issue view <ID> | Read one — --comments |
ngit issue comment <ID> | Comment — --reply-to |
ngit issue resolved <ID> | Close as fixed |
ngit issue close <ID> | Close without resolution |
ngit issue reopen <ID> | Reopen |
ngit issue label / set-subject / set-cover-note | Edit |
CI
| Command | Does |
|---|---|
ngit ci status [TARGET] | Show CI results — --require-ci-trust to gate |
ngit ci request <COORDINATOR> | Ask a coordinator to run CI |
ngit ci stop <COORDINATOR> | Withdraw that request |
ngit ci trigger <COORDINATOR> | Run one workflow once |
Releases
| Command | Does |
|---|---|
ngit release list | List releases for linked applications |
ngit release view <TARGET> | View a release and its assets |
ngit release publish | Publish or edit a release |
ngit release app | Work with software applications |
ngit release asset | Work with release assets |
Accounts
| Command | Does |
|---|---|
ngit account login | Log in — --local, --bunker-url, --alias |
ngit account connect | Interactive login (alias for login -i) |
ngit account create | Create a new identity |
ngit account whoami | Show available signers and which one wins |
ngit account logout | Remove login config — --forget also deletes the secret |
ngit account forget-keys <entry> | Delete a stored credential |
ngit account export-keys | Print the nsec or nbunksec |
Coding agents
ngit ships a skill that teaches coding agents to use it, and installs into the Codex and Claude discovery paths:
bash
ngit skill install
ngit skill upgrade
ngit skill status
ngit skill opt-out --local # or --globalInstall and upgrade make a dedicated commit. If you're not a maintainer, push it from a pr/ branch like any other change.
Two global flags matter for automation:
--json— one JSON document on stdout; relay chatter and diagnostics stay on stderr, so stdout is always parseable.idandreply_tocome back asnevent1…strings, ready to use as arguments or, prefixed withnostr:, as references inside a body.--offline— reads the local cache and skips the network. Fast, but a cold cache can produce false negatives.
Next
- Configuration — git config keys and environment variables
- Troubleshooting