One gate, nine platforms.
savesyncsnapshotmirrorprrunnertui+37 more
A torii is a gate. This one stands between you and every place your code lives: GitHub, GitLab, Gitea, Codeberg, Forgejo, Bitbucket, Sourcehut, Radicle and Azure DevOps. You cross it with one command, not with seven tools.
cargo install gitorii --locked # 0.13.0Named for the job, not for the plumbing
Every line on the right does what the line on the left does, against the same repository and the same objects. What changes is that the name says what you wanted.
Forty-four commands, and none of them is a second tool
The platform work, the CI control plane, the multi-repo operations and the safety net live in the same binary as the commit and the push. That is the argument: not fewer commands than git, but everything a repository needs under one name. Pick a group on the left.
Rewrite history without holding your breath
The whole filter-repo surface, as first-class subcommands. Every one takes a safety snapshot before it touches a commit, preserves author and committer dates by default, and refuses to run on a dirty tree.
torii history reword <hash> -m "msg"
snapshot taken · dates preserved · restore with torii snapshot restore
It stops you before the mistake, not after
The secret scanner runs before every save, not as a hook you remember to install on each machine.
torii save -am "wip"
⚠ Secret detected in src/config.rs:12 GITHUB_TOKEN = "ghp_xxxxxxxxxxxxxxxxxxxx" commit aborted (1 finding)
Seven clients, nine hosts, one command
Pull requests, issues, pipelines, jobs, packages and releases, against whichever platform the repository lives on. Mirror across several at once and each keeps its own credentials.
torii mirror sync
→ github paskidev/gitorii pushed 3 commits
serves GitHub
The same tool, with a screen
Seventeen views over the same operations, sharing one configuration with the CLI. No separate app, no daemon.
- files
- save
- sync
- snapshot
- log
- branch
- tags
- worktrees
- submodules
- remote
- workspace
- pr/mr
- issues
- bisect
- auth
- platform
- config
The numbers, as measured
Commands and subcommands counted in the CLI's own dispatch table; tests counted in the suite; version and downloads read from crates.io as this page renders.
- 44
- top-level commands
- 158
- subcommands
- 328
- tests in the suite
- 0
- runtime dependencies
- 0.13.0
- on crates.io
- 1,215
- downloads
Four ways in
Prebuilt binaries need no compiler. Building from source needs a C compiler and nothing else — no perl, no openssl-dev, no libssh2-dev, no pkg-config.
cargo install gitorii --locked # 0.13.0
--locked matters: without it the resolver ignores the published lockfile and can pull a broken release-candidate crypto chain.
If cargo install dies with a rustc SIGSEGV, the crypto chain overflowed rustc's 8 MB stack. RUST_MIN_STACK=67108864 cargo install gitorii --locked -j 1 fixes it; -j 1 is the bulletproof setting.