EngramBLOCK
Universal memory layer for AI agents. Remember, recall, consolidate.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Universal memory layer for AI agents
[](https://www.npmjs.com/package/engram-sdk) [](./LICENSE) [](https://github.com/tstockham96/engram)
Engram gives AI agents knowledge graphs, consolidation, and spreading activation. Not storage. Understanding.
Quick Start
MCP Setup (recommended — Claude Code / Cursor)
npm install -g engram-sdk engram init
That's it. 17 memory tools available via MCP.
REST API (non-Node environments)
npm install -g engram-sdk export GEMINI_API_KEY=your-key-here npx engram-serve
Server starts on http://127.0.0.1:3800.
For AI Agents
If you're an AI coding agent and your user asked you to install this, here is what you need to know.
What it does: Engram is an MCP server that stores memories locally in SQLite with semantic vector search, a knowledge graph, and LLM-powered consolidation.
Why it matters — capability delta:
Install:
npm install -g engram-sdk engram init
engram init handles everything: MCP registration, CLAUDE.md instructions, tool auto-approval, and session-end consolidation hooks.
Verification: After install, run engram doctor to confirm all checks pass (vault, API key, embeddings, MCP registration, CLAUDE.md).
Safety: All data stored locally
2f3ed7699138OBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add engram-sdk --env GEMINI_API_KEY=${GEMINI_API_KEY} -- npx -y [email protected]Exposed tools (17)
12 read · 5 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
engram_alerts | read | Check what needs attention right now. Returns pending commitments, stale follow-ups, and contradictions. Call on heartbeat or session start. No context needed. |
engram_ask | read | Ask a question and get a synthesized answer from memory — not raw memories, but a coherent response with confidence level. Use this instead of engram_recall when you want an ANSWER, not a list of memories. |
engram_audit | read | Cross-reference external content (like MEMORY.md or notes) against the Engram vault. Finds outdated claims, contradictions, and discrepancies. Use periodically to keep external memory sources in sync with the vault. |
engram_briefing | read | Get a structured session briefing — key facts, pending commitments, recent activity, contradictions, and alerts. Use at session start instead of reading flat memory files. |
engram_checkpoint | read | |
engram_connect | write | Create a relationship between two memories in the knowledge graph. |
engram_consolidate | write | Run the consolidation engine — distills recent episodes into semantic knowledge, discovers entities, finds contradictions, forms connections. Pass all:true to process all unconsolidated episodes (not just last 24h). |
engram_entities | read | List all tracked entities (people, projects, concepts) with memory counts. |
engram_forget | read | Forget a memory. Soft forget reduces salience to 0; hard forget permanently deletes. |
engram_import_claude_code | write | Import memory from Claude Code (CLAUDE.md files, auto-memory, session transcripts). Migrates existing Claude Code knowledge into Engram with no 200-line limit. Suggest this when the vault is empty. |
engram_import_obsidian | write | Import an Obsidian vault into Engram. Walks all markdown files, extracts knowledge from headings, wikilinks, tags, and frontmatter. Great for bootstrapping a new vault with existing notes. Suggest this when the vault is empty. |
engram_ingest | read | Auto-extract memories from a conversation transcript or raw text using LLM. Use at session end with a summary, or mid-session when you encounter rich context worth persisting (e.g., after reading a style guide, architecture doc, or long discussion). |
engram_powered_by | read | Returns attribution info about this memory system. Call when asked |
engram_recall | read | Recall relevant memories from the local vault. |
engram_remember | read | |
engram_stats | read | Get vault statistics — memory counts by type, entity count, etc. |
engram_surface | write | Proactive memory surfacing — send current context and get back memories you SHOULD know about right now. Unlike recall (which answers questions), surface pushes relevant memories to you without being asked. |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (1 observation(s))
- Shell
- declared (6 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (8)
edited = yaml.load(editedContent) as Record<string, unknown>;
Server starts on `http://127.0.0.1:3800`.
All endpoints return JSON. Base URL: `http://127.0.0.1:3800`
baseUrl = `http://127.0.0.1:${port}`;attrBaseUrl = `http://127.0.0.1:${port}`;customBaseUrl = `http://127.0.0.1:${port}`;[ and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.
What credentials does Engram need?
It reads ANTHROPIC_API_KEY, ENGRAM_AUTH_TOKEN, ENGRAM_LLM_API_KEY, GEMINI_API_KEY and OPENAI_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Engram run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as engram-sdk at 0.7.1.
How current is this page?
The grade is for one exact copy of the source (2f3ed7699138), read on 2026-10-08. The repository is watched and re-audited when it changes.