hav
Project

Changelog

v0.1.0, 2026-08-04 (first public beta)

The first public release. A standalone version control system built from scratch for the agentic coding era, with no git anywhere in or under it.

Core model

  • Snaps (parentless content-addressed trees), knots (stable work identity, hash-chained versions), buoys (named pointers over tied history only), workspaces (any number per buoy, one per knot ever).
  • Scan-on-command capture: the working copy is the knot; no staging area.
  • tie as the one merge verb: linear everyday lands, merge knots only for genuinely diverged histories. sync explicit, never automatic.
  • Conflicts as data inside snaps; merges never block, no --continue.
  • Auto-rebase cascade on history rewrites (edit, squash), workspace-held knots exempt; absorb routes edits to the knots that own the lines; additive split by file or hunk.
  • Op journal with full before and after views: every mutation is one undoable op, failed mutations roll back atomically, and the journal keeps the last 50 ops by default (hav op limit).
  • hav sweep: an explicit reachability sweep that frees what nothing retained can reach.
  • Format gate: opening a repo checks its recorded schema version first. Repos written by a newer hav are refused with upgrade hav, older repos migrate forward in place, and reading never rewrites the format marker.
  • First-capture gate: hav ships no ignore opinions and writes no config for you. The first capture counts the tree before storing anything and asks before ingesting what looks like an unignored dependency tree, and hav preview shows the per-directory breakdown without reading or storing anything.

Sharing

  • Remotes as paths (init --bare hubs) or harbor URLs. hav harbor serve is a dumb HTTP transport: anonymous reads, one bearer token for pushes, all crypto client-side.
  • Push and pull fast-forward only; untied WIP, workspaces, and the op journal never leave the machine.
  • Sealed crews: whole lines of work encrypted client-side inside a shared repo. Ciphertext travels to everyone, only members can open it, and going public is always a member's explicit tie --reveal.
  • Per-crew variant sets: a tree entry holds at most one public variant plus any number of sealed per-crew variants, so ten crews can each keep their own .env at one path and no crew owns a path. hav crew use routes edits to the active crew, hav seal and hav unseal move a file across the boundary, and the publish gate asks before a capture would make a sealed-only path public. Every variant merges independently, so cross-crew edits never conflict.
  • Crew config travels with relevance: pulling a fork to merge a public PR does not import the crews its owner made for themselves.
  • hav key rotate: swap a machine's key with a two-key overlap, so there is no lockout window.
  • Two-regime storage (hav pack): large files content-defined chunked and deduped, history solid-compressed, object identity unchanged.

Platforms

  • Developed and tested on macOS; Linux shares the code paths. Windows builds and is platform-gated where it matters (exec bits, identity path), and is not yet exercised on real Windows. See Status and limits.

On this page