Skip to content

Implementation Status

Christian Pojoni edited this page Apr 27, 2026 · 2 revisions

Implementation Status

This page maps Karta's current implementation to major memory-layer capabilities.

Summary

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 Matrix

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.

System Shape

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
Loading

Implemented Memory Types

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.

Main Data Objects

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.

Retrieval Detail

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]
Loading

Storage Detail

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.

Current Best Use Cases

  • 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

Current Weak Use Cases

  • codebase graph analysis like Graphify
  • formal ontology/semantic-web storage
  • graph database analytics
  • multi-modal memory ingestion
  • arbitrary graph query service

Clone this wiki locally