Skip to main content
Glama

delapan

The grounding engine behind context-aware AI tooling. Capture intent, ground every answer in a maintained knowledge base, and fill gaps from the web on demand — ground → grow → answer.

delapan runs fully local (SQLite + sqlite-vec, no cloud, no account) or behind your own storage via a small Store protocol. It ships as an MCP server, so any MCP client (Claude Code, etc.) can use it out of the box.

Install as a Claude Code plugin

Requires uv (curl -LsSf https://astral.sh/uv/install.sh | sh).

claude plugin marketplace add anthonysuherli/delapan
claude plugin install delapan@delapan

First launch materializes the Python environment (via uv) and seeds a bundled demo KB. With zero keys configured you can immediately run /delapan:projects and /delapan:resume against the demo (project delapan, kb demo). To unlock semantic search and web research on your own repos, copy .env.example to .env in the plugin directory and set AI_GATEWAY_API_KEY (plus TAVILY_API_KEY for /delapan:explore).

Skills: /delapan:resume, /delapan:search, /delapan:explore, /delapan:ingest, /delapan:backlog, /delapan:projects, /delapan:model.

Related MCP server: Grounded Code MCP

Quickstart — local, no credentials

pip install "delapan[local]"

# MCP server for Claude Code / any MCP client (resume, search, explore, projects)
python -m delapan.mcp.server

# or a loopback HTTP API on 127.0.0.1 (health, projects, KG read/write,
# findings, synopsis, resume, explore-over-SSE under /api/*)
python -m delapan.api.main

MCP tools: delapan_resume (tap a KB → resume card), delapan_search (semantic recall over findings), delapan_explore (gap-fill from the web, needs LLM + Tavily keys), delapan_backlog (ranked gap/sparse queries the KB was asked and couldn't answer), delapan_projects (cross-repo discovery). KG co-design seam: delapan_propose_kg_schemadelapan_set_kg_schema (draft a target ontology from the findings, then validate + persist the approved version) and delapan_build_graph / delapan_get_kg_schema (build the graph steered by the intent schema; compare intent vs emergent ontology).

# the engine, on SQLite, with no cloud creds:
from delapan.store import get_store
from delapan.mcp.tenancy import resolve_tenant

ctx = resolve_tenant("my-repo", "main", create=True)   # tenant on the local store
store = get_store()
print(store.count_findings(ctx.kb_id))

The local tier stores everything in ~/.delapan/delapan.db (override with DELAPAN_DB_PATH). No Supabase, no API key, loopback-only.

Status: the engine core (grounding, exploration, findings, KB/project persistence), the Store seam, the MCP server, and the local HTTP API (/api/* — mirrors the MCP surface plus KG read/write for a control-panel frontend) all run on SQLite today — see Roadmap.

What's inside

Capability

Module

Coverage-banded grounding — score how well the KB covers a query

core/agent/

Gap-fill exploration — plan → search → crawl → extract → merge

core/exploration/

Write-time resolution — ADD/UPDATE/NOOP/SUPERSEDE a candidate finding against its KB before persisting; nothing is ever deleted, only retired (bi-temporal valid_from/invalidated_at/superseded_by)

core/memory/

Knowledge graph — entities + relations over findings

core/knowledge_graph/

Canvas surface/canvas/search (SSE: ephemeral web candidates + grounded streamed answer) and /canvas/keep (resolver-gated persistence returning ADD/UPDATE/NOOP/SUPERSEDE events)

delapan/api/routes_canvas.py + delapan/core/canvas/

Pluggable storageStore protocol; ships SQLite, plus a Supabase/pgvector backend

store/

MCP server

mcp/

Plugin launcher — uv-run wrapper; materializes the environment on first run and starts the MCP server

scripts/mcp-server.sh

Claude Code skills — seven skills backing the /delapan:* slash commands (resume, search, explore, ingest, backlog, projects, model)

skills/

Bundled demo KB — seeded on first local server start so /delapan:projects + /delapan:resume work with zero keys

data/demo.db

First-run onboarding — KB-not-found guidance card + demo-KB seeding

delapan/mcp/onboarding.py

Public /api auth — config-forked bearer auth (Supabase JWT) + beta gate for the hosted tier; auth: none keeps the local tier byte-identical

delapan/api/auth.py

Eval harness — closed-book/production/oracle ablation, HHEM faithfulness, retrieval + verdict-calibration metrics, paired stats, reproducible run artifacts (python -m evals run); benchmark adapters for watsonxDocsQA + MultiHop-RAG (python -m evals.adapters.)

evals/

Project tracking

Solo initiative status and prioritized backlog live in docs/tracking/ (markdown source of truth). See the design spec.

Automatic sync

  • Local: .git/hooks/post-commit (installed from .githooks/post-commit) runs scripts/tracking_sync.py after commits that touch docs/tracking/.

  • CI: GitHub Action tracking-sync mirrors on push (needs secrets SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY).

Manual:

uv run python scripts/tracking_sync.py --dry-run
uv run python scripts/tracking_sync.py

Findings, KBs, and projects are not separate submodules — that persistence lives inside the Store implementations themselves (store/sqlite.py, store/supabase.py), behind the one Store protocol below.

Architecture — the storage seam

The engine never imports a storage client directly. It calls get_store(), which returns a backend selected by DELAPAN_BACKEND (local | cloud, auto-detected from creds when unset). Ship a new backend by implementing store/base.py::Store.

from delapan.store import get_store

store = get_store()          # SQLiteStore on the local tier
findings = store.match_findings(kb_id, embedding, limit=10)

Every write to findings goes through core/memory/persist.py::resolve_and_persist, not straight to insert_findings — a resolver decides per candidate whether it's genuinely new, refines an existing finding, merely corroborates one, or contradicts one, and applies that via the Store's update_finding/invalidate_finding/ supersede_finding primitives. Set memory.enabled: false in config.yaml to fall back to plain append-only ADD. scripts/dedup_backfill.py retires duplicates already sitting in an existing KB (dry-run by default); scripts/calibrate_bands.py recalibrates the coverage-band thresholds above for whichever embedding model is active. Schema changes for this land in migrations/ (cloud tier only — SQLite migrates itself in-process).

The open-core distribution ships the SQLite backend, at parity with the cloud Supabase/pgvector backend for both retrieval and the write-resolution path above.

Configuration

Copy .env.example and fill the local block (the cloud block is optional and only needed for a self-hosted multi-tenant deployment):

cp .env.example .env

Development

python3.11 -m venv .venv
.venv/bin/pip install -e ".[dev,local]"
pytest && ruff check .

Status & roadmap

Working today (verified on SQLite, no cloud deps):

  • The Store seam — get_store()SQLiteStore; tenancy, project listing, findings, synopsis, KG.

  • The engine core — agent (preamble/synopsis/resume), exploration, memory (resolver + persist), knowledge_graph models.

  • The tenancy gateway — resolve_tenant() resolves a local tenant through the store.

  • The MCP server — delapan_resume / delapan_search / delapan_explore / delapan_backlog / delapan_projects / delapan_archive (whole package imports; all 6 tools register and run).

  • python -m delapan.api.main/health plus the /api/* surface: projects, per-KB graph read/write (nodes/edges CRUD, stats, schema), findings list/get/delete, synopsis, resume, explore over SSE, and canvas search/keep over SSE. CORS allows control-panel dev origins (:5173); scripts/seed_demo_kb.py seeds a credential-free demo KB to point a frontend at.

  • Canvas phase 1/canvas/search (streamed candidates + grounded answer) and /canvas/keep (resolver-gated persistence) landed; includes two loud-failure fixes: explore now fails the run on provider quota/error (Tavily HTTP 432, etc.), and synopsis rebuild routes via gateway with status reporting (rebuilt/skipped/failed).

  • Hosted-tier backend auth (build order phase 1 of the public-release design)api.auth: none | supabase config fork; local JWT verification against SUPABASE_JWT_SECRET (delapan/api/auth.py), beta_members gate, org-scoped tenancy dependencies; slowapi rate limiting keyed by verified subject; an RLS audit script covering all 29 tenant tables; a two-user isolation acceptance test; build_combined_app() (delapan/mcp/cloud_server.py) serves REST /api beside the MCP server for a single Fly deploy. The local tier is unaffected (auth: none default).

  • Eval pipeline — v1 ablation harness landed (spec: docs/truenorth/specs/2026-07-26-context-eval-pipeline-design.md); phase 2: LongMemEval adapter for externally comparable numbers.

  • Claude Code plugin shell — shipped in-repo, marketplace-installable (2026-07-26): scripts/mcp-server.sh (uv-run launcher), seven skills under skills/ backing the /delapan:* slash commands, a bundled demo KB (data/demo.db, project delapan/kb demo) seeded on first local start, and first-run onboarding (delapan/mcp/onboarding.py). Zero-key surface is /delapan:projects + /delapan:resume against the demo; AI_GATEWAY_API_KEY (plus TAVILY_API_KEY) unlocks search/explore on real repos.

Next:

  • Public release phases 2–3: frontend auth screens, /app guard + waitlist gate, landing/legal pages, GitHub OAuth, custom SMTP, Sentry/uptime/analytics wiring, and the Fly deploy of the combined MCP+REST app — none of this is done yet (see the spec's build order).

  • The capture HTTP route (mirror the remaining MCP-adjacent surface over FastAPI).

  • Concepts, drift, deepen, bridges, monitoring, user-profile, research reports, and the broader MCP tool surface.

  • Store-route or gate the remaining cloud-coupled surfaces (userprofile, generic knowledge_graph/builder) — currently [cloud]-gated at call-time.

LLM-backed features need keys — exploration: TAVILY_API_KEY + AI_GATEWAY_API_KEY (the gateway covers LLM calls and embeddings; OPENAI_API_KEY is only the embeddings fallback), synopsis rebuild: ANTHROPIC_API_KEY. Browse/tenant/persistence work without them.

License

AGPL-3.0-or-later. Self-host freely; network-deployed modifications must be shared under the same license. For commercial / non-AGPL licensing, contact the maintainer.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.

  • Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.

  • Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/anthonysuherli/delapan'

If you have feedback or need assistance with the MCP directory API, please join our Discord server