| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Index your notes and files, then recall anything — with citations and a sense of time. 100% on your machine. No cloud. No account. No data leaving your laptop. Just npx @jnmetacode/engram.
npx @jnmetacode/engram ingest ~/notes
npx @jnmetacode/engram recall "what did I decide about pricing"English | 简体中文
Your notes, journals, and docs are a second brain you can't query. Hosted "AI memory" tools want you to upload all of it to their cloud. engram is the opposite: it builds a searchable memory on your machine and never phones home.
npx @jnmetacode/engram ingest ~/notes ~/journal # index markdown, text, PDF, HTML …
npx @jnmetacode/engram recall "auth bug clock skew" # ranked passages, with citations
npx @jnmetacode/engram recall "hiring" --since week # time-aware: only recent memories
npx @jnmetacode/engram ask "summarize my pricing decisions" # (optional) local LLM answerEvery result tells you exactly where it came from — file:line and the date — so you can trust it and jump to the source.
Supported files: Markdown, text, org, rst, PDF, HTML, and EPUB — all via zero-dependency extractors. PDF/EPUB extraction is best-effort: text-based files work great; scanned (image-only), encrypted, or custom-CID-font PDFs and DRM'd EPUBs may extract poorly.
# index some notes (markdown, txt, org, rst …)
npx @jnmetacode/engram ingest ~/Documents/notes
# …or keep it live — re-indexes automatically as you edit
npx @jnmetacode/engram watch ~/Documents/notes
# recall — lexical + temporal, fully offline
npx @jnmetacode/engram recall "postgres migration plan"
npx @jnmetacode/engram recall "standup notes" --since 7d --limit 5
# optional: semantic recall + answers via a LOCAL Ollama
npx @jnmetacode/engram ingest ~/notes --embed # one-time, computes embeddings
npx @jnmetacode/engram recall "that idea about caching" --semantic
npx @jnmetacode/engram ask "what are my open questions about auth?"
# housekeeping
npx @jnmetacode/engram status
npx @jnmetacode/engram forget old-projectNew here? examples/ has three sample notes and a 30-second walkthrough you can run against this repo — ingest → recall → temporal filter.
files ──chunk──▶ memory store (one local JSON file)
│ each chunk: text · source:line · timestamp · term-freqs · [embedding]
recall(query) ─────┤
├─ BM25 lexical score (always on, offline)
├─ semantic cosine (optional, local Ollama)
└─ temporal recency + filter (the part most tools miss)
→ ranked, cited passages
The store is a plain JSON file (default ~/.engram/store.json). Back it up, inspect it, delete it — it's yours.
npx @jnmetacode/engram serve # http://127.0.0.1:7077 (local only)curl -s localhost:7077/remember -d '{"text":"Ship date is 2026-07-01"}'
curl -s localhost:7077/recall -d '{"query":"ship date"}'The open, local alternative to a hosted agent-memory service. Point your agent at it and its memories stay on your machine, with the same temporal ranking.
engram speaks the Model Context Protocol over stdio, so Claude Desktop / Claude Code can use your memory as a tool — engram_recall, engram_remember, engram_reinforce, engram_status. Add to claude_desktop_config.json (or a project .mcp.json):
{
"mcpServers": {
"engram": {
"command": "npx",
"args": ["-y", "@jnmetacode/engram", "mcp"]
}
}
}Works in any MCP client — same JSON, different config file:
| Client | Where the config lives |
|---|---|
| Claude Desktop | claude_desktop_config.json |
| Claude Code | project .mcp.json (or the plugin: /plugin marketplace add jnMetaCode/local-agent-toolkit) |
| Cursor | .cursor/mcp.json (project) or ~/.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Cline | cline_mcp_settings.json |
| Zed | settings.json → context_servers |
(Check your client's MCP docs for the exact key names — the command/args pair above is the same everywhere.)
Now the model can recall your notes and persist new memories mid-conversation — all locally. Zero dependencies, no SDK: it's a few hundred lines of pure Node implementing JSON-RPC over stdio (spec revision 2025-06-18).
Recall gets better the more you use it. When a recall surfaces the right answer, say so:
npx @jnmetacode/engram recall "staging deploy fails"
npx @jnmetacode/engram reinforce "staging deploy fails" deploy-notes.mdengram records "queries like this are answered by that source" (plain, inspectable data in your store file) and gives the source a bounded boost on similar future queries. It re-orders relevant results only — it can never resurrect a non-matching one — and forget drops a source's feedback with it. Agents can do this for themselves via the engram_reinforce MCP tool: verify an answer, reinforce it, and the shared memory gets sharper with every task (see the self-evolve skill).
engram never ships your data anywhere. For semantic recall it talks to a local Ollama:
ollama pull nomic-embed-text # embeddings
ollama pull llama3.2 # for `engram ask`Without Ollama, engram still works great in lexical + temporal mode.
| engram ingest <path...> | index files/folders (--embed for semantic) |
| engram watch <path...> | index, then auto-reindex on change (live memory) |
| engram recall <query> | cited passages (--since, --until, --limit, --semantic) |
| engram ask <query> | compose an answer from memory (needs Ollama) |
| engram reinforce "<q>" <src> | self-improving recall: confirm which source answered a query |
| engram status | what's stored |
| engram forget <substr> | remove memories by source |
| engram serve | local memory API (HTTP) for agents |
| engram mcp | run as an MCP server (stdio) for Claude/agents |
Early MVP. Lexical + temporal recall, citations, ingest/forget, incremental re-index, live watch mode (auto-reindex on change), the local agent API, an MCP server (stdio), PDF + HTML + EPUB ingestion (zero-dep extractors), and optional Ollama embeddings/answers all work today. Roadmap: a SQLite store for large vaults. Star/watch to follow along.
Part of a small, local-first, zero-dependency toolkit for building AI agents — see the toolkit overview & end-to-end recipe:
MIT — see LICENSE.
| Back | FazBrowse Home | New Git URL |