Skip to main content

fork() for AI agents — snapshot, branch, and merge live agent state.

Project description

ProcessFork

git for AI agents. Snapshot, fork, and merge live LLM sessions in 8 ms.

snapshot a 4-hour Claude Code session in 8 ms, fork into 12 attempts, merge the winner back, push to a registry

crates.io PyPI npm release MIT

CI 200 tests 8 ms snapshot Rust + Py + TS


Why

You're 4 hours into a refactor with Claude Code. The agent has read 200 files, run 47 tests, opened a database, started a dev server. Then it suggests a destructive change.

Today: lose everything, undo by hand, or restart. With ProcessFork: pf snapshot → 8 ms → safe. Try 12 alternatives in parallel, merge the winner back, ship the whole session to a teammate.

It's git — snapshot, branch, merge, push, clone — but for live AI agent state.

Highlights

  • 8 ms snapshots. Full agent state — model + KV-cache + files + tools + reasoning — into one content-addressed .pfimg.
  • 🌳 Real fork & merge. 12 parallel attempts share storage automatically (CoW). Merge the winner with a real 3-way diff (files, tools, trace) — git-style <<<<<<< markers and all.
  • 🔒 Won't double-send your email. HMAC-chained tool-call ledger; restored agents see prior side-effects as facts, not as actions to re-issue. (ACRFence-resistant.)
  • 🤝 Drop-in for Claude Code, LangGraph, OpenInterpreter, vLLM, SGLang, AutoGen, CrewAI.
  • 📦 Single binary, MIT, Rust core, Python + TypeScript SDKs. 200+ tests.

Quick start (60 seconds)

# install the CLI:
cargo install processfork                      # → `pf` on your $PATH

# snapshot a directory:
mkdir /tmp/sandbox && echo "fn main() {}" > /tmp/sandbox/main.rs
pf snapshot --agent-id demo --fs-root /tmp/sandbox
# → sha256:1c2497b0…   ⏱ 8 ms

# edit something, snapshot again, see the diff:
echo "fn main() { println!(\"hi\") }" > /tmp/sandbox/main.rs
pf snapshot --agent-id demo --fs-root /tmp/sandbox --name v2
pf log
pf diff <first-cid> <second-cid>

Prefer Python? pip install processfork. TypeScript? npm install @processfork/sdk.

The full 60-second demo (snapshot → fork ×12 → merge → push → clone on a fresh store) is bash demo/script.sh. Runs end-to-end on a laptop. No GPU, no API keys.

When you'd reach for it

Situation Command
Agent about to do something destructive pf snapshot pre-rm-rf
Stuck — want to try 12 approaches in parallel pf fork -n 12 --explore "fix bug"
Hand a complex session to a teammate pf push hf://you/session-name
Time-travel debug ("when did it go wrong?") pf log then pf checkout <CID>
RL rollout fabric for agent training snapshot, fan out, score, merge

Use it with your stack

Adapter Status What it gives you
Claude Code ✅ ships now /snapshot, /fork, /merge slash-commands inside any session
LangGraph ✅ ships now drop-in BaseCheckpointSaver (full 4-layer, not just state dict)
OpenInterpreter ✅ ships now interpreter.snapshot("pre-rm-rf") then .checkout("pre-rm-rf")
AutoGen ✅ ships now atomic snapshot across a whole agent group's state
CrewAI ✅ ships now CrewMemory drop-in; every step time-travelable
vLLM ⏳ v1.0.1 bit-exact KV-cache snapshot/restore (Llama-class)
SGLang ⏳ v1.0.1 preserves RadixAttention prefix-sharing across restores

How it works

ProcessFork captures the five things that together make up a live agent — atomically — into one content-addressed file:

Layer What it captures
Model LoRA / IA³ / full-finetune weight diffs, in-place TTT updates
Cache Paged KV-cache, content-addressed per page (CoW across forks)
World Filesystem, env, in-flight subprocesses, browser DOM
Effects Append-only ledger of irreversible tool calls (HMAC-chained)
Trace Chat + tool-call message log

Identical content shares storage automatically — 12 parallel forks use ~1.5× the space of one, not 12×. The merge engine handles each layer with the right algorithm: git-style 3-way diff for files, TIES + DARE for model weights, an HMAC chain that defends against semantic-rollback attacks (ACRFence), and an LLM-summarized "what branch B learned" patch injected into branch A's reasoning trace without re-prefilling the cache.

Architecture deep-dive · Three-way merge protocol · Engineering specs

Status

v1.0.0 tagged. Numbers from cargo bench:

metric observed target
Snapshot (synthetic 4-layer fixture) 8 ms < 500 ms
Cache capture, 64 pages 531 µs
12-fork ÷ 1-fork storage ratio well < 1.5× ≤ 1.5×
Total tests passing 200

Live KV-cache replay against a real Llama-3-8B vLLM server is the v1.0.1 deliverable — wire format and adapter API ship today, the live FFI lands next.

Install

