ai-baton
Portable, auditable, file-first handoff protocol for AI assistants.
Lets you switch between AI tools — Claude Code, Codex CLI, Cursor, GitHub Copilot, or anything else that can read and write files — on the same long-running project, without re-explaining everything from scratch. Everything lives in plain text files in your project folder — no server, no vector database, no vendor lock-in.
When you'd use this
- You run out of usage on one tool and need to switch. Cursor's out of credits, so you jump over to Codex, WorkBuddy, or whatever's next to keep going — without this, that means re-explaining the whole project from scratch: what you decided, what you already ruled out, all of it.
- The conversation's gotten too long and you want a fresh one. To save tokens, or because quality drops once context gets huge — starting over shouldn't mean losing everything you already worked out.
- You're deliberately splitting the work across tools. Backend in Claude Code, frontend in Cursor; or one tool writing code and another writing the docs. Both sides need to know what the other one already decided — API shapes, naming — or they end up out of sync.
How it works
PROTOCOL.md— the rules this project followsmemory/— durable facts and decisions, one file each, taggedconfidence: verifiedorunverifiedstatus/CURRENT_STATUS.md— what's happening right now (overwritten each time, not appended)evidence/— raw detail worth keeping, append-onlyhandover//archive/— point-in-time snapshots / superseded plans — nothing gets deleted
Install the Agent Skills skill once
(ai-baton skill install) and a supporting AI tool follows this
automatically: reads the right files in the right order, asks before
writing, keeps state current — without being reminded every session.
Requires local filesystem access — works with tools that run on your
machine or have been granted access to a folder (Claude Code, Codex CLI,
Cursor, Windsurf, WorkBuddy, Claude Desktop with a filesystem connector,
etc.). Plain
web ChatGPT or web Claude.ai chat can't read PROTOCOL.md at all — no
file access, so Agent Skills support doesn't help there.
Status
Pre-alpha.
Working:
- The spec (
SPEC.md) and CLI —pip install ai-baton-tool(the PyPI distribution name; an unrelated existing package blocked plainai-baton, but the command itself is stillai-baton):init/validate/status/list/workspace set/skill install - A default workspace convention —
~/ai-baton-workspace/<project>/, root chosen once and remembered, projects discoverable across tools/sessions viaai-baton list - A full worked example (
examples/demo-project/) validateflags well-known credential formats (heuristic safety net, not a full secrets scanner) and warns whenmemory/is getting large enough to cost real tokens every session (threshold configurable per project via.ai-baton.json)- Clean error messages on bad paths instead of raw Python tracebacks
- 49 tests passing locally
Not built: semantic search (by design — see the trade-off below), and
any automated measurement of handoff effectiveness (methodology sketched
in docs/metrics.md, nothing wired up yet).
Not the first system aiming at cross-tool AI memory — Mem0, OpenMemory,
and Letta solve overlapping problems with a vector store and/or an agent
runtime. This makes the opposite trade-off: zero infrastructure and
git-native auditability, at the cost of semantic search and automatic
extraction. See docs/comparison.md.
Quick orientation
docs/quickstart.md— install and try it.SPEC.md— the protocol.docs/comparison.md— vs. Mem0 / OpenMemory / Letta / Letta Code.docs/metrics.md— how we'd measure handoff quality.examples/demo-project/— worked example..agents/skills/ai-baton/SKILL.md— install once, an AI tool follows the protocol without being reminded.
License
MIT — see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_baton_tool-0.0.21.tar.gz.
File metadata
- Download URL: ai_baton_tool-0.0.21.tar.gz
- Upload date:
- Size: 49.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bb0e64781c7633d09a8e4480705a5cba6ce2f3ac20d5e6815b7132efdf6f2d4
|
|
| MD5 |
f6cc58030b528569d1c2f92232abf070
|
|
| BLAKE2b-256 |
ab9f897b69b8e381232a832e8cb7821feabbb0312b06bf20550e802a4fd471ad
|
Provenance
The following attestation bundles were made for ai_baton_tool-0.0.21.tar.gz:
Publisher:
publish.yml on CilantroFanatic/ai-baton
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_baton_tool-0.0.21.tar.gz -
Subject digest:
4bb0e64781c7633d09a8e4480705a5cba6ce2f3ac20d5e6815b7132efdf6f2d4 - Sigstore transparency entry: 2441469686
- Sigstore integration time:
-
Permalink:
CilantroFanatic/ai-baton@6af47f2cad191a002f0e0fd6b989e072767b18ae -
Branch / Tag:
refs/tags/v0.0.21 - Owner: https://github.com/CilantroFanatic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6af47f2cad191a002f0e0fd6b989e072767b18ae -
Trigger Event:
release
-
Statement type:
File details
Details for the file ai_baton_tool-0.0.21-py3-none-any.whl.
File metadata
- Download URL: ai_baton_tool-0.0.21-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84d16016590673e3c9a89aaac1696505f9171d59946db279646ac7a43d3adc14
|
|
| MD5 |
4d7dee26f9747be2a8e807ffb1fc3b54
|
|
| BLAKE2b-256 |
fade3f9ea67f2da48c6579f1bb8392f7ec136096efd8a8e77c47cb1f20b83e6f
|
Provenance
The following attestation bundles were made for ai_baton_tool-0.0.21-py3-none-any.whl:
Publisher:
publish.yml on CilantroFanatic/ai-baton
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_baton_tool-0.0.21-py3-none-any.whl -
Subject digest:
84d16016590673e3c9a89aaac1696505f9171d59946db279646ac7a43d3adc14 - Sigstore transparency entry: 2441469968
- Sigstore integration time:
-
Permalink:
CilantroFanatic/ai-baton@6af47f2cad191a002f0e0fd6b989e072767b18ae -
Branch / Tag:
refs/tags/v0.0.21 - Owner: https://github.com/CilantroFanatic
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6af47f2cad191a002f0e0fd6b989e072767b18ae -
Trigger Event:
release
-
Statement type: