DeadBolt by NextEleven

io.github.seanebones-langPublished by GitHub account seanebones-langv2.0.1Updated Nov 4, 2026

Local execution gate: fixed deadlines, operator-only controls, read-only setup and readable denials.

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

DeadBolt is a local execution gate that lets an assistant's tool calls run only when policy, deadlines and operator approval allow them.

What you can do
  • Gate protected actions: wrap a trusted stdio MCP server as a proxy so each tool invocation needs a fresh admission before it executes.
  • Apply policy and limits: tool and destination policies, reported-spend caps, pause, clips and operator kill, with fixed run deadlines and ancestor restrictions inherited by children.
  • Record evidence: SQLite evidence, JSONL mirrors and per-agent incident exports of decisions and denials.
  • Inspect setup: with blank configuration only two read-only setup tools are exposed and no protection is active.
  • Integrate from code: embed in Rust, call a local sidecar from Python or other languages, or use adapters for OpenAI Agents SDK and FastMCP.
When to use it
Use it when an agent runs actions that should be checked before they take effect and you want denials, deadlines and an operator kill switch rather than trusting the agent. It suits teams wiring a trusted stdio MCP server or their own executor behind a local policy gate.
Requirements
Runs as a local process on the user's machine (desktop only, stdio). No model account, API key, cloud service or database server is needed. The bundle needs a fixed deadline, a deliberate renewal mode and reviewed offline exceptions; the Python evaluation path needs Python 3.9+, and a source build needs Rust 1.85+ with a native C compiler/linker. Version 2 requires authenticated operator setup for Unix and TCP sidecars.
Before you install
It is not a sandbox: it does not contain arbitrary code, stop a provider, or make external effects transactional, and the MCP child stays trusted with OS access. Kill blocks later admissions but does not stop in-flight work. A process that can write the database or invoke the operator CLI holds operator authority, so keep state and operator authority outside untrusted agent processes. Blank configuration gives no protection, and the bundle uses broad one-shot tool approvals rather than…

Installation

In SourceWeft

  1. Open DeadBolt by NextEleven 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

DeadBolt

Contributing with an agent? Read AGENTS.md for setup, local checks and project boundaries.

A local execution gate for software agents. Put DeadBolt in the code that runs an action, then let policy and operator controls decide whether that action runs. Embed it in Rust, call its local sidecar from another language, or wrap a trusted stdio MCP server. Free under Apache-2.0.

Install · Try it · Integrate · Migration · Project site

Recent evaluation evidence: ProtocolProbe's read-only setup inspection and NextEleven's separate Swarm native integration lab, with their tested scopes and remaining limits.

[CI] [Release] [License: Apache-2.0]

Version 2.0.1

This source targets engine 2.0.1 and Python client 2.0.1. The patch fixes MCP spend sequencing on denied calls and requires independent admission for every MCP tool invocation; the version 2 integration boundaries remain unchanged. Versioned releases identify available downloads, exact source and checksums; installation tracks package-manager, bundle and editor availability separately. A source merge does not publish a package or update a directory listing.

Upgrading an existing install? Engine, Python client, editor plugins and running sidecars are separate copies. Installing one does not upgrade the others. Use the distribution status and upgrade checklist to identify your route, verify its actual version and select the matching download.

Version 2 requires authenticated operator setup for Unix and TCP sidecars, creates private state, defaults fresh roots to supervisor renewal, and enforces ancestor policy and fixed run deadlines. Existing stored renewal modes remain unchanged. Read major-version migration and private state before replacing an older installation.

The artifact-pinned RC3 retest passed conflicting-destination denial, damaged-store Cursor Reload refusal, and actual model calls after a fixed deadline on macOS arm64. The underlying Auto model was unknown. Separate Linux headless checks cover their recorded scope. These are execution receipts, not certification; stable artifact and installed-consumer checks remain distinct from the RC3 results.

Try it before connecting an agent

No model account, API key, Harness, cloud service or database server is needed. Choose a checksum-verified native archive in the installation guide. From its extracted directory on macOS/Linux:

sh
chmod 0755 deadbolt./deadbolt --version./deadbolt drillpython3 examples/evaluate.py --binary ./deadbolt

On Windows, use .\deadbolt.exe --version, .\deadbolt.exe drill and python examples/evaluate.py --binary .\deadbolt.exe. Expected: your selected version, deadbolt drill ok, and JSON with "passed": true. The evaluation starts a private sidecar, writes harmless temporary files, checks that policy, approval, kill and outage block effects, and cleans up afterward. Python 3.9+ is the additional runtime needed. Understand the report.

For a reviewed source checkout, Rust 1.85+ and a native C compiler/linker:

sh
cargo install --path . --locked --bin deadboltdeadbolt --versiondeadbolt drill

The matching Python client 2.0.1 is published. The matching Rust package 2.0.1 is also published. Install the CLI from Cargo, or the Python client in your application environment:

sh
cargo install n11-deadbolt --version 2.0.1 --locked --bin deadbolt# In your application's virtual environment:python -m pip install 'n11-deadbolt-client==2.0.1'

For embedded Rust, use deadbolt = { package = "n11-deadbolt", version = "=2.0.1" } and commit your application's own lockfile. The Python wheel contains the client, not the engine. Node remains a bundled source module. Install and verify.

