Records in Git
The knowledge base is plain Markdown and JSON records in a Git repository. Git is the only store, so a new machine needs git clone plus the binary.
Git-native project continuity for coding agents
Every new agent session starts without the project’s history. With Writfold, a fresh session on any machine can answer four questions, and each answer names the file and commit it came from.
Preview Preview released 12 November 2026: v0.3.0-dev.1, one static Linux x86_64 binary.
$ writfold kb why "batch writes"
decision proposal/decision/2026-11-02-batch-writes [accepted] Batch ledger writes @proposals/decision/2026-11-02-batch-writes.md:4
decided: by api-review on 2026-11-05 @proposals/decision/2026-11-02-batch-writes.md:9
why: one transaction per 500 rows keeps replay under a minute @proposals/decision/2026-11-02-batch-writes.md:18
cite: code:demo-api:src/ledger.rs:40-72 [moved] @proposals/decision/2026-11-02-batch-writes.md:25 !moved→44-76
# coverage=complete records=31/31 shown=1 omitted=0 stale=1 kb=2c8cf78a91d0 index=fresh cursor=none q=7a1e03c94b2d
The cite row pins code at a commit with a digest of the bytes read, and flags that those lines have since moved. The last line always says what was examined, what was omitted and how many sources are stale.
How it works
Agent memory features live with one tool, on one machine or account. Notes in Markdown travel, but nothing tells you when the code they describe has changed. Writfold does both. The agent keeps its own loop and model, and asks Writfold about the project.
The knowledge base is plain Markdown and JSON records in a Git repository. Git is the only store, so a new machine needs git clone plus the binary.
A local SQLite index is derived from those records, with typo-tolerant search. kb index verify checks it equals a fresh rebuild.
Each citation pins path@commit:lines with a digest. stale reports each one as fresh, moved, changed or gone.
One static binary; no server or database to run. Writes are plain files, left uncommitted for review.
Inside a run
A run is one task in one worktree. Its receipts stay in the run and resume shows them, so “where do we stand on Y?” includes what was checked.
A gate names a command and the paths it covers. Each receipt is pinned to those bytes; gate status says satisfied, stale, failed or unknown.
kb edit apply replays Splicery recipes in the run’s worktree: every file or none, recoverable after a crash, with an edit receipt.
kb deliver prepare keeps a PR comment or Slack summary as the exact payload, with its checks. Nothing is ever sent.
src/main.rs changed.$ writfold kb gate status
gate docs [satisfied] mechanical pass exit=0 at demo-api@f274f2c7afdc scope=51646af238dd paths=1 @runs/run-20261112T123649Z-ae82a6/gates/docs-20261112T123649Z-e88d93.json:1
gate unit [stale] mechanical pass exit=0 at demo-api@f274f2c7afdc scope=bb63cd7d5295 paths=1 @runs/run-20261112T123649Z-ae82a6/gates/unit-20261112T123649Z-35e464.json:1 !stale
why: changed in scope: src/main.rs
next: writfold kb gate run unit
# note: receipts of run run-20261112T123649Z-ae82a6 for demo-api; state is derived on every read, never stored
# coverage=complete records=33/33 shown=2 omitted=0 gates=2 satisfied=1 open=0 stale=1 failed=0 unknown=0 attested=0 waived=0 invalid=0 kb=d51f95a17bd3+dirty:5 index=fresh cursor=none q=f11e8655b791
writfold watch shows runs, gates and drafts, read-only. An optional publishing hook, off unless configured, is a guard, not enforcement.
Try it
Linux x86_64 or WSL2. The plugin adds a project brief at session start and keeps local checkpoint drafts.
base=https://github.com/writfold-dev/writfold/releases/download/v0.3.0-dev.1
curl -LO "$base/writfold-x86_64-linux-musl" -LO "$base/writfold-x86_64-linux-musl.sha256"
echo "$(cut -d' ' -f1 writfold-x86_64-linux-musl.sha256) writfold-x86_64-linux-musl" | sha256sum -c
install -m 755 writfold-x86_64-linux-musl ~/.local/bin/writfold
claude plugin marketplace add writfold-dev/writfold
claude plugin install writfold@writfold
Single user, cooperating agents, local clones only; nothing is fetched. Setup is in the README.
Built
brief why status find impact stale resume and morecheckpoint record status --set cite makegate edit deliver watchindex status | rebuild | verifyNext: a two-week pause to see whether the checks catch real problems, then MCP. Status and roadmap.
Earlier work runs from source as frozen demos.