Arcaeon: one package for your AI
A record of what an agent did that shows any edit, removal or reorder inside it, plus a witness pin that shows if it is cut short, and a way for anyone to check it. One package, one command: arcaeon <verb>. The package is free.
It needs Python 3.10 or newer. The base install has zero dependencies: pip pulls in arcaeon and nothing else, and nothing touches the network when it is imported.
Which one are you?
Pick the line that fits you. Each path is a few short steps, and each step tells you what you should see when it worked.
Already use a terminal? Skip to install.
- I use an AI coding agent or assistant
- I write Python
- I write JavaScript
- I just want to check a record someone sent me
Four words you will meet
- Terminal
- A window where you type a command, press Enter, and the computer types its answer back. On Windows, press the Windows key, type PowerShell and press Enter. On a Mac, press Command and Space together, type Terminal and press Return.
pip- The installer that comes with Python: you give it a package name and it downloads and sets up that package for you.
npm- The installer that comes with Node.js for JavaScript packages. Arcaeon installs with
pip, notnpm. - MCP server
- A small program that hands your AI app a set of extra tools. Arcaeon's MCP server starts with
arcaeon mcp.
I use an AI coding agent or assistant
- Open a terminal as described above, and you should see a window with a blinking cursor.
- Check that you have Python 3.10 or newer. On a Mac, type
python3 --versionand you should see 3.10 or a higher number. On Windows, open the Start menu, type Python, and read the version in the name of the app that appears. If there is no Python, or it is below 3.10, install Python 3.10 or newer from python.org. On Windows, tick "Add python.exe to PATH" in the installer. Then open a new terminal. - Type
pip install "arcaeon[mcp]"and press Enter, and you should see a line that starts with Successfully installed. - If you saw that
pipwas not found, typepy -m pip install "arcaeon[mcp]"on Windows orpython3 -m pip install "arcaeon[mcp]"on a Mac, and if that is not found either, install Python 3.10 or newer from python.org and start again. - Type
arcaeon mcp --toolsand press Enter, and you should see the list of Arcaeon's tools, with nothing started. If you see thatarcaeonwas not found, close the terminal, open a new one, and try again. If it is still not found, email hello@arcaeon.io. - Find your AI app in the table further down this page and open the file it names. Make a copy of the file first. If the file is empty or does not exist, paste the whole block the table shows. If the file already has
"mcpServers"("servers"for VS Code), add only the "arcaeon" entry just before the last closing brace of the"mcpServers"block (of the"servers"block for VS Code), with a comma after the entry before it. If that block is empty, no comma is needed. If the file has text but no"mcpServers"(no"servers"for VS Code), add a comma after the last entry in the file, then the"mcpServers"line ("servers"for VS Code) and everything under it to its closing brace, just before the file's last closing brace. If the file holds nothing but its two braces, no comma is needed. Here is a file with one other server, before and after:{ "mcpServers": { "other": { "command": "other" } } }
Save the file and restart the app, and you should see arcaeon among the app's tools. If the app reports a settings error, put your copy back in place of the file, and the app is as it was.{ "mcpServers": { "other": { "command": "other" }, "arcaeon": { "command": "arcaeon", "args": [ "mcp" ] } } } - Ask your AI to call
arcaeon_status, and you should see it name the versions and which tools are free.
I write Python
- Open a terminal as described above, and you should see a window with a blinking cursor.
- Arcaeon needs Python 3.10 or newer. On a Mac, type
python3 --versionand you should see 3.10 or a higher number. On Windows, open the Start menu, type Python, and read the version in the name of the app that appears. If there is no Python, or it is below 3.10, install Python 3.10 or newer from python.org, then open a new terminal. - Type
pip install arcaeonand press Enter, and you should see a line that starts with Successfully installed. - If you saw that
pipwas not found, typepy -m pip install arcaeonon Windows orpython3 -m pip install arcaeonon a Mac, and if that is not found either, install Python 3.10 or newer from python.org and start again. - Type
arcaeon versionand press Enter, and you should see a version number for the package and for each part inside it. If you see thatarcaeonwas not found, close the terminal, open a new one, and try again. If it is still not found, email hello@arcaeon.io. - Type
arcaeon demoand press Enter, and you should see VERIFIED, then one word changed, then BROKEN with the line that changed.
In your own code, start with from arcaeon.record.ledger import Ledger, as shown on How it works.
I write JavaScript
- Install Arcaeon once with the Python steps, and you should see a version number when you type
arcaeon version. - From your JavaScript code, run the
arcaeoncommand as a child process, for examplearcaeon verify agent.jsonl, and you should see exit code 0 for good, 1 for a bad finding, 2 for bad usage and 3 for COULD NOT LOOK. - To check a witness pin with a plain web request, fetch the public verify address shown on /proves, and you should see a JSON answer whose
witnessedfield is true, false or null. A503or409with a namedreasonis also COULD NOT LOOK.
I just want to check a record someone sent me
Nothing to install. Your browser does the check.
- If you were sent a receipt file, open arcaeon.io/verify-receipt, and you should see a place to paste or drop it.
- Drop the receipt in, and you should see VERIFIED, BROKEN or COULD NOT LOOK, with nothing uploaded anywhere.
- If you were sent a stamp link that starts with arcaeon.io/r/, open it, and you should see the file's fingerprint and the time it was recorded.
- On that page, pick your own copy of the file under Check your copy of the file, and you should see whether it matches, with nothing sent anywhere.
- If you were sent a log file instead, that check runs on a computer: follow the Python steps, then type
arcaeon verifyand the file's name, and you should see VERIFIED, BROKEN with the first broken line, or COULD NOT LOOK.
Pick your computer. It is the same one line on all three.
pip install arcaeon
If pip is not found: py -m pip install arcaeon
pip install arcaeon
If pip is not found: python3 -m pip install arcaeon
pip install arcaeon
If pip is not found: python3 -m pip install arcaeon
The heavy parts are extras. Add only what you use.
| Extra | What it adds | What it pulls in |
|---|---|---|
arcaeon[mcp] | arcaeon mcp (the MCP server), vet serve, vet probe | the MCP Python SDK |
arcaeon[ts] | vet's TypeScript checks | tree-sitter |
arcaeon[sign] | signed vet reports, receipt signature checks | cryptography |
arcaeon[all] | all three | all of the above |
With an extra, quote the name so your shell leaves the brackets alone: pip install "arcaeon[mcp]".
Other ways in, same package.
pipx install "arcaeon[mcp]"
Keeps arcaeon in a space of its own, apart from your other Python packages, and still puts arcaeon on your path.
uvx arcaeon demo
Runs it once with uv, no install left behind. The demo logs two rows, changes one word and shows the BROKEN line.
py -m pip install --user arcaeon
When pip is not found, the py launcher that comes with Python installs it for your user alone.
Nothing to install: use the tools page.
Stamp a file or verify a receipt, in your browser.
Open the toolsWhat happens on first run
arcaeon version
It prints the version of the package and of each part inside it, read from the install on your machine.
arcaeon proxy --ledger seam.jsonl -- <your mcp server command...>
The proxy sits between an MCP client and an MCP server. It writes one hash-chained row per message to its own ledger, with the payloads stored as digests unless you pass --raw. It prints nothing of its own, because its output is the MCP channel.
arcaeon verify seam.jsonl
Edit a row, delete one, reorder them: every later link breaks and verify names the first broken line. Exit 0 is VERIFIED, 1 is BROKEN, 3 is COULD NOT LOOK, and 3 is never a pass.
The honest limit: a proxy on one seam logs that seam completely, and nothing else. A direct HTTP call, an unwrapped MCP server or a shell command never crosses it. The proxy also runs as the same party as the agent, so it is not an outside witness on its own. And cutting the newest rows off a log leaves a remainder that still checks out; a pin with a witness is what catches that, as of the last pin.
What is inside: three families, one package
Every verb runs as arcaeon <verb>, and every verb uses one exit-code table: 0 good, 1 a bad finding, 2 bad usage, 3 COULD NOT LOOK.
Record: write down what happened
log- add one JSON row to a ledger.
verify- check a ledger's chain. VERIFIED, BROKEN or COULD NOT LOOK.
receipt- issue or check a portable receipt someone else can verify.
once- prove a side effect (a refund, an email) ran once, not twice.
proxy- sit in front of an MCP server and record every tool call.
pin- hand a ledger's current head to a witness, a local file or the hosted one.
deal- a purchase recorded on both sides, step by step.
Prove: check what was written
reconcile- line up two tapes of the same calls. MATCHED, MISSING, ALTERED or COULD NOT LOOK.
audit- check a log, pin its head, or export it as one bundle.
vet- read an MCP server's source and grade it. No code runs.
badge- a free Markdown badge and JSON report for an MCP server.
seal- grades an MCP server on your machine; with a key, pins the result with the hosted witness, for one pin. Without a key nothing is sent.
baseline- score a fixed probe set before a change and again after.
compact- check a receipt that says what a context compaction dropped.
Save: spend fewer tokens
distill- cut a tool's output to a token budget and record what was cut.
dedup- drop near-copies from a list of texts.
meter- per-key usage counts and monthly caps for your own tools.
Also in the box: selftest runs every bundled self-check, each one planting the failure it exists to catch. What each part proves, and what it does not, is on /proves.
Reconcile two records
Reconcile lines up two records of the same calls, the agent side's and the tool side's, and says where they stop agreeing. It runs on your own machine.
- Install Arcaeon with the Python steps, and you should see a version number when you type
arcaeon version. - Type
arcaeon reconcile A Bwith your two record files in place of A and B, and you should see MATCHED, MISSING, ALTERED or COULD NOT LOOK.
MATCHED between two records one party wrote is consistency, not independence.
The AI door: arcaeon mcp
pip install "arcaeon[mcp]"
arcaeon mcp
It gives an agent the ledger, vet and witness tools. arcaeon mcp --tools lists them without starting anything.
A note for MCP registry listings: older listings start the server with uvx arcaeon and no verb. For 30 days after this release that still works when there is no verb and stdin is not a terminal. Point your client at arcaeon mcp now; the fallback goes away after that window.
Tell your AI app where it is.
| App | File | What goes in it |
|---|---|---|
| Claude Desktop | Windows: %APPDATA%\Claude\claude_desktop_config.jsonMac: ~/Library/Application Support/Claude/claude_desktop_config.jsonLinux: ~/.config/Claude/claude_desktop_config.json (not stated in the app's docs; check it first) | |
| Claude Code | Windows: %USERPROFILE%\.claude.jsonMac: ~/.claude.jsonLinux: ~/.claude.json | |
| Cursor | Windows: %USERPROFILE%\.cursor\mcp.jsonMac: ~/.cursor/mcp.jsonLinux: ~/.cursor/mcp.json | |
| Windsurf (Cascade) | Windows: %APPDATA%\devin\mcp_config.jsonMac: ~/.config/devin/mcp_config.jsonLinux: ~/.config/devin/mcp_config.json | |
| VS Code (Copilot agent mode) | Windows: %APPDATA%\Code\User\mcp.json (not stated in the app's docs; check it first)Mac: ~/Library/Application Support/Code/User/mcp.json (not stated in the app's docs; check it first)Linux: ~/.config/Code/User/mcp.json (not stated in the app's docs; check it first) | |
| Gemini CLI | Windows: %USERPROFILE%\.gemini\settings.jsonMac: ~/.gemini/settings.jsonLinux: ~/.gemini/settings.json | |
The hosted door: what needs a key
Everything above runs on your machine with no account. Four verbs talk to the hosted witness at witness.arcaeon.io, over HTTPS, and only when you run them. One more only prints a link.
| Verb | Key? | What it does |
|---|---|---|
arcaeon stamp FILE | no key | sends the file's sha256 and size, never its bytes, inside a free daily allowance |
arcaeon pin LEDGER --ns NAME --remote | ARCAEON_KEY | records your ledger's head with the hosted witness |
arcaeon seal PATH | ARCAEON_KEY | grades an MCP server on your machine; with a key, pins the result with the hosted witness, for one pin. Without a key nothing is sent. |
arcaeon credits | ARCAEON_KEY | shows your balance; looking is free |
arcaeon buy | no key | prints a checkout link. It opens nothing and takes no card; payment happens on the hosted checkout page |
Treat ARCAEON_KEY like a password: a leaked key can pin in your name. Plans and prices live on one page.
The deal lane: a purchase both sides can check
arcaeon deal records a purchase made by an agent. The buyer's agent and the seller each write the same steps (mandate, commit, pay, ship, deliver, cancel) on their own ledger, and arcaeon deal dispute lines the two up into one verdict: MATCHED, MISSING, ALTERED or COULD NOT LOOK. It runs on your machine today. It records; it never moves money.
Used the old package names?
Before this release Arcaeon was thirteen separate packages. Each old name gets one last release that installs arcaeon and keeps the old import and the old command working, with a warning that names the new import. The page for people who installed them has the old and new import and command for each name, and which exit codes moved.
If you are an agent, this site has a wing built for you.
If you're an agent, this site has a whole wing for you: the agent side, with every product with an honest status, verbatim review receipts (including the critical ones), the asked→shipped record, and the commands to verify each claim on your own machine. Machine-readable surfaces: /llms.txt (map), /llms-full.txt (everything, one file), /ai.md (agent page as markdown), and /.well-known/offers.json, the single source of truth for what is purchasable.
Don't want to take any of that on faith? Verify us before you talk to us: a real, downloadable evidence bundle (hash-chained log + compaction receipt + a pin from our hosted witness) with the exact commands and quoted outputs to check it yourself.