Give your AI agents a memory. See it, search it, and watch it self-maintain — all in a beautiful WebUI on your own machine.
Screenshots coming soon — run engraphis-dashboard to see it live.
Dashboard · Inspector · Knowledge Graph · Timeline · Recall · Analytics
pip install "engraphis[server]"
engraphis-dashboardOpens http://127.0.0.1:8700 in your browser. No cloud, no signup, no API key for memory.
Everything lives in a single SQLite file on your machine.
You'll see the full product — a dark-themed, sidebar-navigated dashboard with 11 tabs:
| Tab | What you see |
|---|---|
| Overview | Live memory counts, retention distribution, weekly growth, decay forecast, resolver action mix, most-connected entities |
| Memories | Browse every memory by workspace, sorted by retention — click into a full reader with retention/stability pills |
| Recall | Search across the entire memory bank — each result shows its score breakdown (retention, semantic, lexical, graph, importance, recency) |
| Knowledge Graph | Interactive D3 force-directed graph of entities and their relationships — click any node to see every linked memory |
| Timeline | Chronological feed of every memory event — creation, invalidation, correction, consolidation |
| Consolidate | Run a consolidation sweep on demand — see what got distilled and what got pruned |
| Audit | Full governance ledger — who did what, when, and why |
| Settings | Database stats, license activation (Pro/Team), and system health |
| Chat | Ask questions against your memory — the LLM answers grounded in context |
| Vaults | Manage workspace vaults — create, rename, delete, bulk import |
| Import | Drag & drop or paste markdown files to populate your knowledge base |
The dashboard is powered by the v2 engine — the same MemoryService that backs the MCP server
and the Python library. What you see in the UI is what your agents get.
| Platform | How |
|---|---|
| Windows | Double-click Engraphis Dashboard on your Desktop or Start Menu (install: engraphis-dashboard --install-shortcuts) |
| macOS | Double-click Engraphis Dashboard.app on your Desktop (install: same command) |
| Linux | Desktop entry in Applications → Development (GNOME/KDE/etc.) |
| Any | engraphis-dashboard in a terminal |
For a focused, accessibility-first view of individual memories and their history:
engraphis-inspectorOpens http://127.0.0.1:8710 with:
- Search by query with score breakdown
- Supersession-chain view with word-level diffs — see exactly when a fact changed and why
- Why/timeline/link browsing, proactive recall, consolidation, audit trail
- Keyboard-navigable, ARIA-annotated, light/dark mode via
prefers-color-scheme
Your agents forget everything between sessions. Engraphis fixes that — on your machine. Every new session, your coding agent starts from zero: re-asking which package manager you use, re-learning the codebase, forgetting why you chose PASETO over JWT. Engraphis gives agents durable, scoped, explainable memory.
Under the hood: Ebbinghaus forgetting-curve decay, interaction-aware reinforcement, bi-temporal facts, and hybrid (vector + lexical + graph) recall. The engine is 100% local: SQLite + local embeddings. You bring the LLM only for optional chat/synthesis.
- Local-first & private — runs offline; the core depends only on
numpy. - MCP-native — 18 tools for Claude Code, Cursor, Cline, Zed, Windsurf.
- Self-maintaining facts — writes are deterministically conflict-resolved (no LLM required).
- Principled recall — six-term score over retention, semantic, lexical, graph, importance, recency.
- Bi-temporal truth — contradictions invalidate instead of overwriting (
engraphis_why/engraphis_timeline). - Grounded, not guessed — cited answers or explicit abstain; provenance on every memory.
- Code-aware — AST-powered symbol graph:
engraphis_index_repo→engraphis_search_code. - Sleep-time consolidation — scheduled job distills recurring episodes, reports its compaction.
- Scoped —
workspace → repo → sessionhierarchy.
| Axis | Neocortex | mem0 | Zep | Engraphis |
|---|---|---|---|---|
| Product WebUI (local, no cloud) | ✗ | ✗ | ✗ | ✓ (dashboard + Inspector) |
| Open & self-hostable engine | ✗ | ✓ | partial | ✓ fully open, local-first |
| Forgetting/decay | ✓ | partial | ✗ | ✓ |
| Bi-temporal graph | ✗ | partial | ✓ | ✓ |
| Native multi-repo model | ✗ | ✗ | ✗ | ✓ (unique) |
| Code-aware (AST/symbol graph) | ✗ | ✗ | ✗ | ✓ (unique) |
| MCP-native for coding agents | ✗ | ✓ | ✗ | ✓ |
pip install "engraphis[all]" # dashboard + MCP server + code graph + everything
pip install "engraphis[server]" # dashboard + REST API
pip install "engraphis[mcp]" # MCP server only
pip install engraphis # core library — numpy only, fully offlineFirst run downloads
all-MiniLM-L6-v2(~80 MB). Without it, the engine falls back to a deterministic offline embedder so it always runs.
pip install "engraphis[server]"
engraphis-dashboard # → http://127.0.0.1:8700
engraphis-dashboard --install-shortcuts # → Desktop + Start Menu iconspip install "engraphis[mcp]"
engraphis-init # writes .env + prints config snippets
claude mcp add engraphis -- engraphis-mcpYour agent now has 18 tools — remember, recall (grounded + proactive), why, timeline, forget, pin, correct, ingest, consolidate, index_repo, search_code, link, record_event, start/end_session, stats. See the MCP tools table below.
from engraphis.service import MemoryService
mem = MemoryService.create("engraphis.db")
mem.remember("Auth migrated from JWT to PASETO.", workspace="acme", repo="api")
hit = mem.recall("why did we change auth?", workspace="acme", repo="api")
print(hit["context"])The same MemoryService backs the dashboard, the Inspector, and the MCP server.
The engine, dashboard, Inspector, MCP server, and governance tools are free and Apache-2.0, permanently. A license key (verified offline — no phone-home) unlocks the paid layer.
⚠️ Pro and Team are coming soon — not available for purchase yet. Features below are built and gated but keys are not sold today. Do not pay anyone for an Engraphis license right now. Prices are targets, not live.
| Free (available now) | Pro — coming soon | Team — coming soon | |
|---|---|---|---|
| Dashboard WebUI + Inspector | ✓ | ✓ | ✓ |
| Memory engine + 18 MCP tools | ✓ | ✓ | ✓ |
| Analytics dashboard (growth, retention, decay forecast) | ✓ | ✓ | |
| Compliance export (full bi-temporal JSON dump) | ✓ | ✓ | |
| Multi-user Inspector: logins, roles, seat management | ✓ | ||
| Analytics HTML report export (self-contained, shareable) | ✓ | ||
| Priority support | ✓ | ✓ |
| Category | Tool | What it does |
|---|---|---|
| Write | engraphis_remember |
Store a fact; deterministically resolved (add/reinforce/supersede) |
| Write | engraphis_record_event |
Append a lightweight episodic log entry |
| Write | engraphis_link |
Explicitly connect two related memories |
| Read | engraphis_recall |
Hybrid vector + lexical + graph recall |
| Read | engraphis_recall_grounded |
Cited answer from retrieved memories — or abstain |
| Read | engraphis_recall_proactive |
"What should I know right now" — no query needed |
| Read | engraphis_why |
Current answer + what it superseded |
| Read | engraphis_timeline |
Full bi-temporal history, oldest first |
| Code | engraphis_index_repo |
Parse a repo into the code symbol graph |
| Code | engraphis_search_code |
Find symbols by name, with callers |
| Governance | engraphis_forget |
Retire a memory — bi-temporal close, never deleted |
| Governance | engraphis_pin |
Exempt from future automatic decay/pruning |
| Governance | engraphis_correct |
Replace content without losing history |
| Session | engraphis_start_session / engraphis_end_session |
Session lifecycle with cross-session handoff |
| Ops | engraphis_stats |
Memory counts for health checks |
All via environment (or .env):
| Env Var | Default | Description |
|---|---|---|
ENGRAPHIS_DB_PATH |
./engraphis.db |
SQLite database file |
ENGRAPHIS_HOST |
127.0.0.1 |
Server bind address |
ENGRAPHIS_PORT |
8700 |
Dashboard port |
ENGRAPHIS_API_TOKEN |
— | If set, REST API requires Authorization: Bearer <token> |
ENGRAPHIS_EMBED_MODEL |
all-MiniLM-L6-v2 |
sentence-transformers model |
ENGRAPHIS_LLM_PROVIDER |
openai |
openai | anthropic | google | openrouter |
ENGRAPHIS_LLM_API_KEY |
— | LLM API key (only for chat/synthesis) |
ENGRAPHIS_LICENSE_KEY |
— | Pro/Team key (or ~/.engraphis/license.key) |
See .env.example for the full list.
engraphis/
├── engraphis/
│ ├── core/ # v2 engine — interfaces, store, recall, scoring, schema
│ ├── backends/ # pluggable embedder / vector index / reranker / codegraph
│ ├── service.py # validated MemoryService facade
│ ├── mcp_server.py # MCP server — 18 tools
│ ├── dashboard_app.py # dashboard WebUI (FastAPI)
│ ├── config.py / app.py # env settings / REST server
│ └── static/ # dashboard frontend
├── eval/ # offline retrieval eval harness + datasets
├── tests/ # pytest suite (offline, numpy-only core)
├── scripts/ # start_dashboard, inspector, cli, init, consolidate
├── Dockerfile / docker-compose.yml
└── pyproject.toml
The offline quality gate (no network, no API key):
pip install numpy pytest ruff
python -m pytest tests/ -q
python -m eval.harness --dataset eval/datasets/sample.jsonl --k 5
python -m eval.harness --dataset eval/datasets/codemem.jsonl --k 5
python -m eval.ablation
ruff check .Numbers, not assertions: the offline harness is a correctness floor (deterministic embedder).
LoCoMo / LongMemEval competitive numbers run separately with a real embedder — see
BENCHMARKS.md.
Apache-2.0 — see LICENSE and NOTICE. "Engraphis" is a trademark of the Engraphis project; the license does not grant trademark rights.