Prove your AI artifact wasn't tampered with — and exactly how much that proof is worth.
A single Rust binary — a CLI and an MCP server — that seals any file into a tamper-evident <artifact>.seal.json receipt anyone can verify offline. Real cryptographic layers, no account, no SaaS, and no verified=true hardcoded anywhere: every layer re-checks its own crypto, or the seal aborts.
cargo install apohara-sealchain
Seal a file, verify it, then flip a single byte and watch verify refuse to pass.

An unedited recording of the binary — seal, verify, then a one-byte tamper. A seal is evidence, not a verdict: verify reports each layer with a reason and exits non-zero the instant a byte moves.
All five are implemented and live-exercised — no placeholders, no unexercised crypto. A seal proves the properties of the layers it actually carries, nothing more.
Three properties that hold whether a human or an agent drives the binary.
Anyone can verify a .seal.json with no account and no network. The Ed25519 public key is embedded in the receipt, so verify needs no key server — just the file and its sidecar.
Every layer re-derives and re-checks its own crypto at verify time, or the seal aborts. One flipped byte fails verify and exits non-zero — there is no faked pass anywhere in the tree.
Seal and verify from the shell, or run apohara-sealchain mcp and let an agent call seal_artifact / verify_receipt as native MCP tools — stdio by default, streamable-HTTP for CI.
A seal proves the properties of the layers it carries — and the tool says, plainly, where that stops.
Three commands from install to an offline PASS / FAIL.
$ cargo install apohara-sealchainBuilds from source — the lowest-trust path.
$ apohara-sealchain seal <file>Writes <file>.seal.json — offline default: HMAC + Ed25519 + C2PA.
$ apohara-sealchain verify <file> <file>.seal.jsonPASS / FAIL, offline — exits 0 on pass, non-zero on tamper.