soko

Emil Celik·CelikE.soko

A fast CLI to manage multiple git repositories at once

winget install --id CelikE.soko --exact --source winget

Latest 0.21.0·June 12, 2026

Release Notes

0.21.0 Features

  • soko snapshot — save and restore exact repo positions: snapshot save records branch + HEAD SHA per repo, snapshot restore moves every repo back (rewinding moved branches, recreating deleted ones, refusing dirty trees), plus list / show / drop. The save game before a risky bulk operation; completes the trust layer started by soko undo.
  • Worktree entries now inherit their parent repo's tags at filter time, so --tag filters (status, sync, fetch, list, etc.) include worktrees of tagged repos. Retagging the parent instantly re-scopes its worktrees; tag remove on a worktree only removes own tags and errors on inherited ones.
  • soko ui gains its first mutating key: P fast-forward pulls the selected repo after a confirmation prompt, runs asynchronously, and records a journal entry so soko undo rewinds it to the pre-pull SHA. Satisfies feature 44's scope guard — mutations only once undo exists.
  • soko undo reverts the last destructive operation via a capped pre-image journal beside the config (journal.yaml). soko clean now records the branches it deletes, so soko undo recreates them at their exact SHAs; soko undo --list shows the journal. This is the trust layer that will unlock mutating keys in soko ui.
  • soko ui gains read-only power keys — a tag legend, group-by-tag view (G), live name search (/), a filter cycle (f: all/dirty/behind/ahead/conflicts), browser-page jumps (o/p/i/a for home/PRs/issues/actions), and a ? help overlay
  • Live full-screen TUI dashboard with soko ui — auto-refreshing local workspace state (branch, dirty, ahead/behind, last-commit age, health badge) with sort, dirty/tag filters, cd-on-enter, open-in-browser, and optional background --fetch
  • Add soko branch for cross-repo branch operations: current branch per repo, branch lookup (current/local/remote/missing), bulk switch with -b create-from-default, and stale unmerged branch detection
  • Add soko worktree to manage git worktrees across repos: worktree add creates and registers in one step (with -b to create the branch, --path, --tag), worktree list shows all worktrees with live branch and dirty status, and worktree rm removes the directory and registry entry together (refusing dirty trees without --force).
  • Add soko ctx — save and restore workspace contexts: ctx save records each repo's branch and stashes dirty trees under a per-context message, ctx switch checks the branches back out and pops the stashes (refusing repos that are dirty right now), plus ctx list/show/drop.
  • Add soko sync — fetch all repos, then fast-forward the ones that are provably safe (clean, upstream, not diverged); dirty, diverged, and fetch-only-behind repos are reported as needing attention. Supports positional repos, --tag, --fetch-only, --no-worktrees, and --json.
  • Add soko apply to copy a file into many repos at once, with a diff preview and dry-run-by-default safety
  • Add a stable error_code field to per-repo JSON failures in pull, fetch, exec, clean, and stash
  • Add a global --perf flag (and SOKO_PERF) reporting per-repo and aggregate timing for status, fetch, pull, and exec
  • soko grep now highlights the matched substring within each result line Chores
  • Document soko snapshot, soko apply, the soko ui dashboard keys, worktree tag inheritance, the global --perf flag, and JSON error_code in the README

Installer type: zip

ArchitectureScopeDownloadSHA256
x64Download43DFD9382A23081E2614749BE6E36BA5634E61720E372CBCCA2679F589E605DD

Details

Homepage
https://github.com/CelikE/soko
License
MIT
Publisher
Emil Celik
Support
https://github.com/CelikE/soko/issues

Older versions (6)

0.20.0
ArchitectureScopeDownloadSHA256
x64Download95A167B1C8F6D23F21F304AB66F9BE105C56BC7F7FFC5F50D288510911A01544
0.19.0
ArchitectureScopeDownloadSHA256
x64DownloadF6C0594E37947D87C7293AC57B0A2882EFCBF6B56D5C52E609591CC7DA16A0B1
0.18.1
ArchitectureScopeDownloadSHA256
x64Download80F2C36B2CD014266FAD250001CA0D9EF8D1044666D91AB27C1F611ED3104AE3
0.18.0
ArchitectureScopeDownloadSHA256
x64DownloadB27A157AC451D8DC05151E3830DCE6C6EDFF2FADA4B48DACDB14946B095B1B04
0.17.6
ArchitectureScopeDownloadSHA256
x64DownloadAA8D3C38A4FA7E4B770DB827CA17318D48148AA00DF438A8700276E21C539E07
0.15.0
ArchitectureScopeDownloadSHA256
x64DownloadEE42E1A175D5F8328A50D8BC9FB1A67D0F3E30E6AEA8578D294A31F59C4E0861