koh

Version control designed for the solo developer. You can learn it in five minutes. Every koh save is a complete snapshot of your project. Every file. Reversible with one command. Two lanes: dev to experiment freely, main to ship. Extraordinarily fast.

https://koh.asha.software

ZigShellCZonNixBuild

v1.16.1 · 95 saves · 17,586 lines · offered 1 hour ago · 10.2 MB · 1 open issues · builds

$ koh steal kepr.uk/koh
·
93 files ⇓ bundle
95 saves
146b7cupdate man.txt with koh saves and koh checkpoints entries; clean up koh.plugin.zsh: add saves/checkpoints, remove stale focus/changelog/sync, add missing install/remote/unoffer/dashboard, fix offer/apply flagsdev1 hour ago
c4ef3drestore koh saves and koh checkpoints commands: filtered views of koh log (non-checkpoints and checkpoints only)dev1 hour ago
51accbdocument offer flags in man.txt: split targeting (names/default/--all-private/--all-public) from scope (--all/--history ancestor walk, composes with a name), --retry, --local; matches the v1.16.1 behaviordev1 hour ago
ad087cfix koh offer --all: walk full ancestor chain and target the named remote (was: name ignored, fanned out to all remotes, HEAD only); --history kept as synonym, remote sets via --all-private/--all-public, public history now confirmed; +regression test; v1.16.1dev1 hour ago

Details

Koh

Version control for the solo developer.

Koh is a single binary. No staging area. No remotes. No merge conflicts between people. Just save, undo, and promote — built around how one developer actually works.


Two lanes. One rule.

dev is your scratch pad. main is the official record. Save freely on dev, promote what's good to main. That's the entire branching model.

koh save "add argon2id key derivation"
koh promote

Every save is a complete snapshot

Koh uses a content-addressed object store. Unchanged files between saves cost zero storage. Everything is Blake3-hashed and zlib-compressed. The manifest is the source of truth — the database is a rebuildable index.

If you lose the database: koh recover. It rebuilds from manifests. Nothing is lost.


Safety is the default

Every destructive command shows a preview and prompts for confirmation. The default answer is always N. Pressing enter without reading is always safe.

koh undo rolls back saves. koh discard restores the working tree. koh peek reads a historical snapshot into a temporary directory without touching HEAD. koh load --checkpoint returns you to the last known-good state before a risky session.


Built for agents

koh checkpoint "before opus refactor"
koh save --agent "claude-opus-4" --session "auth refactor" "extract token validation"
koh undo --session

Sessions group related saves. Checkpoints mark safe rollback points. --json output on every read command. Koh maintains LOG.md automatically — every save, checkpoint, tag, and promotion is recorded. Agents open it and immediately know the project's recent history.


The numbers

| | | |---|---| | Commands | 38 | | Source | ~9,300 lines of Zig | | Test suite | 218 cases across 12 suites | | Dependencies | none — single statically-linked binary | | Storage format | Blake3 + zlib · JSON manifests · SQLite index |


Install

curl -fsSL https://koh.asha.software/install.sh | sh

Self-update

koh update

Koh updates itself from Kepr. Checksums verified. Atomic install.


koh.asha.software · Asha Software · MIT