Una puerta, nueve plataformas.

savesyncsnapshotmirrorprrunnertui+37 more

Un torii es una puerta. Esta se levanta entre tú y todos los sitios donde vive tu código: GitHub, GitLab, Gitea, Codeberg, Forgejo, Bitbucket, Sourcehut, Radicle y Azure DevOps. Se cruza con un comando, no con siete herramientas.

 cargo install gitorii --locked   # 0.13.0

El nombre dice el trabajo, no la fontanería

Cada línea de la derecha hace lo que hace la de la izquierda, contra el mismo repositorio y los mismos objetos. Lo que cambia es que el nombre dice lo que querías.

files 14 pairs
git add . && git commit -m "msg" torii save -am "msg"
git pull && git push torii sync
git switch -c branch torii branch <name> -c
git fetch torii sync --fetch
git reset --soft HEAD~1 torii save --reset HEAD~1 --reset-mode soft
git rebase -i HEAD~3 torii history rebase HEAD~3 -i
git stash push -u torii snapshot stash -u
git log --oneline --author X torii log --oneline --author X
git show HEAD torii show
git blame src/main.rs torii show src/main.rs --blame
Push to three platforms torii mirror sync
Hunt for exposed secrets torii scan --history
Run status across five repos torii workspace status <name>
Commit every dirty repo at once torii workspace save <name> -am "wip"
↑↓ movetab switch columnenter copy same objects underneath

Cuarenta y cuatro comandos, y ninguno es una segunda herramienta

El trabajo de plataforma, el plano de control de CI, las operaciones sobre varios repositorios y la red de seguridad viven en el mismo binario que el commit y el push. Ese es el argumento: no menos comandos que git, sino todo lo que un repositorio necesita bajo un solo nombre. Elige un grupo a la izquierda.

commands 44 commands
torii init initialise a repository
torii clone clone by URL or by platform shorthand
torii save stage and commit; amend, revert and reset live here as flags
torii sync pull and push; integrate a branch, choosing merge or rebase
torii status what changed, staged and unstaged
torii diff unstaged, staged, or the last commit
torii log history, with graph, author, date and message filters
torii show a commit, a tag, or a file line by line with --blame
↑↓ moveenter open/ filter 158 subcommands under them

Reescribe la historia sin contener la respiración

Toda la superficie de filter-repo, como subcomandos de primera clase. Cada uno toma un snapshot de seguridad antes de tocar un commit, preserva por defecto las fechas de autor y de committer, y se niega a arrancar con el árbol sucio.

log torii history

torii history reword <hash> -m "msg"

snapshot taken · dates preserved · restore with torii snapshot restore

↑↓ moveenter previewu undo

Te para antes del error, no después

El escáner de secretos corre antes de cada save, no como un hook que te tienes que acordar de instalar en cada máquina.

scan 1 finding

torii save -am "wip"

⚠  Secret detected in src/config.rs:12
   GITHUB_TOKEN = "ghp_xxxxxxxxxxxxxxxxxxxx"

commit aborted (1 finding)
escáner de secretos Claves de AWS, GitHub, GitLab, Stripe, SendGrid y Twilio, bloques PEM, JWT y cadenas de conexión que llevan contraseña. Barre toda la historia con --history.
snapshots Guardados locales que no son commits, tomados antes de cada operación arriesgada y restaurables por id.
history orphans Recorre los objetos inalcanzables, así que el trabajo que el reflog ya caducó sigue siendo recuperable.
.toriignore.local Reglas privadas de tu máquina, gitignoradas automáticamente, para patrones cuya existencia ayudaría a un atacante.
y commit anywayN aborte edit

Siete clientes, nueve hosts, un comando

Pull requests, incidencias, pipelines, jobs, paquetes y releases, contra la plataforma en la que viva el repositorio. Replica en varias a la vez y cada una conserva sus propias credenciales.

remote 9 hosts

torii mirror sync

→ github   paskidev/gitorii   pushed 3 commits

serves GitHub

↑↓ mover switch remotes sync
working tree one .git, one history torii mirror sync gitlab primary · CI runs here github replica · own token codeberg replica · own token one push · one set of refs · a replica that rejects does not roll back the others

La misma herramienta, con pantalla

Diecisiete vistas sobre las mismas operaciones, compartiendo una única configuración con el CLI. Sin aplicación aparte y sin demonio.

tui ? help
↑ ↓ / j k move through the sidebar
tab / enter enter the selected view
esc back to the sidebar
e toggle the event log
? help
q / ctrl+c quit
  • files
  • save
  • sync
  • snapshot
  • log
  • branch
  • tags
  • worktrees
  • submodules
  • remote
  • workspace
  • pr/mr
  • issues
  • bisect
  • auth
  • platform
  • config
q quite event logtab enter view

Las cifras, medidas

Comandos y subcomandos contados en la propia tabla de despacho del CLI; tests contados en la suite; versión y descargas leídas de crates.io mientras se renderiza esta página.

status v0.13.0
44
comandos de primer nivel
158
subcomandos
328
tests en la suite
0
dependencias en tiempo de ejecución
0.13.0
en crates.io
1.351
descargas
ctrl+r reload counted 08-08-2026

Cuatro maneras de entrar

Los binarios ya construidos no necesitan compilador. Compilar desde fuente necesita un compilador de C y nada más — sin perl, sin openssl-dev, sin libssh2-dev, sin pkg-config.

install v0.13.0

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.

enter copyesc back no runtime dependencies

Si cargo install muere con un SIGSEGV de rustc, la cadena de cripto ha desbordado la pila de 8 MB de rustc. Se arregla con RUST_MIN_STACK=67108864 cargo install gitorii --locked -j 1; el -j 1 es lo que siempre funciona.