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.
Morning. Where did things end up?
→ koh status
at [c3d5d781fb3e] before completing C-41 version 0.4.0 · now · 36 saves ~ .agent/CONTINUITY.md ~ c41 ~ v.mod 0 added · 3 modified · 0 removed
A good stopping point.
→ koh save 'complete C-41 gap campaign metadata and version 0.4.0' --agent gpt-6 --session 'c41 release metadata'
✦ saved [d924895651d2] complete C-41 gap campaign metadata and version 0.4.0 2026-10-03 19:06 · 168 files · 4.5 MiB agent: gpt-6 · session: c41 release metadata
Before the risky part, mark the spot.
→ koh checkpoint 'before completing C-41 version 0.4.0' --agent gpt-6 --session 'c41 release metadata'
✦ saved [c3d5d781fb3e] before completing C-41 version 0.4.0 checkpoint · 2026-10-03 19:06 · 168 files · 4.5 MiB agent: gpt-6 · session: c41 release metadata
Something is off. What changed?
→ koh diff
--- a/v.mod
+++ b/v.mod
@@ -1,6 +1,6 @@
Module {
name: 'c41'
description: 'Native film scanning and editing studio'
-\tversion: '0.3.0'
+ version: '0.4.0'
license: 'MIT'
}
1 file changed · +1 -1 Step back. Or throw it all away.
→ koh undo
✦ undo: [c3d5d781fb3e] before completing C-41 version 0.4.0 ~ .agent/CONTINUITY.md ~ c41 ~ v.mod 3 files change · 0 files removed continue? [y/N] y ✦ restored [91618872a51b] undo: c3d5d781fb3e
Any save is one command away.
→ koh load d9248956
✦ load: [d924895651d2] complete C-41 gap campaign metadata and version 0.4.0 ~ .agent/CONTINUITY.md ~ c41 ~ v.mod 3 files change · 0 files removed continue? [y/N] y ✦ restored [fa04c86a7eb6] load: d924895651d2
Close the day. Tomorrow, steal it back.
→ koh offer
✦ offered 2071 saves · 9352 objects · 1 event to "peach-browser" remote head is now [b6c6f5f5f2fd]