State of the vault · internal report

Shared, governed memory for the team and its AI agents.

Railway + PyPIWindow: v0.2.0 → v0.5.0
01 · Current state

Where things stand today

Health and scale. The live tiles below refresh from the running node each time this page loads; the rest are dated measurements, and the line under them says when each was taken.

v0.5.0
deployed on Railway
—
GitHub org sync
12
releases shipped (v0.1.0 → v0.5.0)
24
MCP tools for agents
~$23–$58/mo
Self-host; mostly RAM, not a fixed bill
Seat + Node
per agent. Central stays in sync
System healthfrom /api/state
Node
Checking
Version
v0.5.0
Sources
—
Indexing
—

Live tiles pull from /api/state. MCP tools refresh on every load. Releases are as of v0.5.0, 2026-08-14.

Self-host cost is mostly RAM: 24h 2026-08-17 about $23; 7-day 2026-08-14 about $58. Not a ceiling; method in the bench harness.

02 · Shipped & live

What you can use right now

The capabilities that are in production today. The three you'll touch most are session sharing, autonomous capture, and Linear sync.

Shared Session Context

SessionEnd distills how you approached a problem into a private Session Trace. Hit a dead end worth flagging? citadel_share_session shares a redacted, compacted version to a shared dataset.

  • reference-only
  • never promotes

Autonomous ingestion

A git pre-push hook and Claude Code SessionEnd hook snapshot work to your Node. Both are fail-silent. A scheduled evolve cycle folds GitHub, Linear, and repo content into the graph.

  • hooks
  • scheduled evolve

Linear sync

The full workspace syncs to Central; issues assigned to you mirror into your Node as a Seat-Scoped Mirror, so an agent answers "what do I need to do?" from your memory.

  • workspace → Central
  • yours → Node

Knowledge Mesh & portal

A web UI renders org knowledge as a concept map and a live sync/search/ingest timeline. Portal Phase 1: paste your token, land on My Node (stats, checklist, deep links).

  • Pixel Bastion brand
  • caller-scoped
▸How Shared Session Traces actually workGo deeper

Shipped in v0.4.0. The goal: let the team learn from each other's dead ends without exposing anyone's raw private working memory.

  • Explicit only. SessionEnd always writes a private Node trace (light tier). Sharing is a deliberate call (citadel_share_session or POST /api/share-session) and requires an Approved Capture Root (server-side cwd check).
  • Compact Session Context. The client distills + redacts the trace; the server runs an LLM dead-end refinement only when real tool-error pairs exist, then dual-writes to your Node and the shared session-traces dataset.
  • Deferred cognify (~5–15 min, coalesced): sharing doesn't block the tool call, and your private Node memory is never enriched.
  • Trust demotion. Default citadel_search includes traces with a reference-only tag. Traces never promote to Central and never feed the daily improve loop.
▸The autonomous ingestion pipelineGo deeper

Zero per-session ceremony. Three capture paths feed your Node; one scheduled cycle keeps Central fresh.

Capture (→ your Node)

  • git pre-push hook: a commit-metadata snapshot on every push from an Approved Capture Root.
  • SessionEnd hook: distills a coding session and posts it to your seat. Reuses the one token you already set. HTTPS-only, refuses redirects, fail-silent.
  • citadel capture: summarizes each approved root (git metadata + README, never raw files).

Evolve (→ Central, scheduled)

  • GitHub org digest + repo content sync + Linear sync run as staged subprocesses, then cognify runs in-loop on the web service, the single Kuzu writer. Default interval is six hours (evolve_interval_seconds).
03 · Changelog

v0.2.0 → v0.5.0

Every tag shipped to PyPI and deployed to Railway. Expand any release for its full notes.

▸v0.5.02026-08-14 · latestAsync ingest, dataset-scoped graph, and capture deny globs.
  • Async ingest is the default: citadel ingest and MCP citadel_ingest return once the Node stores the note (queued_not_confirmed). Inline cognify is opt-in.
  • Dataset-scoped graph and chunk reads: /api/mesh/graph?dataset= narrows the graph before the node cap. /api/documents/{id}?scope=chunk returns the clicked chunk's own text.
  • Capture deny globs: org defaults now apply at ingest and pre-push, so a path such as .env is refused rather than JSON-only.
  • Public stamp: shipped pages and citadel --version report v0.5.0. Self-host cost stays ~$38/mo.
