Cross-project graph memory for Claude Code. Full-text search, temporal validity, private scoping. No embeddings, no API calls, no cloud.
The problem
Claude Code is stateless across sessions. Every new conversation starts from zero, even if you've explained the same architectural constraints a dozen times.
Repeated context
Pasting the same system prompt across sessions is error-prone, wastes tokens, and still misses project-specific nuance.
Lost decisions
Architectural choices made last month aren't visible to Claude in a new session. The rationale disappears with the chat.
No cross-project knowledge
Lessons learned in one codebase (API quirks, team conventions, known gotchas) never transfer to sibling projects.
Features
Facts save as observations on canonical nodes, connected by typed edges. The graph persists across every Claude Code session and project in one local SQLite store.
Every fact records when it became valid. Stale facts are explicitly invalidated or superseded by a newer one. No silent auto-expiry, and history stays inspectable.
SQLite FTS5 with BM25 ranking retrieves exactly the facts Claude needs, with optional one-hop graph expansion to surface linked context.
SessionStart and PostCompact hooks inject the most relevant facts automatically. No manual command, zero configuration.
Facts scope to global, project, or private. The project ID is derived automatically from your working directory. Nothing to register or configure.
One SQLite file at ~/.claude/orchestra-memory/graph.db, with daily rotating backups (last 7 days kept). No embeddings, no API calls, no telemetry.
How it works
Install the plugin from the Claude Code marketplace. Hooks and the bundled MCP server activate automatically—no init step, no configuration.
Just tell Claude what to remember. It calls memory_save (or the wisdom_add wrapper) itself to distill the fact and store it as an observation.
Claude uses memory_link to connect facts with typed, free-form relations. Saving a correction can supersede the outdated fact instead of duplicating it.
A SessionStart hook injects the most relevant facts when a session begins. Claude can also call memory_search (FTS5/BM25) or memory_traverse on demand.
Comparison
| Feature | orchestra-memory | Raw CLAUDE.md | Cloud vector DB |
|---|---|---|---|
| Cross-project memory | |||
| Temporal validity | |||
| Full-text search | |||
| Local / offline | |||
| Zero API keys | |||
| Graph relationships | |||
| MIT license |
✓ = full support · – = partial · ✗ = not available
Ecosystem
Two open-source Claude Code plugins designed to work together. Run either one standalone, or install both for automatic cross-session wisdom.
orchestra-memory
Cross-project graph memory
orchestra
Multi-agent orchestration · 8 agents
Install
No accounts, no configuration files, no API keys.
$ claude plugin marketplace add josefkrajkar/cc-orchestra
$ claude plugin install orchestra-memory@orchestra $ claude plugin list
Node.js ≥ 22.16 is required. orchestra-memory uses the built-in node:sqlite module, which requires Node 22.16 or later — no extra database driver needed. After install, nothing else is required: hooks and the bundled MCP server activate automatically.
FAQ