cargo install processfork                          # Rust CLI (the `pf` binary)
pip   install processfork                          # Python SDK
npm   install @processfork/sdk                     # TypeScript SDK

Per-adapter packages (one each on PyPI):

pip install processfork-claude-code
pip install processfork-langgraph
pip install processfork-openinterpreter
pip install "processfork-vllm[vllm]"               # needs CUDA + vllm ≥ 0.10
pip install "processfork-sglang[sglang]"           # needs CUDA + sglang ≥ 0.5
pip install "processfork-autogen[autogen]"
pip install "processfork-crewai[crewai]"

Build from source if you want to hack on it:

git clone https://github.com/manav8498/processfork && cd processfork
cargo build --release -p processfork               # → target/release/pf

Full build-from-source instructions in docs/install.md. Pre-built wheels cover macOS arm64, Linux x86_64, and Linux aarch64; macOS Intel + Windows wheels arrive in v1.0.1 (operator: same package, just more platforms).

Repo layout

crates/      Rust workspace (10 crates: pf-core, pf-cache, pf-world, pf-effects,
             pf-model, pf-merge, pf-registry, processfork (CLI, the `pf` binary), pf-py, pf-ts)
adapters/    7 first-party integration packages
benchmarks/  PFBench harness + Criterion microbench
docs/        mdBook source (25+ pages)
examples/    8 self-contained runnable examples
demo/        60-second demo recording script

Docs

Your first fork (5 min) · 60-second demo · Architecture · Merge protocol · Security model · Performance tuning · Engineering specs

Contributing

PRs welcome. The bar is cargo fmt, cargo clippy --all-targets -- -D warnings, cargo test --workspace, plus a green coverage delta. See CONTRIBUTING.md.

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

processfork-1.0.1-cp39-abi3-win_amd64.whl (749.9 kB view details)

Uploaded CPython 3.9+Windows x86-64

processfork-1.0.1-cp39-abi3-manylinux_2_28_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ x86-64

processfork-1.0.1-cp39-abi3-manylinux_2_28_aarch64.whl (957.4 kB view details)

Uploaded CPython 3.9+manylinux: glibc 2.28+ ARM64

processfork-1.0.1-cp39-abi3-macosx_11_0_arm64.whl (814.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

processfork-1.0.1-cp39-abi3-macosx_10_12_x86_64.whl (942.5 kB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file processfork-1.0.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: processfork-1.0.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 749.9 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for processfork-1.0.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b5245c9cb69ff84ce69abce4048effe3e970cc103f582490160caf4a990f6fda
MD5 5f7feb87a8ff89bef54f96b8304e1cc5
BLAKE2b-256 67808f285fd751d1cef2d675ca7df1f99070b693745a6fbd027edc674db3111a

See more details on using hashes here.

Provenance

The following attestation bundles were made for processfork-1.0.1-cp39-abi3-win_amd64.whl:

Publisher: release.yml on manav8498/processfork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file processfork-1.0.1-cp39-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for processfork-1.0.1-cp39-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 21068d12e8f88a29350da1a8a9a16a10d7185b00ed7a6ae263a176cd5cfee7cb
MD5 5edff9f6525e70c6aacdaea2580a6e26
BLAKE2b-256 3607829034aa8377f4cb79f6368ce05a3f023c2577e0b31ac949539335e7b1d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for processfork-1.0.1-cp39-abi3-manylinux_2_28_x86_64.whl:

Publisher: release.yml on manav8498/processfork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file processfork-1.0.1-cp39-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for processfork-1.0.1-cp39-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 dc1e1bfa522093b4effc756abde7fa957fd400918811866eee965c7a6245c060
MD5 ac0801ffb9400aae23080d19e97edd39
BLAKE2b-256 3cca6bb6ff33e493880486d7c362af6cf3a36db2ff00ac171b7e35062f2d4dd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for processfork-1.0.1-cp39-abi3-manylinux_2_28_aarch64.whl:

Publisher: release.yml on manav8498/processfork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file processfork-1.0.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for processfork-1.0.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f2f0936a332abe32d665ba68776f278905183449894dfe542d56e0a26ce1f24e
MD5 708ceea1fc0d8a6225f9abea7bfc6c69
BLAKE2b-256 a6873e9458660cac71416a72940c6c4e05f7786fe18d05c56c114febc31d2481

See more details on using hashes here.

Provenance

The following attestation bundles were made for processfork-1.0.1-cp39-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on manav8498/processfork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file processfork-1.0.1-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for processfork-1.0.1-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c131870b12b74fda1257e28e2c50995338174e487dc6284933b2d58388d84cdb
MD5 0a8d3e311ddadc9cec39e3a91d69b839
BLAKE2b-256 d502b3120f5e0141248cab2feb7f62265aaeb9e6be828652f0e006a72e1f23a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for processfork-1.0.1-cp39-abi3-macosx_10_12_x86_64.whl:

Publisher: release.yml on manav8498/processfork

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page