Version control, built from scratch for the agentic coding era.
hav has its own core model and no git compatibility, designed for how code gets written now: by people and agents in parallel, on work that sometimes needs to stay private until it ships.
$ hav init
repo (./.hav/repo.db) · buoy main · knot kn-f5e965d6
$ hav st
first capture: 2 files (19 B)
knot kn-f5e965d6 — «no description»
on main@sn-94d54206 · sn-dae2a958
A greet.txt +1 -0 [greet.txt@1]
A src/main.rs +1 -0 [src/main.rs@1]
undo: op-2
$ hav describe -m "greet the harbor"
kn-f5e965d6 described · op-3
$ hav tie
main -> kn-f5e965d6 (sn-dae2a958) · op-4
$ hav undo
undid op-4 (tie: main -> kn-f5e965d6) · main restored · redo available
Fig. 1. A first session, init to undo. No add, no commit, no stash: every command captures the working tree, and every mutation is one journaled, reversible op.
Why it exists
1. No staging, no commit dance. The working copy is the unit of work (a knot), and every command captures it automatically. describe and tie replace the add/commit sequence.
2. Merges never block. Conflicts are stored as data inside snapshots. They materialize as markers in your tree, on your schedule, and there is no --continue anywhere.
3. Files never move under you. Syncing is explicit. hav tells you when your buoy advanced and then waits, so it never rebases a tree that a build or an agent might be running against.
4. Everything is undoable. Every mutation is one journaled op, and hav undo restores both the state and the files on disk.
5. Private work inside shared repos. Sealed crews encrypt whole lines of work client-side, and going public is always a member's explicit tie --reveal. The key is the gate: ciphertext travels to everyone, only members can open it, and no server decides.
6. A harbor rather than a platform. Sharing runs over dumb hubs: a directory, or a thin HTTP server with anonymous reads and one token for pushes. All crypto stays client-side.
Learn the ropes
- snap
- An immutable, content-addressed snapshot of the whole tree.
- knot
- The stable identity of a unit of work, carried through its versions.
- buoy
- A named pointer to a knot, like a branch without the checkout state.
- workspace
- A directory bound to a knot. Any number per buoy, one per knot ever.
- harbor
- A shared hub over plain HTTP. Anonymous reads, one token for pushes.
- crew
- A set of people holding a shared key. Sealed work travels as ciphertext.
- op
- A journal event with before and after views. Powers undo and redo.
Caution
v0.1.0, first public beta. The core model, sealed crews, per-crew variant sets, the harbor, and two-regime storage are implemented, tested, and exercised end-to-end. The crypto is unaudited, and betas move fast. Read Status and limits before trusting it with anything you can't afford to lose.
Found a bug? Email sdvgab@gmail.com with the command, its error, and hav op log -n 20. The op journal makes hav bugs reproducible.