Config and auth
Configuration is global by default and per-repository with --local, where local wins. Tokens live apart from it, in a file of their own with restrictive permissions.
Config
torii config set user.name "Alice"
torii config set user.name "Alice" --local
torii config get user.name
torii config list [--local]
torii config edit
torii config reset
torii config check-ssh| Key | Does |
|---|---|
user.name user.email | the identity written into a commit |
user.editor | the editor opened for a message or an interactive rebase |
git.default_branch | the branch torii init creates |
git.sign_commits | sign every commit with GPG (alias: commit.gpgsign) |
git.gpg_key | which key to sign with (alias: user.signingkey) |
git.pull_rebase | rebase rather than merge when integrating |
mirror.default_protocol | ssh or https for new mirrors |
mirror.autofetch_enabled | fetch from the primary in the background |
snapshot.auto_enabled | take snapshots on a timer |
snapshot.auto_interval_minutes | how often, when it is on |
worktree.base_dir | where a new worktree is created, default .. |
worktree.inherit_paths | comma-separated paths copied into a new worktree |
ui.colors ui.emoji ui.verbose | output style |
ui.date_format | how dates are printed |
Git's own spellings are accepted as aliases, so a repository that already sets commit.gpgsign needs no migration.
Signing
torii config set git.sign_commits true
torii config set git.gpg_key <key-id>
torii sign # re-sign existing history
torii log --signatures # a verdict columnSigning is honoured at every site that creates a commit — save, cherry-pick, revert, merge, and the history rewrites. Annotated tags are still created unsigned.
Platform tokens
torii auth set github
torii auth set gitlab | codeberg | gitea | forgejo | bitbucket | sourcehut | azure
torii auth status
torii auth logoutStored in ~/.config/torii/auth.toml, mode 600. Environment variables override the file for a single process, which is what CI should use.
| Platform | Flow |
|---|---|
| GitHub, GitLab, Codeberg | OAuth device flow, with refresh tokens |
| Bitbucket | authorisation code with PKCE; a token containing : is treated as user:app_password |
| Gitea, Forgejo | a personal access token; the three Gitea-family names share one client |
| Sourcehut, Radicle, Azure DevOps | personal access token, or the platform's own tooling |
SSH and HTTPS
Transports are pure Rust: rustls for HTTPS, russh for SSH. The SSH authentication chain is agent, then ed25519, then RSA. Host keys are verified against known_hosts, with a trust-on-first-use prompt for an unknown host.
Two current limits: encrypted private keys need an agent, because there is no passphrase prompt yet, and ~/.ssh/config aliases are not parsed — use the real hostname.
The cloud key
torii auth login refers to an API key for gitorii.com. That service is not currently accepting keys: the account area was withdrawn while it is rebuilt, and nothing in the CLI needs one. Every command documented on this site works without it.