Code graph.
Memory.
Knowledge.
One binary.
The system of record for your codebase — the record every plane (crew · garden · studio) queries before it acts and writes after. One local-first MCP server, 29 tools across 3 domains. What breaks if you change it, the decision behind it, the doc that explains it — including the injected edges grep never sees. Every fact stamped with confidence and provenance: a heuristic is never handed to an agent as a fact.
Zero infrastructure by default — one SQLite file, nothing leaves your box. And it earned the job: its hybrid retrieval is parity-benchmarked in the open against the dedicated search system it replaced.
One continuous record — five bands, one symbol identity.
The agent doesn't grep. It edits in an IDE that knows your whole system.
The same record crew, garden, and studio query before they act and write after — here shown the way an agent works it. Right-click a symbol for every caller, click a class for its whole picture, trace the requirement it satisfies, recall the decision behind it, pull the wiki, see the blast radius — what an agent can do while editing when it reads the record instead of grepping. Code intelligence, memory and knowledge, every answer a live fact with confidence + provenance; drop the dial and the low-confidence guesses fall out, labeled — never silently promoted.
1export class {2 (cart, coupon) {3 const price = cartTotal(cart)4 return clamp(price - coupon.value, 0)5 }6}Five bands. One record. One symbol identity.
Not a pile of scanners — a single continuous body, cut into bands. Each keyed to the same stable (scheme, qualified-name) that survives reformatting, moves, and re-index.
Symbols, calls, imports, heritage — tree-sitter extraction across 103 wired languages. Languages are data, not code: a new one is a manifest row + a query file, zero core change.
The relationships grep never sees — event→consumer, command→agent — injected by plain-TOML ExtraEdge rules. A new domain edge type is a rule block, zero Rust; blast-radius crosses the event-bus boundary.
Episodic, semantic, procedural — captured under scopes, recalled on a token budget, distilled by reflection. Erasable by subtree: one call hard-deletes everything under a scope prefix. Erasability is governance.
Docs and wiki as retrievable nodes with typed, confidence-scored relations — linked to the code symbols they describe. Hybrid FTS + vector recall, RRF-fused, benchmarked in the open.
Every edge carries {confidence, provenance, resolved_by}. When tiers disagree, the highest wins and the losers are superseded — a 0.3 tag-scan guess is never handed to an agent as a 1.0 fact.
Code graph · injected edges · memory · knowledge · provenance — one binary, every fact stamped with confidence and provenance.
29 MCP tools. 6 agent skills. One binary.
Not one “search” tool bolted onto a repo — the full MCP surface every plane calls, plus the skills (playbooks) that drive them. The graph domain is the code graph; memory and knowledge are where the wicked-brain consolidation landed — one store, one identity, a lossless import contract so nothing tuned was dropped; and the proposal queue — the memory domain's governance surface — is where agents propose and humans promote. Grounded to 0.16.6.
The MCP surface is how agents read it. The CLI ships the long tail.
Thirty-three subcommands in the same binary, against the same record: a watch mode that re-indexes as you edit, a precise SCIP tier, multi-repo federation, IaC drift against live Terraform state, drop-in language plugins. No sidecar, no daemon farm — one wicked-estate.
Every edge carries where it came from.
No edge ships without confidence, provenance and resolved_by. When the same (source, target, kind) edge is proposed by several tiers, the highest tier wins — a 0.3 tag-scan guess is never presented as a 1.0 fact.
The right-hand label lights when its tier is the one in scope.
SQLite by default. One profile switch to a shared team backend.
The engine's store path — the CLI, indexing, the full graph surface — runs on either backend through one open_store(spec) factory: no caller changes, no re-index, and the Postgres backend passes the same store-conformance suite in CI. The WICKED_RUNTIME=team profile seam retargets it with one environment variable. The MCP server — the 29 tools — is SQLite-only today: under the team profile it fails loud at startup instead of silently falling back to local; Postgres for the MCP surface is the named follow-up. Local-first is a feature, not a ceiling.
What v0.15.0 ships.
The release this page is grounded to. Two shipped changes to the record itself, the accepted design for the next resolution consumer, and the runbook for bringing a 0.14.x graph across. Full detail: the CHANGELOG.
Definitions now nest under their owning type — Repo#save()., not a module-flat save(). — so same-named definitions in one module no longer collapse into a single node that calls then “resolved” into at 0.65. Rust impl methods, Go receiver methods, Ruby singleton members, and C++ out-of-line members all move from module-flat to type-nested.
ADR-002 (amendment) →“Built-ins always win” is repealed. A drop-in plugin can now override a built-in language: query-only — a manifest plus your .scm on the shipped grammar, no shared library — or a full grammar swap behind an explicit double opt-in (override = true + WICKED_ESTATE_PLUGIN_OVERRIDE). Patch a query gap locally without waiting for a release.
ADR-010 →The sanctioned consumer for the in-tree LSP client library, defined so bulk routing can’t happen by accident: edit-plane queries (exactly one file · line · col) go LSP-first, and a missing server warns and serves graph results — never a silent substitution; understand-plane queries (blast radius, lineage, search) never consult LSP. Phase-0 fixes (transport timeout, didOpen) landed with the ADR; implementation is the W3.6 lane.
ADR-009 →Scheme 3 re-mints definition ids, so each previously-indexed repo is fully re-extracted on its next index — two per-repo gates, loud on stderr, crash-idempotent. No schema migration: the database file opens unchanged; rows rebuild. Re-run scip and --embeddings, and re-inject overlay edges after.
docs/MIGRATION-0.15.md →One surface. One control plane.
One catalog. One record.
Four planes, four contracts. Hover or tab through a plane to see its role and what crosses its seams — every cross-plane interaction goes through the contract, never around it.
Brainstorm it, build it under a check nothing self-approves, then produce the doc, deck or demo.
Evaluator ≠ creator — no agent grades its own homework. “Done” is re-derived from evidence, never asserted.
Multi-model review councils, graph-aware refactors, repo playbooks — plus an open naming contract to ship your own pack.
A 102-language code graph, memory, and knowledge in one binary (MCP) — including the injected edges grep never sees.
Doc storage and lineage, HTML/PDF/PPTX rendering, demo recording. crew proxies it — you depend on it, you don’t visit it.
Zero to a queried record in two minutes.
Interactive: pick estate (and any siblings), choose your agent CLIs, and it wires everything and ships the cross-family wicked CLI.
Use an absolute DB path — clients launch from an unpredictable working directory. Same 29 tools in Claude Code, Antigravity, Codex, OpenCode, and Pi.