sentarion-mcp — Give your AI agents rules, memory, and receipts.
Install: pip install sentarion-mcp · Command: sentarion · Apache-2.0 · Hosted endpoint
Sentarion is the open-source MCP control layer for governed multi-agent work. It governs, records, and coordinates agent work across Claude Code, Codex, Cursor, local models, and any MCP-compatible client.
It composes three open-source MCP servers into one governed substrate — it connects to them as an MCP client, it does not reimplement them:
- Algernon — fan-out planning/dispatch to cheap parallel workers on your key (or a free local Ollama, auto-detected since 0.2.2)
- ArkHive — hosted, tamper-evident audit/memory chain
- a local covenant chamber (Humane Intelligence, or the bundled
arkhive-mcppackage when Humane is not installed)
The first minute
Everything below was run, not written, against a clean pip install sentarion-mcp (2026-09-10).
you > sentarion_birth(name="ember", covenant=["truth over comfort"])
sentarion> born_on: ["humane", "arkhive"] # your local chain AND the hosted one; act as actor="ember"
you > remember(actor="ember", action="decided: ship the 27-tool surface", data={"why": "87 was the tax"})
sentarion> humane: immutably recorded · arkhive: immutably recorded
you > verify()
sentarion> humane: INTACT — context provably unbroken
arkhive: INTACT — context provably unbroken
Now play the villain. Open ~/.sentarion/local_chamber.db and change one word of that record by hand
(update blocks set action = replace(action, 'ship', 'cancel') where idx = 0). Then:
you > verify()
sentarion> humane: TAMPERED — 1 broken links
And the gate, with nothing configured:
you > govern(action="delete the production database")
sentarion> block — Veto: irreversible -> refuse (inferred_flags: ["irreversible"])
you > govern(action="email all 4,000 customers a discount code")
sentarion> block — Veto: external_send -> refuse
you > govern(action="write a summary file")
sentarion> approve
That is the whole idea. Your AI writes down what it did, reads it back next session, and a silent rewrite
fails verification. Every record is hash-chained to the one before it; the hosted copy is a second witness.
govern reads the obvious risks off the action text (delete / drop / force-push, send to everyone, pay, deploy to
production), blocks them by default and fails closed when no chamber answers; orchestrate_and_record asks it
first, fans work out to cheap workers and puts the receipt on the same chain.
Install
pip install sentarion-mcp
Then, from any MCP client, run sentarion_doctor. It checks git, Algernon, the local chamber, hosted ArkHive, the fleet provider, Ollama and your API key, reports ready: true when a run will work, and lists one fix per missing piece. It never prints a secret.
Quick start
Claude Code (examples/claude_code/)
claude mcp add sentarion -- sentarion
or in .mcp.json:
{ "mcpServers": { "sentarion": { "command": "sentarion", "args": [] } } }
Codex (examples/codex/) — in ~/.codex/config.toml:
[mcp_servers.sentarion]
command = "sentarion"
args = []
Cursor (examples/cursor/) — in .cursor/mcp.json:
{ "mcpServers": { "sentarion": { "command": "sentarion", "args": [] } } }
Provider keys come from your environment: set ANTHROPIC_API_KEY (or OPENAI_API_KEY), or leave both out and the fleet runs on your local Ollama if one is running (examples/ollama/). Then say:
"Use sentarion: run sentarion_doctor, birth yourself as Scout, then orchestrate_and_record a plan for X with k=3."
Tools
| tool | what it does |
|---|---|
sentarion_doctor(timeout_s) |
read-only health check of every dependency, with one plain fix per failing check; never prints secrets |
sentarion_quickstart(topic) |
canonical, runnable example calls for every capability |
sentarion_birth(name, covenant) |
earn a soul_id before acting (Law 5: born, not configured) |
remember / recall / verify |
dual-chain memory: local chamber + hosted ArkHive, merged newest-first, both provable |
govern(action, flags, rules) |
two-chamber, zero-LLM, fail-closed "may I?" gate |
orchestrate_and_record(goal, k) |
gate → Algernon plan+dispatch → auto-logged to both chains; returns a run_id, a tasks/succeeded/failed summary and the memory outcome per chain |
dispatch_with_dependencies(tasks_json) |
gate → waves by depends_on; dependents receive {{id}} results (data flow, new in 0.2.2) |
recall_and_replan(query, k) |
history-primed plan (plan only, no dispatch) |
cost_estimate(k, in_price, out_price) |
rough pre-dispatch cost |
worktree(action, repo_path, ...) |
governed git-worktree sandbox: create / list / remove |
sentarion_pro(topic, email) |
what the paid v2 upgrade adds to the capability you are using; with an email, requests a trial key |
Governance — real, wired, fail-closed
Two governors, one decision rule: a rendered veto blocks; a chamber that fails to answer never manufactures a
veto; if no chamber renders a verdict, the action is blocked. Every tool that executes work or mutates state
(orchestrate_and_record, dispatch_with_dependencies, worktree create/remove) passes the gate first.
Examples
- examples/README.md — index
- examples/claude_code/ — register in Claude Code and walk six prompts
- examples/codex/ — the same from the Codex CLI
- examples/cursor/ — register in Cursor
- examples/ollama/ — run the fleet on a local Ollama for free
- examples/multi_agent/ —
dispatch_example.py(dependency waves with{{id}}data flow) and the Claude-plans / Codex-builds loop - examples/worktree/ —
worktree_example.py(create / list / remove through the server)
Free vs v2
| free, Apache-2.0, forever | Sentarion v2 (paid) |
|---|---|
| local MCP server, standard MCP client compatibility | durable jobs and background execution |
Algernon orchestration and dependency dispatch with {{id}} data flow |
phase-gate workflow engine with role enforcement and structured task contracts |
| ArkHive integration and the local chamber; remember / recall / verify | signed run manifests and SHA-bound verification evidence |
| birth / identity; two-chamber fail-closed governance; the obvious risk flags inferred from the action text | deeper inference (PII, credentials, money, bulk scope), a REVIEW verdict a human can turn into a yes, stored versioned policies, a remote chamber |
| worktree create / list / remove | worktree diff / patch / commit, repository leases, repo truth snapshots |
| local Ollama fleet; rough cost estimates | budgets and hard ceilings, retries, cache, advanced cost ledger |
| single-user usage, basic audit events | adversarial code review, GitHub/CI workflow, team tenancy, hosted history, deployment gates |
Join v2 early access
Trial key + pricing: https://inboxaxe.com/mcp — or, from any client that has Sentarion loaded, call sentarion_pro(email="you@company.com") and a 14-day v2 key is requested for that address. Nothing is sent unless you supply an email.
Changelog
0.3.1
sentarion_birthbears the identity on both chains and returnsactor(your birth name, which resolves on each chain). Before, birth landed on the local chamber only, so a stranger's very first hostedrememberwas refused as "not a born soul".- A chamber that cannot answer (for example a chain file written by ArkHive 2.x) is now a readable
{error, fix}in the birth reply instead of an "unhandled errors in a TaskGroup" crash. governinfers the obvious risk flags from the action text (irreversible, external_send, spends_money, deploys) and refuses them by default, on both chambers. Before,govern("delete the production database")was approved, and so was the same call withflags=["irreversible"], because no default rule named those triggers.- README leads with the first minute, measured.
0.3.0
- Server instructions. The MCP
initializeresponse now carries usage guidance (birth first, govern before acting, never invent results,{{id}}data flow, free vs paid). sentarion_doctor. Read-only health check of git, Algernon, the local chamber, hosted ArkHive, fleet provider, Ollama and API key, with one fix per failing check; never prints secrets.sentarion_quickstart. Six canonical, runnable example calls, one per capability.- Run summary.
orchestrate_and_recordreturns arunblock withrun_idand timing, a tasks/succeeded/failedsummary, and amemoryoutcome per chain (recorded,not_configured, orerror: <type>) instead of swallowing write failures. - Contextual
sentarion_pro. Optionaltopic(worktree, dispatch, govern, memory, review, jobs) returns what v2 adds to the capability you are using; the no-argument and email paths are unchanged. examples/. Claude Code, Codex, Cursor, Ollama, multi-agent dispatch and worktree examples, plus the Claude-plans / Codex-builds workflow.- Tests + CI.
tests/with pytest; a GitHub Actions job runs them on Python 3.10 and 3.12 and fails on version drift. - Birth fallback fix. The ArkHive birth fallback no longer raises
NameError(tool_textwas not imported). - Version unification.
pyproject.toml,sentarion_mcp.__version__andserver.jsonnow agree; built wheels are no longer tracked.
0.2.2 — what changed (found by dogfooding)
- Fleet config is explicit. 0.2.1 passed the whole ambient environment to Algernon, so a stale
OPENAI_API_KEYin your shell could silently override your Ollama setup (401). NowSENTARION_FLEET_PROVIDER=anthropic|openai|ollamawins, else a set key, else a local Ollama. - Local chamber always exists. Without Humane installed, the bundled
arkhive-mcppackage is the local chamber (own chain at~/.sentarion/local_chamber.db). "humane_not_configured" is gone. - Dependencies carry data.
{{t1}}in a dependent prompt is replaced with task t1's result. - Hosted birth works (the hosted 0.x server typed
covenantas a string; we retry with one). recall_and_replanno longer sends an argument the hosted recall never accepted.- Removed the unused
mcp-agentdependency; added project URLs.
Support this project
Sentarion, Algernon and ArkHive are free, open source, and built on our own hardware. Donate: https://dondatabrain.com · Business suite: https://inboxaxe.com
Metadata
Release files for sentarion-mcp 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sentarion_mcp-0.3.1.tar.gz | 62.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sentarion_mcp-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 97.8 kB
Release files / sentarion_mcp-0.3.1.tar.gz
| Download URL | sentarion_mcp-0.3.1.tar.gz |
|---|---|
| Size | 62.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1991404c9715c9b08935222b138e9f6f52f16bd72bdbd0e1978e95eae286b75e
|
|
BLAKE2b-256 checksum How to use checksums |
46bb95ad6c7fc6463340362ddd30fc326c8470a404d4c151f00c372cc332270f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / sentarion_mcp-0.3.1-py3-none-any.whl
| Download URL | sentarion_mcp-0.3.1-py3-none-any.whl |
|---|---|
| Size | 35.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2ae7176777d2506040abb2b0d9f7faa7f55947ecb9d2602c5c32d4684f9e147a
|
|
BLAKE2b-256 checksum How to use checksums |
288acb83f205b2db08aaa678faf83bc370f127e8dc3c21713a4514cbc9f06964
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|