Arcaeon™A record of what your AI did that breaks visibly if edited

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.

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, not npm.
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

  1. Open a terminal as described above, and you should see a window with a blinking cursor.
  2. Check that you have Python 3.10 or newer. On a Mac, type python3 --version and 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.
  3. Type pip install "arcaeon[mcp]" and press Enter, and you should see a line that starts with Successfully installed.
  4. If you saw that pip was not found, type py -m pip install "arcaeon[mcp]" on Windows or python3 -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.
  5. Type arcaeon mcp --tools and press Enter, and you should see the list of Arcaeon's tools, with nothing started. If you see that arcaeon was not found, close the terminal, open a new one, and try again. If it is still not found, email hello@arcaeon.io.
  6. 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"
        }
      }
    }
    {
      "mcpServers": {
        "other": {
          "command": "other"
        },
        "arcaeon": {
          "command": "arcaeon",
          "args": [
            "mcp"
          ]
        }
      }
    }
    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.
  7. Ask your AI to call arcaeon_status, and you should see it name the versions and which tools are free.

I write Python

  1. Open a terminal as described above, and you should see a window with a blinking cursor.
  2. Arcaeon needs Python 3.10 or newer. On a Mac, type python3 --version and 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.
  3. Type pip install arcaeon and press Enter, and you should see a line that starts with Successfully installed.
  4. If you saw that pip was not found, type py -m pip install arcaeon on Windows or python3 -m pip install arcaeon on a Mac, and if that is not found either, install Python 3.10 or newer from python.org and start again.
  5. Type arcaeon version and press Enter, and you should see a version number for the package and for each part inside it. If you see that arcaeon was not found, close the terminal, open a new one, and try again. If it is still not found, email hello@arcaeon.io.
  6. Type arcaeon demo and 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

  1. Install Arcaeon once with the Python steps, and you should see a version number when you type arcaeon version.
  2. From your JavaScript code, run the arcaeon command as a child process, for example arcaeon 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.
  3. 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 witnessed field is true, false or null. A 503 or 409 with a named reason is also COULD NOT LOOK.

I just want to check a record someone sent me

Nothing to install. Your browser does the check.

  1. If you were sent a receipt file, open arcaeon.io/verify-receipt, and you should see a place to paste or drop it.
  2. Drop the receipt in, and you should see VERIFIED, BROKEN or COULD NOT LOOK, with nothing uploaded anywhere.
  3. 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.
  4. 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.
  5. If you were sent a log file instead, that check runs on a computer: follow the Python steps, then type arcaeon verify and 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.

WindowsPowerShell
pip install arcaeon

If pip is not found: py -m pip install arcaeon

MacTerminal
pip install arcaeon

If pip is not found: python3 -m pip install arcaeon

Linuxa terminal
pip install arcaeon

If pip is not found: python3 -m pip install arcaeon

The heavy parts are extras. Add only what you use.

ExtraWhat it addsWhat it pulls in
arcaeon[mcp]arcaeon mcp (the MCP server), vet serve, vet probethe MCP Python SDK
arcaeon[ts]vet's TypeScript checkstree-sitter
arcaeon[sign]signed vet reports, receipt signature checkscryptography
arcaeon[all]all threeall 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.

pipxkept apart
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.

uvxnothing kept
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.

Windowsno admin
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 tools

What happens on first run

1 · What you gotversion
arcaeon version

It prints the version of the package and of each part inside it, read from the install on your machine.

2 · Record the callsproxy
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.

3 · Check the recordverify
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.

  1. Install Arcaeon with the Python steps, and you should see a version number when you type arcaeon version.
  2. Type arcaeon reconcile A B with 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

MCP serverstdio
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.

AppFileWhat goes in it
Claude DesktopWindows: %APPDATA%\Claude\claude_desktop_config.json
Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json (not stated in the app's docs; check it first)
{
  "mcpServers": {
    "arcaeon": {
      "command": "arcaeon",
      "args": [
        "mcp"
      ]
    }
  }
}
Claude CodeWindows: %USERPROFILE%\.claude.json
Mac: ~/.claude.json
Linux: ~/.claude.json
{
  "mcpServers": {
    "arcaeon": {
      "command": "arcaeon",
      "args": [
        "mcp"
      ]
    }
  }
}
CursorWindows: %USERPROFILE%\.cursor\mcp.json
Mac: ~/.cursor/mcp.json
Linux: ~/.cursor/mcp.json
{
  "mcpServers": {
    "arcaeon": {
      "command": "arcaeon",
      "args": [
        "mcp"
      ]
    }
  }
}
Windsurf (Cascade)Windows: %APPDATA%\devin\mcp_config.json
Mac: ~/.config/devin/mcp_config.json
Linux: ~/.config/devin/mcp_config.json
{
  "mcpServers": {
    "arcaeon": {
      "command": "arcaeon",
      "args": [
        "mcp"
      ]
    }
  }
}
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)
{
  "servers": {
    "arcaeon": {
      "type": "stdio",
      "command": "arcaeon",
      "args": [
        "mcp"
      ]
    }
  }
}
Gemini CLIWindows: %USERPROFILE%\.gemini\settings.json
Mac: ~/.gemini/settings.json
Linux: ~/.gemini/settings.json
{
  "mcpServers": {
    "arcaeon": {
      "command": "arcaeon",
      "args": [
        "mcp"
      ]
    }
  }
}

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.

VerbKey?What it does
arcaeon stamp FILEno keysends the file's sha256 and size, never its bytes, inside a free daily allowance
arcaeon pin LEDGER --ns NAME --remoteARCAEON_KEYrecords your ledger's head with the hosted witness
arcaeon seal PATHARCAEON_KEYgrades 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 creditsARCAEON_KEYshows your balance; looking is free
arcaeon buyno keyprints 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.

What it costs

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.

How the deal lane works

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.

Old names, new commands

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.