delimit

delimit-ai/delimit
Community

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

delimit-ai/delimit MCP server](https://glama.ai/mcp/servers/delimit-ai/delimit/badges/score.svg)](https://glama.ai/mcp/servers/delimit-ai/delimit) ๐Ÿ ๐Ÿ  ๐ŸŽ ๐ŸชŸ ๐Ÿง - API governance server that detects breaking changes in OpenAPI specs.

README.md

</> Delimit

The merge gate for AI-written code, with signed, replayable attestation.

Wrap any AI coding assistant (Claude Code, Codex, Cursor, Gemini CLI) with a governance chain that runs your gates, records what changed, and signs a replayable receipt for every merge.

![npm](https://www.npmjs.com/package/delimit-cli) ![Tests](https://github.com/delimit-ai/delimit-mcp-server) ![GitHub Action](https://github.com/marketplace/actions/delimit-api-governance) ![License: MIT](https://opensource.org/licenses/MIT) ![Glama Score](https://glama.ai/mcp/servers/delimit-ai/delimit-mcp-server/score)

$ delimit wrap -- claude "fix the flaky test in tests/api.spec.ts"

โœ“ repo_diagnose
โœ“ security_audit       0 critical ยท 0 secrets
โœ“ test_smoke           165/165
โœ“ changed_files        1
โœ“ attestation signed   att_a05050eb8e13277e
                       delimit.attestation.v1 ยท HMAC-SHA256
                       replay โ†’ https://delimit.ai/att/att_a05050eb8e13277e

Every wrapped run emits a delimit.attestation.v1 bundle: repo head before/after, changed files, gate results, HMAC-SHA256 signature, and a replay URL. Advisory by default; flip to enforcing when you're ready.

---

Fastest path to value: delimit check

Zero-config PR safety gate. No init, no setup, no account, no keys โ€” run it on any repo and it applies deterministic checks (breaking API changes + leaked secrets) to your staged or modified files.

npx delimit-cli check
$ delimit check

  Delimit Check

  Policy: default | Base: HEAD | Specs: 1

  + api/openapi.yaml โ€” clean

  PASSED โ€” no breaking changes, no leaked secrets

When a check finds a breaking change or a leaked secret, it prints the offending file and the issue and exits non-zero โ€” so it drops straight into a pre-commit hook or CI step.

Common options:

delimit check --staged          # only check staged files
delimit check --base main       # compare against a git ref (default HEAD)
delimit check --fix             # show migration guidance for violations
delimit check --record          # write a content-pinned record of this check

--record writes a content-pinned record of the check to .delimit/records/check-<ts>.json (or a path you name). That record is the precursor to the signed, replayable Seal attestation โ€” the same evidence shape, pinned to the exact content you checked.

<p align="center"> <a href="https://delimit.ai/methodology/mcp-attestation">Methodology</a> ยท <a href="https://delimit.ai/reports/cal-com-v2-attestation">cal.com v2 worked example</a> ยท <a href="https://delimit.ai/docs/workflow">Workflow guide</a> ยท <a href="https://delimit.ai">Website</a> </p>

---

Worked examples

Real, reproducible merge-gate runs against public API specs:

See the full index at delimit.ai/reports. For the schema and signing methodology behind every report, see delimit.ai/methodology/mcp-attestation.

---

Golden Path โ€” your first 10 minutes

The merge gate for AI-written code, end to end: lint a spec, see exactly what breaks, classify the bump, settle the hard calls with multiple models, and walk away with a signed, replayable attestation. Then keep the context that survives across sessions and models.

1. Install

npx delimit-cli scan          # discovery: finds your OpenAPI specs, frameworks, security issues, tests
npx delimit-cli init          # wire up the merge-gate config (--preset strict | default | relaxed)

scan (delimit_scan) reports what Delimit can do for this repo. init (delimit_init) drops in the policy preset and merge-gate config. No account, no keys.

2. The merge gate, end to end

Lint the spec change (the gate). Baseline vs. proposed, with policy applied โ€” one pass/fail verdict.

npx delimit-cli lint old.yaml new.yaml       # tool: delimit_lint

See exactly what breaks. Pure structural diff โ€” added/removed/modified endpoints, schemas, params, no policy.

npx delimit-cli diff old.yaml new.yaml       # tool: delimit_diff

Classify the bump. Deterministic MAJOR/MINOR/PATCH/NONE โ€” same input, same answer, every time.

delimit_semver       โ†’ MAJOR/MINOR/PATCH/NONE + next version string
delimit_impact       โ†’ blast radius: scans your dependency manifest for downstream callers (informational)

Settle the hard calls. When the gate verdict is a judgment call, put it to multiple models and let them debate to consensus.

npx delimit-cli deliberate "Is dropping the deprecated v1 /users field a safe MINOR?"
#   tool: delimit_deliberate โ€” 3 free, then bring your own key

Capture the signed, replayable attestation. After a gate event (deploy / security / test / audit), record the evidence bundle and verify it any time.

delimit_evidence_collect   โ†’ signed evidence bundle for the audit trail        (Pro)
delimit_evidence_verify    โ†’ confirm a bundle hasn't been tampered with         (Pro)
delimit_seal_verify        โ†’ check a Delimit Seal receipt against its bundled   (Free)
                             Layer-0 constitution โ€” offline-verifiable

Every receipt is offline-verifiable: npx delimit-cli seal-verify <receipt.json>, or open its delimit.ai/att/<id> replay URL.

3. Context that survives sessions and models

Decisions, constraints, and tasks persist across sessions and across AI assistants โ€” switch from Claude Code to Codex, Cursor, or Gemini CLI without losing the thread.

Memory โ€” persist and recall the why, not just the diff.

npx delimit-cli remember "v1 /users field is frozen until Q3 โ€” downstream billing depends on it"
#   tool: delimit_memory_store
npx delimit-cli recall billing               # local recall over your saved memories (Free)

For semantic recall by meaning across sessions, the assistant calls delimit_memory_search (Pro) directly.

Ledger โ€” one task list, shared across every assistant and session.

delimit_ledger_add        โ†’ record a task/bug/feature/strategic item
delimit_ledger_context    โ†’ session-start: top open items by priority (what's queued)
delimit_ledger_done       โ†’ close with a note (auto-captures a PR URL as ship proof)

That's the loop: gate the change, sign the proof, keep the context. Run it once on a real spec and you've used the whole merge gate.

---

Think and Build

Beyond the merge gate, Delimit orchestrates multi-model deliberation and autonomous builds. delimit think dispatches a strategic question to Claude, Codex, Gemini, and Grok; delimit build activates a background daemon that executes ledger tasks through the gate chain. delimit vault manages local secrets (AES-256).

Works across any configuration, from a single model on a budget to a full panel.

---

Try it in 2 minutes

npx delimit-cli doctor            # 14 prescriptive checks โ€” tells you exactly what to fix
npx delimit-cli status            # Visual dashboard of your entire governance setup
npx delimit-cli simulate          # Dry-run: see what would be blocked before you commit
npx delimit-cli scan              # Instant health grade for your API spec
npx delimit-cli try owner/repo    # Try governance on any GitHub repo

No API keys. No account. No config files.

Pick your first win

Protect my API โ€” catch breaking changes before merge: ```bash npx delimit-cli try

Creates a sample API, introduces breaking changes, shows what gets blocked.

Saves a governance report to delimit-report.md


**Watch for drift** โ€” detect spec changes without review:

npx delimit-cli init # Sets up governance + drift baseline

Weekly drift checks run automatically via GitHub Action


**Run PR copilot** โ€” governance gates on every pull request:

.github/workflows/api-governance.yml

  • uses: delimit-ai/delimit-action@v1

with: spec: api/openapi.yaml

Posts gate status, violations, and remediation in PR comments


---

## What's New

*Gate every AI-assisted invocation. Ship the receipts.*

- **`delimit wrap`** โ€” pipe `claude -p`, `cursor`, `aider`, `codex`, or any AI-assisted CLI through a signed governance gate. Snapshots the git diff before/after, runs lint + tests, HMAC-signs an `att_*` attestation, emits a public replay URL. Advisory by default; `--enforce` blocks CI on policy violations; `--max-time <s>` is a kill switch that tags the attestation as a `liability_incident` and prints a cross-model handoff command.
- **`delimit trust-page`** โ€” renders a directory of attestations into a static HTML trust page + JSON Feed 1.1 feed. Single file, no framework, offline-renderable. Deploy anywhere.
- **`delimit ai-sbom`** โ€” aggregates attestations into a CycloneDX 1.6 bill-of-materials with AI-specific fields (detected models per vendor, tool-call surface, policy gate counts). Pipe straight into procurement.
- **Cross-model by construction** โ€” `wrap` is agnostic to the producer. Same attestation schema whether the pipe upstream is Claude Code, Cursor, Aider, Codex, or Gemini CLI. Switch producers without losing the audit chain.

Gate any AI-assisted CLI

delimit wrap -- claude -p "add tests for payments"

โ†’ att_7d556843c84fb881 signed, replay: https://delimit.ai/att/att_7d556843c84fb881

Kill switch + handoff after 60s wall-clock

delimit wrap --max-time 60 -- cursor edit "refactor auth middleware"

โ†’ if killed: kind=liability_incident

โ†’ suggested: delimit wrap -- claude -p "refactor auth middleware"

Render accumulated attestations as a public trust page

delimit trust-page -o ./trust

โ†’ ./trust/index.html (+ feed.json)

Build a CycloneDX-AI bill of materials

delimit ai-sbom -o ./ai-sbom.json

โ†’ components: 4 models detected, 187 gates run


## Earlier releases

*The highest state of AI governance โ€” earlier features still active.*

- **`delimit doctor`** -- 14 prescriptive diagnostics. Every failure prints the exact command to fix it. `--ci` for pipelines, `--fix` for auto-repair.
- **`delimit simulate`** -- policy dry-run. See what would be blocked before you commit. The `terraform plan` for API governance.
- **`delimit status`** -- visual terminal dashboard. Policy, specs, hooks, CI, MCP, models, memory, ledger, evidence, git branch. `--watch` for live refresh.
- **`delimit report`** -- governance report. `--since 7d --format md|html|json`. Audit-friendly output for PRs and compliance.
- **Memory hardening** -- SHA-256 integrity hash + source model tag on every `remember`. Cross-model trust, verified on every `recall`.
- **Tag-based publishing** -- automated gateway sync, no more version drift between source and npm bundle.

### Multi-Model Deliberation

Run your question through 4 AI models simultaneously. They debate each other until unanimous agreement.

delimit deliberate "Should we build rate limiting in-house or use a managed service?" ```

  Round 1 (independent):
    Claude:  Build in-house. Redis sliding window is 50 lines.
    Gemini:  Build. You already have Redis.
    Codex:   Agree โ€” but add circuit breaker for Redis failures.
    Grok:    Build. Managed service costs $200/mo for 50 lines of code.

  Round 2 (deliberation):
    All models: AGREE

  UNANIMOUS CONSENSUS (2 rounds, confidence 94/100)
  Build rate limiting in-house with Redis + circuit breaker.

3 free deliberations, then BYOK for unlimited. Works with Grok, Gemini, Claude, GPT-4o.

v4.1

  • TUI -- terminal-native Ventures panel, real delimit think and delimit build commands
  • Security hardening -- notify.py stubbed in npm, axios pinned against supply chain attacks
  • Free tier restructure -- deliberations use Gemini Flash + GPT-4o-mini (cost: <$20/mo)
  • Zero-config onboarding -- auto-detect framework, scan, and first evidence in one command
  • Auto-approve tools -- delimit setup configures permissions for Claude Code, Codex, and Gemini CLI

v4.0

  • Toolcard Delta Cache -- SHA256 schema hashing, delta-only transmission, saves tokens
  • Session Phoenix -- cross-model session resurrection with soul capture
  • Handoff Receipts -- structured acknowledgment protocol between agents
  • Cross-Model Audit -- 3 lenses (security, correctness, governance) with deterministic synthesis
  • 4-model deliberation -- Claude + Grok + Gemini + Codex debate until consensus
  • Universal Swarm Triggers -- "Think and Build", "Keep building", "Ask Delimit"
  • Full governance toolkit -- lint, diff, policy, evidence, drift, attestation, and swarm orchestration exposed as MCP tools and CLI subcommands

---

GitHub Action

Zero-config -- auto-detects your OpenAPI spec:

- uses: delimit-ai/delimit-action@v1

Or with full configuration:

name: API Contract Check
on: pull_request

jobs:
  delimit:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: delimit-ai/delimit-action@v1
        with:
          spec: api/openapi.yaml

That's it. Delimit auto-fetches the base branch spec, diffs it, and posts a PR comment with breaking changes, semver classification, migration guides, and governance gate results.

View on GitHub Marketplace | See a live demo (23 breaking changes)

Example PR comment

Breaking Changes Detected | Change | Path | Severity | |--------|------|----------| | endpoint_removed | DELETE /pets/{petId} | error | | type_changed | /pets:GET:200[].id (string -> integer) | warning | | enum_value_removed | /pets:GET:200[].status | warning | Semver: MAJOR (1.0.0 -> 2.0.0) Migration Guide: 3 steps to update your integration ### Governance Gates | Gate | Status | Chain | |------|--------|-------| | API Lint | Pass/Fail | lint -> semver -> gov_evaluate | | Policy Compliance | Pass/Fail | policy -> evidence_collect | | Security Audit | Pass | security_audit -> evidence_collect | | Deploy Readiness | Ready/Blocked | deploy_plan -> security_audit |

---

Adopt with minimum privilege

You don't have to trust a large tool surface on day one. The safe on-ramp:

Phase 1 โ€” read-only governance (free, no account). Start with the tools that only read your repo and write reports: delimit_lint, delimit_diff, delimit_semver, delimit_policy, delimit_explain, delimit_scan, and delimit_seal_verify. If your MCP client supports per-tool allowlists, grant exactly those. Nothing in this set executes, deploys, or posts anywhere.

Phase 2 โ€” opt into side effects deliberately. Tools that write evidence bundles, open PR comments, or run deploys (delimit_security_audit, delimit_deploy_*, agent orchestration) are tier-gated; enable them once phase 1 has earned its keep in your CI.

Pin the Action to a commit SHA. @v1 is a floating tag. For supply-chain-sensitive pipelines, pin the exact commit and bump on review:

- uses: delimit-ai/delimit-action@<commit-sha>   # gh api repos/delimit-ai/delimit-action/git/refs/tags/v1

Keep BYOK keys out of plaintext config. If you bring your own model keys for deliberation, store them with delimit_secret_store (encrypted vault, access-logged via delimit_secret_access_log) rather than in dotfiles.

Our own releases ship under the same discipline: every release carries a signed, replayable Seal receipt (see the latest release assets โ€” verify with npx delimit-cli seal-verify <receipt.json> or at its delimit.ai/att/<id> replay URL), plus SLSA provenance on npm.

---

CLI commands

npx delimit-cli scan                             # Instant spec health grade + recommendations
npx delimit-cli pr owner/repo#123                # Review any GitHub PR for breaking changes
npx delimit-cli quickstart                       # Clone demo project + guided walkthrough
npx delimit-cli try                              # Zero-risk demo โ€” saves governance report
npx delimit-cli demo                             # Self-contained governance demo
npx delimit-cli init                             # Guided wizard with compliance templates
npx delimit-cli init --preset strict             # Initialize with strict policy
npx delimit-cli setup                            # Install into all AI assistants
npx delimit-cli setup --dry-run                  # Preview changes first
npx delimit-cli lint api/openapi.yaml            # Check for breaking changes
npx delimit-cli diff old.yaml new.yaml           # Compare two specs
npx delimit-cli explain old.yaml new.yaml        # Generate migration guide
npx delimit-cli check                            # Pre-commit governance check
npx delimit-cli check --staged --fix             # Check staged files + show guidance
npx delimit-cli hooks install                    # Install git pre-commit hook
npx delimit-cli hooks install --pre-push         # Also add pre-push hook
npx delimit-cli ci                               # Generate GitHub Action workflow
npx delimit-cli ci --strict --dry-run            # Preview strict workflow
npx delimit-cli remember "Redis uses JWT 15min"   # Save a persistent memory
npx delimit-cli recall redis                     # Search memories
npx delimit-cli recall                           # Show recent memories
npx delimit-cli recall --tag deploy --all        # Filter by tag, show all
npx delimit-cli recall --export                  # Export as markdown
npx delimit-cli forget abc123                    # Delete a memory by ID
npx delimit-cli models                            # Configure deliberation API keys (BYOK wizard)
npx delimit-cli models --status                   # Show current model config
npx delimit-cli status                           # Compact dashboard of your Delimit setup
npx delimit-cli doctor                           # Check setup health
npx delimit-cli uninstall --dry-run              # Preview removal
npx delimit-cli wrap -- claude -p "..."          # Gate any AI-assisted CLI + signed attestation
npx delimit-cli wrap --max-time 60 -- codex "..."# With kill switch + handoff on timeout
npx delimit-cli trust-page -o ./trust            # Render attestations into a static trust page
npx delimit-cli ai-sbom -o ./ai-sbom.json        # Build a CycloneDX-AI bill of materials

What the MCP toolkit adds

When installed into your AI coding assistant, Delimit provides tools across two tiers:

Free (no account needed)

  • API governance -- lint, diff, policy enforcement, semver classification
  • Persistent ledger -- track tasks across sessions, shared between all AI assistants
  • Zero-spec extraction -- generate OpenAPI specs from FastAPI, Express, or NestJS source
  • Project scan -- auto-detect specs, frameworks, security issues, and tests
  • Quickstart -- guided first-run that proves value in 60 seconds

Pro

  • Multi-model deliberation -- AI models debate until they agree (free: Gemini Flash + GPT-4o-mini; BYOK: any models)
  • Security audit -- dependency scanning, secret detection, SAST analysis
  • Test verification -- confirms tests ran, measures coverage, generates new tests
  • Memory & vault -- persistent context and encrypted secrets across sessions
  • Evidence collection -- governance audit trail for compliance
  • Deploy pipeline -- governed build, publish, and rollback
  • OS layer -- agent identity, execution plans, approval gates

---

What It Detects

28 change types (17 breaking, 11 non-breaking) -- deterministic rules, not AI inference. Same input always produces the same result.

Breaking Changes

| # | Change Type | Example | |---|-------------|---------| | 1 | endpoint_removed | DELETE /users/{id} removed entirely | | 2 | method_removed | PATCH /orders no longer exists | | 3 | required_param_added | New required header on GET /items | | 4 | param_removed | sort query parameter removed | | 5 | response_removed | 200 OK response dropped | | 6 | required_field_added | Request body now requires tenant_id | | 7 | field_removed | email dropped from response object | | 8 | type_changed | id went from string to integer | | 9 | format_changed | date-time changed to date | | 10 | enum_value_removed | status: "pending" no longer valid | | 11 | param_type_changed | Query param limit changed from integer to string | | 12 | param_required_changed | filter param became required | | 13 | response_type_changed | Response data changed from array to object | | 14 | security_removed | OAuth2 security scheme removed | | 15 | security_scope_removed | write:pets scope removed from OAuth2 | | 16 | max_length_decreased | name maxLength reduced from 255 to 100 | | 17 | min_length_increased | code minLength increased from 1 to 5 |

Non-Breaking Changes

| # | Change Type | Example | |---|-------------|---------| | 18 | endpoint_added | New POST /webhooks endpoint | | 19 | method_added | PATCH /users/{id} method added | | 20 | optional_param_added | Optional format query param added | | 21 | response_added | 201 Created response added | | 22 | optional_field_added | Optional nickname field added to response | | 23 | enum_value_added | status: "archived" value added | | 24 | description_changed | Updated description for /health endpoint | | 25 | security_added | API key security scheme added | | 26 | deprecated_added | GET /v1/users marked as deprecated | | 27 | default_changed | Default value for page_size changed from 10 to 20 | | 28 | field_requirement_relaxed | Required field nickname became optional (context-aware severity) |

---

Policy presets

npx delimit-cli init --preset strict    # All violations are errors
npx delimit-cli init --preset default   # Balanced (default)
npx delimit-cli init --preset relaxed   # All violations are warnings

Or write custom rules in .delimit/policies.yml:

rules:
  - id: freeze_v1
    name: Freeze V1 API
    change_types: [endpoint_removed, method_removed, field_removed]
    severity: error
    action: forbid
    conditions:
      path_pattern: "^/v1/.*"
    message: "V1 API is frozen. Changes must be made in V2."

---

Supported formats

  • OpenAPI 3.0 and 3.1
  • Swagger 2.0
  • YAML and JSON

---

FAQ

How does this compare to Obsidian Mind?

Obsidian Mind is a great Obsidian vault template for Claude Code users who want persistent memory via markdown files. Delimit takes a different approach: it's an MCP server that works across Claude Code, Codex, Gemini CLI, and Cursor. Your memory, ledger, and governance travel with you when you switch models. Delimit also adds API governance (28-type breaking change detection), CI gates, git hooks, and policy enforcement that Obsidian Mind doesn't cover. Use Obsidian Mind if you're all-in on Claude + Obsidian. Use Delimit if you switch between models or need governance.

Does this work without Claude Code?

Yes. Delimit works with Claude Code, Codex (OpenAI), Gemini CLI (Google), and Cursor. The remember/recall commands work standalone with zero config. The MCP server integrates with any client that supports the Model Context Protocol.

Is this free?

The free tier includes API governance, persistent memory, zero-spec extraction, project scanning, and 3 multi-model deliberations. Pro ($10/mo) adds unlimited deliberation, security audit, test verification, deploy pipeline, and agent orchestration. Premium ($50-100/mo) adds priority support and team features. Enterprise is custom: see delimit.ai/pricing.

---

Telemetry & cloud sync

Short version: none by default. Nothing leaves your machine unless you explicitly configure it.

What's always local (source of truth):

  • ~/.delimit/events/events-YYYY-MM-DD.jsonl โ€” per-tool-call events (tool name, timestamp, status, model id, session id, trace id). No source code, no prompts, no responses.
  • ~/.delimit/ledger/ โ€” your ledger items, work orders, deliberation transcripts.
  • ~/.delimit/attestations/ โ€” delimit wrap output bundles.

What's OPT-IN (requires you to provide your own Supabase project credentials):

  • gateway/ai/supabase_sync.py mirrors the local event + ledger + work-order + deliberation rows into a Supabase project you own so you can view them in app.delimit.ai. It only activates if you set SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY environment variables OR provide ~/.delimit/secrets/supabase.json with those credentials. No URL or key is hardcoded in the published package (verify with grep -r aqbdqxnhzqzswdxifksc $(npm root -g)/delimit-cli/ โ€” zero hits).
  • Data scope when enabled: metadata only (tool names, timestamps, IDs, statuses, venture tags). Never source code, prompts, or model responses.

Kill switch: Set DELIMIT_DISABLE_CLOUD_SYNC=1 in your environment to force all sync operations to no-op even if credentials are present. Local files continue to work normally.

# Disable cloud sync for a single invocation
DELIMIT_DISABLE_CLOUD_SYNC=1 delimit lint api/openapi.yaml

# Disable for the shell session
export DELIMIT_DISABLE_CLOUD_SYNC=1

Webhook notifications: gateway/ai/notify.py emits governance events to a webhook endpoint only if you configure DELIMIT_WEBHOOK_URL explicitly. Unset by default.

If you spot another code path that could phone home without disclosure, file an issue. This section is maintained as ship-truth, not aspirational.

---

Links

MIT License

Related MCP servers

Browse all โ†’