Platforms and mirrors
torii speaks to nine hosts through seven clients. The platform is detected from the remote's URL, and the right client is used without you naming it.
The hosts
| Client | Hosts | Notes |
|---|---|---|
github | GitHub | configurable API base, for Enterprise |
gitlab | GitLab | including self-hosted |
gitea | Gitea, Codeberg, Forgejo | one client, identical API |
bitbucket | Bitbucket Cloud | token containing : is treated as user:app_password |
sourcehut | Sourcehut | issues and builds; PRs are the email-patch workflow |
radicle | Radicle | wraps the rad binary; issues and patches |
azure | Azure DevOps | three-level org/project/repo paths |
Not every host exposes every concept. Bitbucket Cloud has no release object and no package registry; Radicle has no CI. Those subcommands return an explicit "not native on this platform" error rather than pretending to work.
Mirrors
One working tree, several remotes, one command:
torii mirror add gitlab user <username> <repo> --primary
torii mirror add github user <username> <repo>
torii mirror add codeberg user <username> <repo>
torii mirror sync
torii mirror list
torii mirror promote gitlab user
torii mirror autofetch --enable --interval 30mThe primary is where CI runs and where you read issues; the replicas are copies. Each carries its own token, and a replica that rejects a push does not roll back the ones that succeeded.
Creating repositories
torii remote create github <repo> --private --description "…"
torii remote create github,gitlab,codeberg <name> --public --push
torii remote visibility github <owner> <repo> --public
torii remote configure github <owner> <repo> --default-branch main
torii remote info github <owner> <repo>Comma-separated platforms create the repository on each in one invocation. visibility currently covers GitHub and GitLab.
Choosing which remote a command talks to
For a mirrored repository, each backend has its own pipelines, packages and releases. --remote picks one:
torii pipeline list --remote github-paskidev
torii release edit v0.13.0 --notes new.md --remote github-paskidevThe flag is global within the command, so torii pipeline --remote NAME list and torii pipeline list --remote NAME are the same thing. Without it, the platform is detected from origin.
Self-hosted
~/.config/torii/platforms.toml declares your own hosts — self-hosted GitLab, Gitea, Forgejo, GitHub Enterprise, Bitbucket Data Center — so URL detection routes them to the right client instead of failing to recognise the domain.