DarkMatter

io.github.darkmatter-hubPublished by GitHub account darkmatter-hubv0.3.1Updated Oct 28, 2026

Tamper-evident records of AI agent decisions. Verify offline, or publish a proof link.

Overview

AI-generated overview

Records AI agent decisions as signed, hash-chained Context Passport entries that can be verified offline or published as a proof link.

What you can do
  • Record an agent decision or action as a passport entry in a local hash chain
  • Verify that a session's chain has not been tampered with, and replay it in order
  • Export a portable proof bundle that carries the format name, spec link, integrity status and verification commands
  • List the sessions stored locally
  • Optionally publish each record to DarkMatter and return a verification URL
When to use it
Useful when an agent's decisions need an auditable, tamper-evident trail — for example compliance, refunds or other consequential actions — and you want records that a third party such as an auditor or counterparty can check without trusting the sender.
Requirements
Runs locally over stdio via npx, so Node.js is needed. No account is required for local-only use; records are written to a local store directory. Publishing requires a DARKMATTER_API_KEY from the vendor. Optional variables: DARKMATTER_API_URL, DARKMATTER_MCP_STORE_DIR, DARKMATTER_SHARE.
Before you install
Setting DARKMATTER_API_KEY sends each record to the vendor's servers; DARKMATTER_SHARE=true makes published records readable by anyone with the link. Records are only captured when the agent explicitly calls the commit tool, so coverage depends on the agent remembering. Earlier versions returned verification links that always failed; check the version.

Installation

In SourceWeft

  1. Open DarkMatter in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

DarkMatter MCP Server

Universal MCP server that emits Context Passport records for AI agent decisions and actions. Drop into any MCP-compatible client (Claude Code, Cursor, Cline, Continue, ChatGPT Desktop, Zed, Goose, and others) to give your agent a commit / verify / replay / export toolset for verifiable, tamper-evident records.

Built by DarkMatter. Implements Context Passport v2.0, an open CC0 standard. Records emitted by this server use RFC 8785 (JCS) canonicalization and are byte-equivalent across the Python and TypeScript reference SDKs.

Install

In your MCP client's config (claude_desktop_config.json, Cursor's mcp.json, etc.):

json
{  "mcpServers": {    "darkmatter": {      "command": "npx",      "args": ["-y", "@darkmatterhub/mcp-server"]    }  }}

Restart the client. Five tools become available to your agent:

  • darkmatter_commit — record an agent decision or action
  • darkmatter_verify — check that the chain has not been tampered with
  • darkmatter_replay — walk the full chain in order
  • darkmatter_export — produce a portable proof bundle
  • darkmatter_list_sessions — see what sessions exist locally

Bundles explain themselves

darkmatter_export produces a bundle that a stranger can act on. Alongside the records it carries the format name, a link to the specification, whether the chain was intact at export time, and the exact command to verify it in Python or TypeScript, plus what a failure looks like.

That matters because the bundle is the artifact that leaves your machine. It goes to an auditor, a regulator or a counterparty who has never heard of this format, and the whole claim is that they can check it without trusting whoever sent it. A bundle that does not say how is asking to be trusted.

Local by default, published when you ask

With no configuration the server keeps every record on your own disk. The chain verifies offline through darkmatter_verify, so you can evaluate the whole idea without an account.

Set an API key to publish records and get a link somebody else can check:

VariableEffect
DARKMATTER_API_KEYPublishes each record to DarkMatter and returns a verify_url. Get one at darkmatterhub.ai.
DARKMATTER_SHARESet to true to make published records readable by anyone with the link. Off by default, because publishing is not something to do to your records without being asked.
DARKMATTER_API_URLOverride the API host. Defaults to https://darkmatterhub.ai.
DARKMATTER_MCP_STORE_DIRWhere local records are written.

commit reports which of the two happened, in the storage field. If publishing fails the record is still committed locally and the error is returned alongside it, so a network problem cannot cost you the record.

Changed in 0.3.0. Earlier versions returned a https://darkmatterhub.ai/r/{id} link for every commit while making no network calls at all, so the link always 404ed. A verification URL is now returned only when there is a published record behind it.

What gets captured

Whatever the agent (or user) explicitly invokes via darkmatter_commit. Auto-capture of every tool call without explicit invocation is a separate component (see Auto-capture below).

Example agent flow:

User:    Approve the refund for order #1247 and record the decision.Agent:   Calls refund_order(1247).Agent:   Calls darkmatter_commit({           input: "Approve refund for order #1247",           output: "Approved. $84.00 refunded to original payment method.",           role: "compliance",           event_type: "commit"         })Result:  { ok: true, passport: {...}, storage: "local", verify_url: null,           note: "Saved locally and verifiable offline..." }

The passport is signed (if a key is configured), hash-chained to the previous commit in the session, and stored locally at ~/.darkmatter/mcp/<session_id>/chain.jsonl.

Storage

Default: local-only. Passports never leave the machine.

~/.darkmatter/mcp/├── default/│   ├── chain.jsonl        # append-only stream of all commits│   └── latest.json        # most recent passport (used as parent for the next)└── <other-session-id>/    └── ...

To forward each passport to a DarkMatter receiving server in addition to local storage, set:

bash
export DARKMATTER_API_KEY="dm_sk_..."

The forwarding is best-effort and never blocks the agent's tool call. Local storage remains the source of truth.

Auto-capture

The MCP server captures only what the agent explicitly invokes. To auto-capture every tool call and turn boundary in a specific dev tool (without the agent having to remember to call darkmatter_commit), install one of the dev-tool-specific adapters:

  • darkmatter-hub/claude-code — auto-capture for Claude Code (Anthropic)
  • Cursor adapter — planned
  • OpenAI Codex adapter — planned
  • Aider adapter — community-built welcome

Each adapter hooks into its specific dev tool's event lifecycle and routes events through this MCP server's darkmatter_commit tool. One canonical endpoint, many capture surfaces.

Verification

Records are valid Context Passport v2.0 artifacts. Verify with any conformant implementation:

bash
pip install context-passport context-passport-conformancecontext-passport-conformance --level signed     # 9/9 vectors, no --vectors-dir needed

The conformance package ships its vectors inside the wheel, so this is a one-line check against the public reference suite.

Or use the offline reference verifier directly on the JSONL file:

python
import jsonfrom context_passport import verify_chain
with open("~/.darkmatter/mcp/default/chain.jsonl") as f:    chain = [json.loads(line) for line in f]
print(verify_chain(chain))  # True if intact, False if tampered

Why MCP

MCP (Model Context Protocol) is becoming the universal interop layer for AI tools. Writing this server once means it works in every MCP-compatible client without per-client integration code. See the Context Passport for MCP proposal for the broader architectural rationale.

License

Apache-2.0. See LICENSE.

The Context Passport schema this server implements is released separately under CC0 1.0 at github.com/contextpassport/spec.

Related repositories

Source: README.md at commit 59d01ef

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.3.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts