Procheiron
A governance and provenance layer for agent memory. Not a memory engine — the trust layer that sits on top of one.
Memory engines (supermemory, mempalace, agentmemory, a vector DB, or plain files) answer "what does my agent remember?" Procheiron answers a different question: "can a different agent trust this memory — and see who wrote it, who independently reviewed it, and who authorized it, backed by a validator-checked append-only audit trail?" It is built for the case a single-agent memory store ignores — multiple agents sharing one governed source of truth. Provenance here is enforced by validation and an audit log, not cryptographic signatures: it detects casual tampering and records authority, but does not prove authorship against an insider with write access (single trust domain). See CLAIMS.md for the exact trust model and its limits.
Status: v0.2.0, pre-release (spec v0.1). Conformance passes at fixture level (a second, fully fictional deployment validates against the same Core). Honest scope discipline: nothing here claims more than the conformance suite proves.
CLAIMS.md — the proven-vs-not-proven ledger: every claim with cited evidence, or an honest caveat. The provenance system applied to itself. If a headline ever disagrees with the ledger, the ledger wins.
Why this exists
Give an agent keys and it will use them. Give several agents a shared memory and, without governance, any one of them can write a "fact" the others will trust — no record of who, no independent review, no way to supersede it cleanly. Procheiron makes the trustworthy path the easy one:
- Provenance-first lifecycle — every memory is
draft → candidate → validated → active → superseded. Anactive(trusted) record requires independent review by an actor that is not its author. - Authority, not vibes — who may promote, review, or authorize is policy, enforced by a validator and a stdlib policy check, not a prompt asking nicely. (A Rego reference policy ships alongside for teams that run OPA in CI; the stdlib check is the production backend — see CLAIMS.md.)
- Provable, replayable — a conformance suite checks that a deployment obeys the spec; a fictional
reference deployment (
conformance/generic-vault/) proves the same Core governs a vault it has never seen.
How this compares to memory engines
Procheiron is not a memory engine and does not compete with one — it governs the records a store holds. The honest landscape (see the competitive read for the long version):
| System | What it does | Enforced independent-review gate? | Tamper-evident audit trail? |
|---|---|---|---|
| Mem0 · supermemory · MemPalace · agentmemory | recall engines — embed, store, retrieve, per-user/agent scoping; Mem0 adds a per-memory change log | No | No — a mutable history log |
| Zep / Graphiti | bi-temporal knowledge graph with automatic episode→fact lineage | No | No — strong lineage, not tamper-evident |
| Procheiron | no recall at all — an enforced draft→validated→active lifecycle where active requires review by a non-author plus a distinct authorizer |
Yes — none of them ship this | Yes — hash-chained (stdlib) + optional ed25519 signing |
Use a memory engine to remember; add Procheiron when "who independently vetted this, and has the record been tampered with since?" has to be answerable. It rides on top of any of them.
Trust model, stated up front: the append-only audit log is tamper-evident — every event is
hash-chained (BLAKE2b, pure stdlib), so you cannot silently edit, reorder, or delete a past event without
breaking the chain. But verify_chain sees only internal continuity: a writer can rebuild the entire
chain from scratch and it stays self-consistent. To catch that, anchor the head externally — pin the
latest entry_hash in git and pass it to validate --expect-head <hex>; that makes the anchor a
machine-checked input, not just advice. Authorship can additionally be cryptographically signed
(optional procheiron[crypto], ed25519): with verify_signatures + a known_actor_keys registry, an
event from a keyed actor must carry that actor's signature — stripping it fails, it does not pass.
Conformance proves it: a signed log verifies; a forged signature and a stripped signature are caught.
Honest residual (single trust domain). The private keys and the public-key registry
(known_actor_keys) live in the deployment's own tree. An insider who can write the audit log can, in
principle, rebuild the chain and re-register fresh keys — so on one shared machine, signing adds little
over the bare chain unless both (a) the head is externally anchored (--expect-head) and (b) the
key registry is out of the writer's write scope (separate OS user / HSM / Sigstore keyless). Get those two
right and a determined insider is stopped; miss either and you have tamper-evidence (detectable after the
fact via the anchor), not tamper-prevention. See CLAIMS.md for the exact statement.
What's in this repo
| Path | What it is |
|---|---|
spec/ |
The v0.1 specification: governance.md, memory-commons.md, control-plane.md, the normative conformance.md MUST-list, and the Core/Profile boundary.md. |
conformance/ |
run_conformance.py + fixtures. generic-vault/ is a complete fictional deployment ("Meridian Atelier"); minimal-vault/ is the 5-file minimal adopter. Run it to prove conformance. |
examples/minimal-adopter/ |
The smallest compliant deployment — a memory commons with provenance + independent review, no heavyweight governance ladder. |
init/ |
procheiron_init.py scaffolds a new deployment; PORTING_GUIDE.md is the step-by-step. |
Quick start
# Install (zero runtime dependencies — stdlib-only Python):
pipx install procheiron # or: pip install procheiron
# Scaffold a governed memory commons and validate it:
procheiron init ./my-commons
procheiron validate ./my-commons
From a source checkout (no install required):
# Prove the spec holds against the bundled fixtures:
python3 conformance/run_conformance.py
# Scaffold via the init script directly:
python3 init/procheiron_init.py --root ./my-commons
Design choices worth knowing
- Zero runtime dependencies (governance core). Every tool a live deployment runs is standard-library
Python. Cryptographic signing is the one optional extra (
pip install "procheiron[crypto]"→ ed25519); the tamper-evident hash chain needs no dependency at all. (jsonschema,opaare dev/CI cross-checks only.) Adopt it without taking on a dependency tree. - Tamper-evident by default, signed by choice. The audit log is hash-chained in pure stdlib; ed25519
signatures are opt-in. A verification that cannot run (crypto not installed but signatures required) is a
hard error, never a silent pass — see
chain.py/signing.py. - Bring your own memory engine. Procheiron governs records and their lifecycle; it does not do embeddings or retrieval and never will (that is the engine's job). Point it at any store.
- Core vs Profile. The spec is portable Core. Deployment-specific bindings (identities, paths, a git
preservation executor, a full L0–L9 authority ladder) live in a profile — see
boundary.md.
Not in scope (by design)
No vector/retrieval engine. No recall benchmarks — that is the memory engine's axis, not ours. No claim of "production-replicable" until a second real deployment passes conformance (fixture-level proof is what exists today, and the README says exactly that).
Roadmap
Cryptographic trust — a tamper-evident hash-chained audit log (stdlib) + optional ed25519 signing, so the log can't be silently rewritten and authorship is provable. Conformance proves a signed log verifies and a forged signature is caught.Shipped in v0.2.- A second, independent real deployment through conformance — the milestone that turns "single deployment" from a caveat into proof. (The biggest remaining gap.)
- A reference integration — Procheiron governing a third-party memory engine (Mem0 / Zep / supermemory) end to end, shipped as an adapter.
- Production key-custody guidance — separate-OS-user / HSM / Sigstore-keyless patterns so signing gives real non-repudiation in a single-machine deployment, not just across separate hosts.
PyPI /Shipped in v0.1.pipxpackaging + one-commandprocheiron init; a config-resolved standalone MCP server.
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 procheiron-0.2.0.tar.gz.
File metadata
- Download URL: procheiron-0.2.0.tar.gz
- Upload date:
- Size: 174.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
870d1c83d2f2c89046b0f40edda17e9ab0e26b5e8694bcfb59c2fa685c7471cc
|
|
| MD5 |
decc9a7749750a9ce02b4f97bb3930e8
|
|
| BLAKE2b-256 |
fada594f9ef15417f31cdcb464fa64e58fdda4c9b2e96369ff3481a8d79c9ddb
|
Provenance
The following attestation bundles were made for procheiron-0.2.0.tar.gz:
Publisher:
release.yml on logotheusneuro-cpu/procheiron-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
procheiron-0.2.0.tar.gz -
Subject digest:
870d1c83d2f2c89046b0f40edda17e9ab0e26b5e8694bcfb59c2fa685c7471cc - Sigstore transparency entry: 2089587930
- Sigstore integration time:
-
Permalink:
logotheusneuro-cpu/procheiron-core@173e8a0887898f5f8f261cb32d3065fef7ceef7d -
Branch / Tag:
refs/heads/master - Owner: https://github.com/logotheusneuro-cpu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@173e8a0887898f5f8f261cb32d3065fef7ceef7d -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file procheiron-0.2.0-py3-none-any.whl.
File metadata
- Download URL: procheiron-0.2.0-py3-none-any.whl
- Upload date:
- Size: 96.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0eca04614424f8373be7db2840838912b457a289aecb7f591ef03e8934b8248d
|
|
| MD5 |
8581b8c27e79bf52660f7ab9a9e5614c
|
|
| BLAKE2b-256 |
27483fae90801ea49b8b3d0a692c434ed1e5a4ce21f841a731e055751b6b15de
|
Provenance
The following attestation bundles were made for procheiron-0.2.0-py3-none-any.whl:
Publisher:
release.yml on logotheusneuro-cpu/procheiron-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
procheiron-0.2.0-py3-none-any.whl -
Subject digest:
0eca04614424f8373be7db2840838912b457a289aecb7f591ef03e8934b8248d - Sigstore transparency entry: 2089588435
- Sigstore integration time:
-
Permalink:
logotheusneuro-cpu/procheiron-core@173e8a0887898f5f8f261cb32d3065fef7ceef7d -
Branch / Tag:
refs/heads/master - Owner: https://github.com/logotheusneuro-cpu
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@173e8a0887898f5f8f261cb32d3065fef7ceef7d -
Trigger Event:
workflow_dispatch
-
Statement type: