Command reference
rgit and rabun-git are the same program.
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
| Command | What it does |
|---|---|
rabun-git init | Write rabun-git.toml, .env.example, empty forge root |
rabun-git check | Data root writable, git on PATH, SSH bind, admin with a key |
rabun-git status | Companion JSON (rabun.companion/v1), no keys |
rabun-git serve [--bind HOST:PORT] | Listen for git + management commands |
rabun-git shell | One sudo, then bash as the systemd user (prompt (rabun-git); exit to leave) |
Named remotes (this machine)
| Command | What 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 list | List saved names and URLs |
rabun-git remote show NAME | URL, optional identity, and host SSH for key copy |
rabun-git remote remove NAME | Delete 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
| Command | What it does |
|---|---|
rabun-git user add NAME [--admin] | Create user or update forge-admin flag |
rabun-git user list | List logins |
rabun-git user remove NAME | Delete user, keys, and all grants |
rabun-git key add USER --file KEY.pub | Append 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 USER | Fingerprints 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
| Command | What it does |
|---|---|
rabun-git repo create owner/name | Create a bare repo; creator gets repo admin |
rabun-git repo list | Repos the caller can read |
rabun-git repo list --user NAME | Repos that user can access (self or forge admin) |
rabun-git repo show owner/name | Path and grants |
rabun-git access grant USER owner/name [--role read|write|admin] | Set role (write if omitted) |
rabun-git access revoke USER owner/name | Remove that user’s grant |
Merge requests and CI
| Command | What it does |
|---|---|
rabun-git request create owner/name --head BRANCH --title "…" [--base BRANCH] [--body "…"] | Open a request |
rabun-git request list owner/name | List requests |
rabun-git request show owner/name ID | One request |
rabun-git request review owner/name ID [--approve|--reject] [--comment TEXT] | Review |
rabun-git request merge owner/name ID | Fast-forward the base branch |
rabun-git run list owner/name | CI runs |
rabun-git run show owner/name ID | Status YAML |
rabun-git run logs owner/name ID | Captured log |
Git URLs and env
Clone / push:
ssh://git@HOST:2222/owner/name.git| Variable | Role |
|---|---|
RABUN_GIT_ROOT | Data root (default data/git) |
RABUN_GIT_SSH_BIND | SSH listen address (default 0.0.0.0:2222) |
RABUN_GIT_HEALTH_BIND | Loopback GET /health (default 127.0.0.1:8792; empty/off disables) |
RABUN_GIT_STATUS_FILE | Companion JSON (default $RABUN_GIT_ROOT/status.json) |
RABUN_GIT_CONFIG | Path to rabun-git.toml |
RABUN_GIT_REMOTES | Named remotes file on this machine (default ~/.config/rabun-git/remotes.toml) |
RABUN_GIT_SSH_IDENTITY | Private key for rabun-git origin … |
Special push to open a request:
git push origin HEAD:refs/rabun/requests/new/my-branch