Fail-closed deterministic checks and hash-chained receipts for AI agent outputs via MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Emergency-shutdown orchestration for Slurm, Kubernetes, and IPMI clusters, with an Ed25519-signed, hash-chained attestation record of exactly what ran.
Signed, dry-run-by-default shutdown orchestration for Slurm, Kubernetes, and IPMI clusters, with a tamper-evident audit trail.

HaltProof is an emergency-shutdown orchestration and cryptographic audit-proof layer for compute clusters. It does not implement a new low-level shutdown mechanism. It coordinates cluster primitives you already trust (Slurm, Kubernetes, IPMI/BMC) and produces a signed, tamper-evident record of exactly what was targeted, what ran, and who authorized it.
(Full install options, including the npm wrapper, are in Install below.)
Operators already have the tools to drain a Slurm partition, cordon a Kubernetes node pool, or power-fence a physical host over IPMI. What's usually missing is:
HaltProof is that layer. It calls out to scontrol, kubectl, and
ipmitool (or mcp-invokable equivalents) and wraps every invocation in an
Ed25519-signed, hash-chained attestation.
An npm wrapper is also published for Node.js-based tooling and agent runtimes:
[!WARNING] The npm package requires the Python
haltproof-clipackage to already be installed and onPATH. It is a thinexecFileSyncwrapper, not a reimplementation. If it can't find the Python CLI, it prints an actionable error and exits non-zero rather than silently doing something else.
haltproof halt prints exactly which commands it would run, against which nodes, and still writes a signed attestation of that plan, unless you pass --confirm. The gate lives at a single chokepoint (haltproof.backends.runner.run_step) that all three backends route through, so it can't be quietly bypassed by one backend's code path.kubernetes (via kubectl), slurm (via scontrol), and ipmi (via ipmitool) each implement the same four-operation ClusterBackend interface: drain, isolate_network, power_fence, status. A backend that doesn't support an operation, for example Kubernetes has no physical power-fencing primitive, returns a SKIPPED result with an explanation instead of raising, so a halt across a mixed environment still produces one complete attestation.prev_hash, the content hash of the record before it, so haltproof verify --chain can catch a deleted or reordered entry that a single record's own signature check would miss.--json (or --format json) is available on halt, verify, status, and keygen, so a script or an agent can parse the result without screen-scraping human-formatted text.haltproof mcp-server exposes halt, verify, verify_chain, status, and keygen as MCP tools over stdio, built on the official mcp Python SDK. It calls the same haltproof.core functions the CLI calls, so an agent invoking the MCP tool gets the identical dry-run-by-default behavior a human gets from the CLI.pytest -v --cov=haltproof --cov-report=term-missing. Backend tests mock subprocess calls; none of them require a real cluster.[!IMPORTANT]
haltproof haltis a no-op without--confirm. It prints the plan and writes a signed dry-run attestation, but nothing destructive runs until you pass--confirmexplicitly.
Every command also supports --json for agent-parseable output:
Target groups, the preferred backend, and default paths can live in a haltproof.toml file (checked in the current directory, then ~/.config/haltproof/config.toml, or at a path given by --config / HALTPROOF_CONFIG):
Every config value has a matching CLI flag, and an explicit flag always wins over the config file.
Reference below is regenerated from the CLI's actual --help output.
haltproof halt TARGET_GROUPDrain, isolate, and power-fence TARGET_GROUP. Dry-run is the default; nothing destructive runs without --confirm.

haltproof verify [ATTESTATION_REF]Verify one attestation record's signature, or an entire log's hash chain. ATTESTATION_REF is a path to a record file, or an attestation id / sequence number to look up in the log. Pass --chain instead of ATTESTATION_REF to verify a whole --attestation-log: every record's signature holds, and none has been deleted or reordered.
| Flag | Description |
|---|---|
--attestation-log TEXT | Log to search when ATTESTATION_REF is an id/sequence number, or to verify with --chain. |
--trusted-key TEXT | Path to a trusted Ed25519 public key; if given, the record's signing key must match it. |
--chain | Verify the full hash chain of --attestation-log instead of a single record. |
--format [human|json] | Output format. |
--json | Shorthand for --format=json. |
haltproof statusShow backend auto-detection results and, optionally, target-group health.
| Flag | Description |
|---|---|
--backend TEXT | Backend to check status for; defaults to the auto-detected/configured backend. |
--nodes TEXT | Comma-separated node list to report health for. |
--group TEXT | Named target group (from config) to report health for. |
--config TEXT | Path to a haltproof.toml config file. |
--format [human|json] | Output format. |
--json | Shorthand for --format=json. |
haltproof keygenGenerate an Ed25519 keypair for attestation signing. The private key is written with 0600 permissions and is never printed or logged.

haltproof mcp-serverNo reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/haltproof)<a href="https://allmcps.com/mcp/haltproof"><img src="https://allmcps.com/api/badge/haltproof?style=directory" alt="Haltproof on AllMCPs" /></a>