Docs

Getting started

Install the binary, initialise a repository, and make your first commit. Everything on this page works against an ordinary Git repository — torii writes the same objects, so you can stop using it at any point and git will not notice.

torii <command> 44 commands torii tui 17 views torii-core vcs · platforms · workspace · config · auth one library, both surfaces 7 platform clients github gitlab gitea bitbucket sourcehut radicle azure libgit2 (vendored) GIT_HTTPS=0 GIT_SSH=0 objects, refs, index pure-Rust transports rustls (https) · russh (ssh) since 0.6.0 build needs a C compiler no perl · no openssl-dev no libssh2-dev · no pkg-config one binary · MIT OR Apache-2.0

Install

The quickest path that always carries the current version is crates.io:

cargo install gitorii --locked

--locked matters: without it the resolver ignores the published lockfile and can pull a broken release-candidate crypto chain.

Prebuilt binaries need no compiler and are built by CI for linux x86_64, linux aarch64 and windows x86_64:

curl -L "https://gitlab.com/api/v4/projects/paskidev%2Fgitorii/packages/generic/gitorii/<tag>/torii-linux-x86_64" \
  -o ~/.local/bin/torii && chmod +x ~/.local/bin/torii

Check the releases page for the newest <tag> that actually carries artifacts — the published binaries can trail the crate. On Arch, yay -S gitorii installs from the AUR, which is maintained by hand and can also be behind. torii --version after installing tells you what you got.

Building from source needs a C compiler and nothing else. Since 0.6.0 the HTTPS and SSH transports are pure Rust — rustls and russh — and libgit2 is vendored with its own transports compiled out, so there is no perl, no openssl-dev, no libssh2-dev and no pkg-config to install first.

Your first four commands

torii init                            # initialise a repository
torii status                          # see what changed
torii save -am "feat: add user auth"  # stage everything and commit
torii sync                            # pull, then push

torii save runs the secret scanner before it writes anything. If it finds something, the commit is aborted and the file and line are printed. When the finding is a false positive — a documentation example, a test fixture — pass --yes, or silence it for good in .toriignore.

Identity

torii reads user.name and user.email from its own config first, then from Git's. Set them once:

torii config set user.name "Alice"
torii config set user.email "alice@example.com"

There is no "Torii User" fallback. If neither config has a name, the commit fails with a message saying so rather than writing the wrong author into your history.

Talking to a platform

Cloning by shorthand and opening a pull request both need a token for the platform in question:

torii auth set github            # stores the token in ~/.config/torii/auth.toml
torii clone github alice/api
torii pr create -t "feat: login" -b main

The file is written with mode 600. Tokens are per platform: GitHub, GitLab, Codeberg, Gitea, Forgejo, Bitbucket, Sourcehut, Radicle and Azure DevOps each have their own.

If cargo install crashes

cargo install gitorii can die with rustc interrupted by SIGSEGV. That is rustc overflowing its 8 MB thread stack while monomorphising the transitive crypto chain, not a bug in the crate. Raise the stack and cap the parallelism:

RUST_MIN_STACK=67108864 cargo install gitorii --locked -j 1

-j 1 is the setting that always works. If you would rather skip the compiler entirely, take a prebuilt binary from the releases page.