Atheneum
Embedded graph database for agent coordination — episodic memory, knowledge persistence, and session accountability across coding sessions.
Part of the grounded-coding ecosystem. Used as the storage layer inside envoy.
Ecosystem
grounded-coding ── install + Claude Code plugin (skills, hooks, MCP)
│
├── magellan ── code graph indexer (symbols, call graph, CFG)
├── llmgrep ── semantic code search over magellan graphs
├── mirage ── CFG analysis (paths, loops, dominance)
├── splice ── span-safe refactoring
│
├── envoy ── HTTP coordination server (messaging, agent registry)
│ └── atheneum ◀── YOU ARE HERE
│ └── sqlitegraph ── SQLite graph engine
│
└── envoy-hook ── Claude Code hook binary (session + tool call logging)
Atheneum is the persistence layer. It stores what agents discovered, what sessions did, what tasks exist, and what knowledge is worth keeping — so the next agent doesn't start from scratch.
Install
Atheneum is a library. Production use is via agent-envoy which exposes all endpoints over HTTP (envoy binary). Direct embedding is for custom runtimes.
Quickstart
use AtheneumGraph;
use Path;
let graph = open?;
// Record a session
graph.record_session?;
// Store a discovery
use json;
graph.store_discovery?;
// Query recent sessions for a project
let sessions = graph.query_sessions?;
for s in &sessions
// Ingest a wiki article
let content = "---\ntitle: My Note\n---\n# My Note\nSee also [[Related Concept]].\n";
graph.ingest_wiki_page?;
What It Stores
| Domain | Types |
|---|---|
| Sessions | start, end, tool calls, file writes, commits, test runs, cost |
| Discoveries | facts, decisions, bugs, invariants — scoped by project |
| Knowledge | wiki pages, journal sections, wikilinks |
| Planning | tasks, requirements, blockers, kanban state |
| Handoffs | inter-agent state transfers with manifests |
| Ontology | class/property schemas for typed entity reasoning |
| Memory | keyed memories with scope, confidence, project scoping |
| Dream | reflective consolidation pass over memories (merge, deduplicate, promote) |
| Search index | FTS5 full-text + HNSW lexical index (hash-projected tokens, not neural) |
HTTP Access
When embedded in envoy, all atheneum operations are accessible over HTTP:
# Query recent sessions
# Store a discovery
# Get recent project context (for session bootstrap hooks)
See envoy's API.md for the full HTTP reference.
HopGraph
HopGraph is atheneum's retrieval model: embeddings find the door, graph walk retrieves the room.
- A text query is embedded and matched against the lexical index to find entry-point entities.
- From each hit, a BFS walk expands the subgraph — following only allowed edge types (e.g.,
Explains,Wikilink). - The result is truncated to a token budget so it fits in a context window.
use ;
use Path;
let graph = open?;
// Token-budgeted HopGraph query — walk only Explains + Wikilink edges
let views = graph.hopgraph_query?;
for view in &views
// Switch to neural embeddings (requires ollama + nomic-embed-text)
Discovery Consolidation
// Merge all Discovery entities for a target into a single Knowledge entity
let knowledge_id = graph.consolidate_discoveries?;
// Consolidate all targets at once
let results = graph.consolidation_pass?;
for in &results
Bridge Wiki to Code Symbols
// Link wiki [[wikilinks]] to magellan-indexed code symbols
graph.link_wiki_to_symbols?;
Features
| Feature | Default | Description |
|---|---|---|
default |
✓ | Core graph, wiki, sessions, planning, search |
semantic-search |
✓ | HNSW vector index for search (disable for pure lexical/graph traversal) |
neural-embed |
— | Ollama neural embeddings (requires ureq, ollama + nomic-embed-text) |
web |
— | Web dashboard (axum + askama templates) |
cli |
— | atheneum CLI binary |
async |
— | Async runtime support |
CLI
INGEST:
init <db> Initialize a new graph database
sync-wiki <db> <dir> [project] Ingest .md files as wiki pages
sync-journal <db> <dir> [project] Ingest .md files as journal sections
sync-logseq <db> <root> [project] Recursively ingest Logseq pages/ and journals/
sync-claude-transcript <db> <jsonl> [project] [agent] Import Claude transcript
store-discovery <db> <agent> <type> <target> [meta.json] Store a discovery
add-edge <db> <from> <to> <edge-type> [data.json] Create a relation
TASKS:
task-create <db> <title> [desc] [--project P] Create a new task
task-list <db> [--project P] [--status S] List tasks (default: non-archived)
task-update <db> <task-id> <status> Update task status
task-done <db> <task-id> Mark task as DONE
task-archive <db> <task-id> Archive a task
MEMORY:
memory-store <db> <key> <content> [--scope S] [--confidence N] [--project P] Store a memory
memory-get <db> <key> [--scope S] [--project P] Retrieve memory by key
memory-list <db> [--scope S] [--project P] [--offset N] [--limit N] List memories (paginated, default limit 1000)
DREAM:
dream <db> [--scope S] [--project P] [--dry-run|--auto-merge] Reflective memory consolidation
QUERY & NAVIGATION:
search <db> <query> [--k N] [--project P] [--max-tokens N] HNSW/lexical search
navigate <db> <query> [--k N] [--depth N] [--project P] [--kind K] [--max-tokens N] Search then walk subgraphs
query-wiki <db> <path> Query a wiki page by path
query-journal <db> <path> Query journal sections by path
query-knowledge <db> <target> [--project P] [--max-tokens N] Aggregated knowledge
query-sessions <db> [--project P] [--offset N] [--limit N] Session history
query-events <db> [--session <id>] [--type <t>] [--offset N] [--limit N] Event log
list-pages <db> [--project P] [--offset N] [--limit N] List wiki pages (default limit 1000)
entity <db> <id> Print entity as JSON
edge <db> <id> Print edge as JSON
neighbors <db> <id> [--depth N] One-hop edges or BFS subgraph
graph-stats <db> Graph topology counts
MAINTENANCE:
reindex <db> Rebuild HNSW search index
consolidate <db> [target] [--project P] Merge discoveries into Knowledge
sync-logseq recursively ingests <wiki-root>/pages/**/*.md as wiki pages and
<wiki-root>/journals/**/*.md as journal sections. Wiki [[links]] become
first-class wikilink graph edges so navigate and neighbors can traverse article
relationships.
sync-claude-transcript imports a local Claude Code transcript JSONL into Atheneum's
session graph. It records prompt/chat summaries, observed tool calls, accessed
file edges for Read/Edit/Write, and session token/cache totals. Re-running the
command on the same append-only transcript imports only new lines.
Requirements
- Rust 1.75+
- SQLite 3.35+ with JSON1 (bundled via rusqlite)
Related
- envoy — HTTP server exposing atheneum over REST
- grounded-coding — Claude Code plugin using this ecosystem
- magellan — code graph indexer
- sqlitegraph — underlying SQLite graph engine
License
GPL-3.0-only — see LICENSE.