rgit and rabun-git are the same program. Examples below use rgit. Paths, env (RABUN_GIT_*), and systemd stay rabun-git.

Global flags (all commands):

rgit --config /path/to/rabun-git.toml
# or: export RABUN_GIT_CONFIG=/path/to/rabun-git.toml
rgit --identity ~/.ssh/id_ed25519 origin repo list
# or: export RABUN_GIT_SSH_IDENTITY=~/.ssh/id_ed25519

rgit --version prints the crate version.

On this machine, save a forge host once, then use that name as the first word (this is a forge alias, not a git remote):

rgit remote add origin git@git.example.com
rgit origin key copy ada --admin
rgit origin repo list
rgit origin key add ada --file ~/.ssh/id_ed25519.pub

Names live in ~/.config/rabun-git/remotes.toml (RABUN_GIT_REMOTES overrides the path). They cannot collide with clap commands (repo, user, key, …).

Over SSH, omit the rabun-git prefix and use port 2222:

ssh -p 2222 git@git.example.com repo list

init, check, status, serve, shell, remote, and key copy work only on the machine that runs them (remote and key copy are this machine only). key copy uses host SSH on port 22 (not git port 2222). The others work over SSH or rgit origin ….

On a systemd host (/etc/rabun-git/rabun-git.env), mutating commands must run as the rabun-git user:

rabun-git shell
rabun-git user add ada --admin
rabun-git key add ada --file /home/ada/.ssh/id_ed25519.pub
rabun-git repo create ada/website
exit

To register the first admin key from this machine (host SSH + sudo, not port 2222):

rgit origin key copy ada --admin --file ~/.ssh/id_ed25519.pub

After that, rgit origin repo create ada/website (or ssh -p 2222 git@HOST …) needs no sudo.

Host / operator

CommandWhat it does
rabun-git initWrite rabun-git.toml, .env.example, empty forge root
rabun-git checkData root writable, git on PATH, SSH bind, admin with a key
rabun-git statusCompanion JSON (rabun.companion/v1), no keys
rabun-git serve [--bind HOST:PORT]Listen for git + management commands
rabun-git shellOne sudo, then bash as the systemd user (prompt (rabun-git); exit to leave)

Named remotes (this machine)

CommandWhat it does
rabun-git remote add NAME URL [--identity FILE] [--host user@HOST]Save a forge host (origin is the usual name)
rabun-git remote listList saved names and URLs
rabun-git remote show NAMEURL, optional identity, and host SSH for key copy
rabun-git remote remove NAMEDelete a saved name
rabun-git NAME …Run a forge command on that host

URL forms: HOST, user@HOST, user@HOST:port, ssh://user@HOST:port. Default SSH user git, default port 2222.

Users and keys

CommandWhat it does
rabun-git user add NAME [--admin]Create user or update forge-admin flag
rabun-git user listList logins
rabun-git user remove NAMEDelete user, keys, and all grants
rabun-git key add USER --file KEY.pubAppend OpenSSH public keys from a local file
rabun-git key add USER --literal 'ssh-ed25519 AAAA…'Append a key given on the command line
rabun-git key list USERFingerprints only
rabun-git NAME key copy [USER] [--file KEY.pub] [--admin] [--host user@HOST]Copy a public key to the forge over host SSH (port 22); USER defaults to this machine’s username

Repositories and ACL

CommandWhat it does
rabun-git repo create owner/nameCreate a bare repo; creator gets repo admin
rabun-git repo listRepos the caller can read
rabun-git repo list --user NAMERepos that user can access (self or forge admin)
rabun-git repo show owner/namePath and grants
rabun-git access grant USER owner/name [--role read|write|admin]Set role (write if omitted)
rabun-git access revoke USER owner/nameRemove that user’s grant

Merge requests and CI

CommandWhat it does
rabun-git request create owner/name --head BRANCH --title "…" [--base BRANCH] [--body "…"]Open a request
rabun-git request list owner/nameList requests
rabun-git request show owner/name IDOne request
rabun-git request review owner/name ID [--approve|--reject] [--comment TEXT]Review
rabun-git request merge owner/name IDFast-forward the base branch
rabun-git run list owner/nameCI runs
rabun-git run show owner/name IDStatus YAML
rabun-git run logs owner/name IDCaptured log

Git URLs and env

Clone / push:

ssh://git@HOST:2222/owner/name.git
VariableRole
RABUN_GIT_ROOTData root (default data/git)
RABUN_GIT_SSH_BINDSSH listen address (default 0.0.0.0:2222)
RABUN_GIT_HEALTH_BINDLoopback GET /health (default 127.0.0.1:8792; empty/off disables)
RABUN_GIT_STATUS_FILECompanion JSON (default $RABUN_GIT_ROOT/status.json)
RABUN_GIT_CONFIGPath to rabun-git.toml
RABUN_GIT_REMOTESNamed remotes file on this machine (default ~/.config/rabun-git/remotes.toml)
RABUN_GIT_SSH_IDENTITYPrivate key for rabun-git origin …

Special push to open a request:

git push origin HEAD:refs/rabun/requests/new/my-branch

Further reading