Two timelines, one file
An agent in production rewrites its own skill and spawns a sub-agent to help. Meanwhile your team edits that same skill in git. Both changes are correct. Neither knows about the other. Today one of them is thrown away, usually the agent's, because there is nowhere to put it.
agentvcs gives it somewhere. A commit is not a tree of files — it is code plus the goal, the model pins, the session trace, and the sub-agent swarm, versioned together. Which means the runtime line and the design-time line are both branches, and the question becomes a merge.
The reconcile contract
Merging two prose goals or two session traces is not a job for a line-differ. So agentvcs
does not try. It writes a bundle to a subprocess's stdin —
{base, ours, theirs} goals, traces, code diffs, eval and cost metrics, plus any
unresolved conflict text — and reads back
{goal, trace, notes, resolved_files}.
agentvcs merge runtime/main --reconcile "nanoloop reconcile"
That is the whole interface. The core has no LLM dependency and no opinion about what is on the other end. Conflicting hunks are pre-resolved toward whichever side has the higher verified eval score before the reconciler is consulted at all.
Crystallizing
freeze turns a proven run into a deterministic recipe you can replay. It
refuses unless the declared eval passes on every run, and --force past a failure
stamps verified: false rather than quietly lying. "Crystallized" means "proven",
enforced in code rather than in the README.
What's proven
190 tests pass in 2.9 seconds. CI runs the matrix across Python 3.10–3.13 plus an end-to-end smoke test that executes the demo and asserts a scorecard ≥5/6. Packaged on PyPI with zero runtime dependencies.
git clone https://github.com/EvolvingAgentsLabs/agentvcs
cd agentvcs && pip install -e .
bash examples/eve-evolve-merge/demo.sh # offline, no API key, seconds
That demo forks a RefundBot into a runtime line and a design-time line and merges them, producing a marker-free skill containing both rule sets and a swarm containing both sub-agents.
What to know before you trust it. The demo's reconciler is a deterministic bullet-union stub, honest in its docstring but not intelligent — the LLM reconciler is a separate piece. And test coverage is lopsided: the optional cryptographic layer has 20 tests while the core object store has 5.