▸v0.4.12026-08-06Indexing repair, retrieval gates, and the Next migration boundary.
  • Indexing repair safety: zero-chunk and oversized-document census and repair paths, journaled phases, rollback, source-backed recovery, and a cross-process repair lease.
  • Retrieval verification: chunk-budget enforcement, frozen benchmark fixtures, literal-ranking checks, and failure gates for transport and trust.
  • Next migration groundwork: reproducible static export, runtime build identity, and functional search, sources, and graph previews behind /next.
  • Release controls: package artifact checks, DCO and secret scanning, stable CI aggregation, and operational diagnostics.
▸v0.4.02026-07-22Shared team memory, the seat portal, and a real brand.
  • Shared Session Traces v1: explicit in-session share via MCP + /api/share-session; Compact Session Context, reference-only in search, deferred cognify.
  • Multi-agent policy on onboard: the same agent policy installed to AGENTS.md, Cursor, Windsurf, GEMINI.md, and Claude Code.
  • Seat portal Phase 1: members log in and land on "My Node" with doc counts, activity, and a checklist.
  • Pixel Bastion brand + analytics panels: CLI mark, README banner, favicon, dashboard chrome; CSP-safe charts.
  • Security: Obsidian vaults enforce ownership; /api/knowledge/events and /feedback are now caller-scoped; pip-audit CI gate.
▸v0.3.02026-07-16Read-side privacy release + graph legibility.
  • Mesh read isolation: graph, activity, and document drill-down are caller-scoped; seat presence stays universal.
  • Knowledge Mesh reads as a concept map: per-hub aggregation, human labels, drill-down, kind-filter legend.
  • citadel activity: dev-side view of your vault; --watch and a --global seat-presence board.
  • Agent-onboarding hardening: seat-bound token mandate, headless SKILL runbook, --json error parity.
▸v0.2.2 – v0.2.32026-07-02 · 07-07Onboarding & token friction, removed.
  • Seat-bound token minting: token create --seat inherits the seat's role and private dataset; interactive picker replaces the service-account footgun.
  • citadel token set + citadel update: rotate a token or self-update without re-running onboard; stale-shell auth hints tell you the actual fix.
▸v0.2.0 – v0.2.12026-06-29Top-to-bottom CLI DX overhaul (PyPI + Railway).
  • Seat-scoped ingest that works: ingest/search HTTP-backed by default and routed to your seat; inline cognify makes notes searchable immediately.
  • First-run onboarding + multi-tool MCP: citadel mcp add wires Cursor, Codex, Gemini, Windsurf; guided first run; citadel doctor repairs setup drift.
  • Seat / token commands + faster status: concurrent health checks; the old TUI folded into citadel status.
  • Evolve cadence 6h → 1h: GitHub / Linear / repo sync + cognify now run hourly.
04 · The road ahead

What's next

Some of this is still in design. Nothing here is claimed as a PyPI release unless it has a version in the history above.

In design
In design

GitHub App: PR context and verifying checks

A GitHub App that injects relevant vault context into pull requests and posts a verifying check on each PR, kept in sync with Linear and the other connectors, so a review sees the same knowledge an agent would. Check runs and annotations carry exact context, not a hand-wavy summary. Not built yet.

In design

Search you can measure

Make retrieval honest and repeatable: frozen fixtures in citadel bench, published latency and recall numbers, and fixes for documents that are accepted but not reachable (#228) and tail recall (#247). The harness exists. The full benchmark run and the indexing fixes are still open.

In design

Structured Knowledge Citadel owns

Durable, first-class Structured Knowledge pages as the source of truth on live storage, with the vector index demoted to a rebuildable projection. Contradictions surface as conflicts, not silent overwrites. citadel lint guards orphans and near-duplicates. Bench and lint are companions, not afterthoughts.

In design

Evidence and provenance

Capture-time fingerprints on every retrieved item, a claim-level contradiction ledger, and export packages a third party can verify without trusting the node. This is the evidence layer after search quality and Structured Knowledge land. Per-item attestation and disagreement detection are not shipped yet.