Pick your integration

Your executorSmallest integrationStart here
Rust applicationEmbedded store and a check at actual dispatchRust
Python applicationLocal sidecar and dispatch around the actual functionPython
OpenAI Agents SDK function toolsSidecar and @protected_tool on each protected functionSDK adapter
FastMCP server you ownSidecar and dispatch_async inside protected tool bodiesOffline recipe
Node or another languageLocal sidecar; source Node client or HTTP protocolSidecar
Trusted stdio MCP serverdeadbolt mcp-proxy … -- SERVERMCP
Desktop MCP clientVerified local bundle and private operator configurationBundle and editor routes
Docker-launched MCP clientSource-built stdio container and trusted downstreamDocker

Choose the exact bundle and matching configuration before installation. Blank configuration exposes two read-only setup tools and provides no active protection. Configured tools come from your trusted downstream server. Version 2 bundle runs require a fixed deadline, deliberate renewal mode and reviewed offline exceptions. The bundle uses broad one-shot tool approvals; it does not provision exact-action grants. Configuration · Editor guide.

Download the current bundle from the explicit 2.0.1 release. The official MCP Registry still advertised 2.0.0 at the November 3 audit; verify its actual version and checksum rather than assuming discovery means the newest release. Discovery is not hosted operator access, marketplace acceptance of another submission, or an endorsement.

Put the gate at the effect

Your trusted executor creates the run and configures policy first. With the matching Python client installed and its sidecar configured:

python
from pathlib import Pathfrom deadbolt_client import dispatch
outcome = dispatch(    "executor-run-001", "write_file",    lambda: Path("output.txt").write_text("allowed work"),)if not outcome["executed"]:    print("Action blocked:", outcome["decision"]["code"])

A fresh admission happens before the callback; a denial leaves the body uncalled. Complete setup covers provisioning, policy, credentials, transport and errors. Wrap every protected route. Never cache an allow or split one-shot admission from execution. ensure confirms record presence, not liveness.

Controls and limits

  • Tool and destination policies, reported-spend caps, pause, clips and operator kill.
  • Default 60-second idle TTL. A separate supervisor maintains fresh runs; explicit activity mode is available. Neither mode can move a fixed deadline or revive expired/killed state. Liveness · Deadlines.
  • Descendants obey ancestor restrictions. A child policy cannot widen its parent.
  • Broad one-shot tool approvals and exact-action grants for trusted integrations using the content-bound API.
  • Scoped admission credentials separate dispatch from operator controls. /spend remains operator-only.
  • SQLite evidence, JSONL mirrors and per-agent incident exports.
  • Store or transport failure denies protected dispatch; malformed or unsuccessful responses never authorize the body.

Ordinary trusted-executor admission treats unset policy lists as open; the MCP proxy requires explicit tool policy. Configure runs and children before dispatch. MCP discovery can advertise tools that the policy will deny. Destination parsing covers recognized fields, not arbitrary arguments or network traffic. Destination policy.

Know the boundary

DeadBolt protects connected execution routes. It does not sandbox arbitrary code, stop a provider, or make external effects transactional with admission. Kill blocks subsequent admissions; stopping in-flight work requires an executor cancellation pattern. The MCP child remains trusted and has OS access; startup and non-tool methods are outside the tool-call gate.

Keep state and operator authority outside untrusted agent processes. A process able to write the database or invoke the operator CLI has operator authority; socket credentials cannot contain it. Use separate OS/service ownership and OS egress controls where your application requires those boundaries. Evidence hashes identify content; operator-writable records are not tamper-proof certification. Trust · HTTP authentication · Pilot checklist.

Developer documentation

NeedGuide
First working resultQuick start, first evaluation
Binary, crate or Python installationInstallation
Embed, sidecar or MCP wiringIntegration, Python / SDK
Least-authority dispatch and sensitive actionsCredentials, exact approvals
API and upgrade behaviorHTTP protocol, compatibility
Denial or setup problemTroubleshooting, FAQ
Deploy, backup and respondOperations, incidents
Evaluate or contributeTechnical brief, Hermes showcase, contributing
Versions and packagingChangelog, release procedure, third-party notices

Source checks: cargo test --locked, cargo clippy --all-targets --locked -- -D warnings, and python3 tests/client_contract.py after cargo build --locked --bin deadbolt (Python and Node required). CI also checks Rust 1.85, installed Python/SDK behavior and native packages. Passing these checks does not establish acceptance of your application.

Report ordinary bugs or use private security reporting. Copyright NextEleven LLC 2026. License · Notice. Harness is one consumer, not a prerequisite.

For trusted executors that need to stop already running local commands, the owned-process cancellation reference adds a POSIX supervisor pattern with disposable acceptance. It does not change the gate into a sandbox or add enforcement to older packages.

Source: README.md at commit 2247fbe

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

5
  1. v2.0.1LatestNov 4, 2026
  2. v2.0.0Oct 13, 2026
  3. v2.0.0-rc.2Oct 12, 2026
  4. v2.0.0-rc.1Oct 12, 2026
  5. v1.1.0Oct 12, 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