Repository navigation
Implementation Status
Christian Pojoni edited this page Apr 27, 2026
·
2 revisions
This page maps Karta's current implementation to major memory-layer capabilities.
Karta already implements an embedded agent memory substrate:
- durable memory notes
- vector + graph storage
- hybrid retrieval
- LLM-assisted write-time enrichment
- typed/weighted graph links
- background dreaming/consolidation
- contradiction objects
- procedural rules
- access-based forgetting
- MCP tools
- SQLite migrations/health
- synthetic retrieval evals
Karta does not yet implement a full Graphify-style codebase/document KG pipeline:
- no tree-sitter AST graph extraction
- no hypergraph model
- no RDF/OWL/SPARQL/Cypher layer
- no Neo4j/Memgraph backend
- no multimodal ingestion
- no generic graph query MCP tool
| Capability | Status | Notes |
|---|---|---|
| Persistent notes | Done |
MemoryNote with id/content/context/keywords/tags/embedding/status/provenance/access stats. |
| Vector search | Done | Lance-backed vector store. |
| Graph metadata | Done | SQLite graph store for links, dreams, episodes, profiles, rules, contradictions. |
| Hybrid retrieval | Done | ACTIVATE pipeline: ANN + facts + profiles + Hebbian + BFS + ACT-R + rerank + RRF. |
| Session sequence memory | Done |
follows links + PAS temporal retrieval. |
| LLM write enrichment | Done | Context, keywords, tags, atomic facts, foresight signals, link decisions. |
| Deterministic extraction | Partial | Markdown, JSON, YAML, Cargo.toml extractors. No AST/PDF/OCR/audio. |
| Dream consolidation | Done | Consolidation, deduction, induction, abduction, contradiction, episode digest, cross-episode digest. |
| Contradictions | Done | First-class lifecycle: open/resolved/ignored; prefer/merge/supersede/dismiss. |
| Forgetting | Partial | Access-based note decay, deprecate/archive, protected observed/profile/episode notes. Semantic link decay currently returns unsupported warning (links_decayed = null). |
| Procedural rules | Done | Safe retrieval/prompt actions only; no arbitrary mutation/code execution. |
| MCP server | Done |
add_note, search, ask, get_note, note_count, dream, get_links. Rust API method behind dream is run_dreaming. |
| OAuth HTTP server | Done | Axum + OAuth/OIDC + bearer/session auth. |
| Schema migrations | Done | SQLite schema metadata, applied/pending migrations, health checks. |
| Eval harness | Done | Synthetic memory eval + benchmark docs. |
| Codebase KG | Missing | No tree-sitter/function/class/import graph yet. |
| Graph query language | Missing | No Cypher/SPARQL/Gremlin or generic graph pattern query. |
| Hypergraphs | Missing | Edges are pairwise typed/weighted links. |
| Formal ontology | Missing | No RDF/OWL/SKOS/JSON-LD. |
| Multimodal memory | Missing | No built-in OCR/vision/audio ingestion. |
flowchart LR
App[Agent or app] --> MCP[MCP / CLI / Rust API]
MCP --> Karta[Karta core]
Karta --> Write[Write engine]
Karta --> Read[Read engine]
Karta --> Dream[Dream engine]
Karta --> Forget[Forget engine]
Karta --> Rules[Rules engine]
Write --> LLM[LLM provider]
Read --> LLM
Dream --> LLM
Write --> Vector[(Lance vector store)]
Read --> Vector
Write --> Graph[(SQLite graph store)]
Read --> Graph
Dream --> Graph
Forget --> Vector
Forget --> Graph
Rules --> Graph
| Type | Karta representation |
|---|---|
| Episodic | Notes with session metadata, episodes, episode digests, follows links. |
| Semantic | Context/keywords/tags/atomic facts + semantic links. |
| Procedural |
ProceduralRule objects with conditions/actions. |
| Reflective | Dream notes, digests, contradictions, inferred notes. |
| Temporal | Access history, last accessed time, session sequence links, ACT-R BLL. |
| Prospective | Foresight signals with TTL/expiry. |
| Object | Purpose |
|---|---|
MemoryNote |
Primary memory unit. |
AtomicFact |
Fine-grained extracted fact with parent note. |
ForesightSignal |
Future-relevant signal with validity window. |
DreamRecord / DreamRun
|
Background inference/consolidation output. |
Contradiction |
First-class conflict object. |
ProceduralRule |
Safe symbolic rule that modifies retrieval/answer behavior. |
Episode / EpisodeDigest
|
Session/episode grouping and summary. |
flowchart TD
Query --> Embed[Embed query]
Embed --> Classify[Classify query mode]
Classify --> A[Anchor: ANN notes/facts/profiles/foresight]
A --> C[Co-activation: weighted graph neighbors]
A --> I[Integration: multi-hop BFS]
A --> T[Temporal: ACT-R BLL]
A --> PAS[PAS: session sequence walk]
C --> Pool[Candidate pool]
I --> Pool
T --> Pool
PAS --> Pool
Pool --> Rerank[Vector/cross-encoder rerank]
Rerank --> RRF[RRF aggregate]
RRF --> Answer[Answer synthesis]
Answer --> Trace[Trace access + Hebbian writeback]
| Store | Contents |
|---|---|
| Lance vector store | Notes, embeddings, vector search metadata. |
| SQLite graph store | Links, evolution history, dreams, cursor, foresight, profiles, episodes, atomic fact metadata, digests, episode links, rules, contradictions, schema metadata. Uses journal_mode=DELETE, not WAL. |
- personal/agent memory
- research memory
- chat/session recall
- project context memory
- contradiction-aware recall
- long-running assistant memory substrate
- MCP-backed memory tool for coding/research agents
- codebase graph analysis like Graphify
- formal ontology/semantic-web storage
- graph database analytics
- multi-modal memory ingestion
- arbitrary graph query service