Status: beta. Format and CLI may change between minor versions. The integrity guarantees below are implemented and tested; there has been no external security audit.
Undo as infrastructure. respawn versions the state of a directory tree as a content-addressed snapshot graph — every file's content lives in the store, so any snapshot can be materialized back exactly. Reverting is a HEAD pointer swap plus atomic per-file writes. Drift is a manifest diff. Machines replicate snapshots over the LAN with no server.
Built for the agent era: snapshot the world before an autonomous process touches it, revert when it goes wrong, and prove afterward what changed.
respawn init # create .respawn/ in the worktree
respawn snap -m "v1" # content-addressed snapshot
respawn status # drift vs HEAD (added/modified/deleted)
respawn status --full # rehash every file — don't trust metadata
respawn diff v1 head # compare two snapshots
respawn revert <id> # materialize a snapshot (atomic per file)
respawn log # snapshot history
respawn verify # audit chain + object integrity
respawn serve --announce# serve objects to LAN peers (loopback default)
respawn peers # discover announcing peers
respawn pull host:4789 # replicate a peer's history locally
audit.jsonl. verify detects edited, deleted, or reordered entries... components are rejected, symlinked ancestors block the write, and
modes are masked to 0o777 so setuid bits never propagate..respawn/ can replace the whole log; the chain
only proves the log you have is internally consistent. External anchors
(signed checkpoints) are future work — see sovereign_ledger for the
model.serve binds to 127.0.0.1 by default and warns
on any other address; only bind wider on a network you trust.
Encrypted, authenticated transport is planned.status skips hashing files
whose size and mtime match the manifest — an attacker able to write
your files can also restore mtime. Use status --full to rehash
everything when it matters. The revert safety gate always does.snap/pull/revert against the same
worktree is last-writer-wins (the audit chain can fork). A lockfile is
planned; for now, one process per fabric.snap is captured as whatever was read. Snapshot
quiesced trees, or accept per-file (not whole-tree) atomicity.watch auto-snapshotting yet. watch reports drift events;
policy-driven auto-snapshots (before-agent snapshots) are the next step.worktree/
.respawn/
objects/<2hex>/<62hex> zstd-compressed chunks, BLAKE3-addressed
manifests/<2hex>/<62hex> JSON manifests; id = BLAKE3 of bytes
HEAD hex id of current snapshot
audit.jsonl hash-chained event log
remotes/<peer> last-pulled remote heads
brew tap savageAZfck/tap
brew install respawn # 0.1.0-beta, universal macOS binary
Absorbs the concepts of the retired stubs git_fabric, blade_subsystem,
wire_gate, air_bridge, sovereign_edge(-rzr_cut), and kingsman:
the snapshot graph, the append-only store, the transport gate, atomic
state/rollback, and drift-watch — unified into one product instead of
seven sketches.
Functional Source License 1.1 (FSL-1.1-ALv2) — (c) 2026 Adam Clark. Source is open to read, use, and build on for any non-competing purpose; converts to Apache-2.0 automatically two years after release. Contact savagetism@icloud.com for licensing or partnership.
6 commits
Rust
100.0%
Status: beta. Format and CLI may change between minor versions. The integrity guarantees below are implemented and tested; there has been no external security audit.
Undo as infrastructure. respawn versions the state of a directory tree as a content-addressed snapshot graph — every file's content lives in the store, so any snapshot can be materialized back exactly. Reverting is a HEAD pointer swap plus atomic per-file writes. Drift is a manifest diff. Machines replicate snapshots over the LAN with no server.
Built for the agent era: snapshot the world before an autonomous process touches it, revert when it goes wrong, and prove afterward what changed.
respawn init # create .respawn/ in the worktree
respawn snap -m "v1" # content-addressed snapshot
respawn status # drift vs HEAD (added/modified/deleted)
respawn status --full # rehash every file — don't trust metadata
respawn diff v1 head # compare two snapshots
respawn revert <id> # materialize a snapshot (atomic per file)
respawn log # snapshot history
respawn verify # audit chain + object integrity
respawn serve --announce# serve objects to LAN peers (loopback default)
respawn peers # discover announcing peers
respawn pull host:4789 # replicate a peer's history locally
audit.jsonl. verify detects edited, deleted, or reordered entries... components are rejected, symlinked ancestors block the write, and
modes are masked to 0o777 so setuid bits never propagate..respawn/ can replace the whole log; the chain
only proves the log you have is internally consistent. External anchors
(signed checkpoints) are future work — see sovereign_ledger for the
model.serve binds to 127.0.0.1 by default and warns
on any other address; only bind wider on a network you trust.
Encrypted, authenticated transport is planned.status skips hashing files
whose size and mtime match the manifest — an attacker able to write
your files can also restore mtime. Use status --full to rehash
everything when it matters. The revert safety gate always does.snap/pull/revert against the same
worktree is last-writer-wins (the audit chain can fork). A lockfile is
planned; for now, one process per fabric.snap is captured as whatever was read. Snapshot
quiesced trees, or accept per-file (not whole-tree) atomicity.watch auto-snapshotting yet. watch reports drift events;
policy-driven auto-snapshots (before-agent snapshots) are the next step.worktree/
.respawn/
objects/<2hex>/<62hex> zstd-compressed chunks, BLAKE3-addressed
manifests/<2hex>/<62hex> JSON manifests; id = BLAKE3 of bytes
HEAD hex id of current snapshot
audit.jsonl hash-chained event log
remotes/<peer> last-pulled remote heads
brew tap savageAZfck/tap
brew install respawn # 0.1.0-beta, universal macOS binary
Absorbs the concepts of the retired stubs git_fabric, blade_subsystem,
wire_gate, air_bridge, sovereign_edge(-rzr_cut), and kingsman:
the snapshot graph, the append-only store, the transport gate, atomic
state/rollback, and drift-watch — unified into one product instead of
seven sketches.
Functional Source License 1.1 (FSL-1.1-ALv2) — (c) 2026 Adam Clark. Source is open to read, use, and build on for any non-competing purpose; converts to Apache-2.0 automatically two years after release. Contact savagetism@icloud.com for licensing or partnership.
6 commits
Rust
100.0%