[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-205":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":9,"totalLinesOfCode":9,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":9,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":9,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":16,"starSnapshotCount":16,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},205,"engram","Gentleman-Programming\u002Fengram","Gentleman-Programming","Persistent memory system for AI coding agents. Agent-agnostic Go binary with SQLite + FTS5, MCP server, HTTP API, CLI, and TUI.",null,"https:\u002F\u002Fgithub.com\u002FGentleman-Programming\u002Fengram","Go",4263,507,42,49,0,171,932,87.12,false,"main","2026-06-11 04:00:18","\u003Cp align=\"center\">\n  \u003Cimg width=\"1024\" alt=\"Engram — One Brain. Local or Cloud.\" src=\"assets\u002Fbranding\u002Fengram-banner.png\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>Persistent memory for AI coding agents\u003C\u002Fstrong>\u003Cbr>\n  \u003Cem>One brain. Local or cloud. Agent-agnostic, single binary, zero dependencies.\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"docs\u002FINSTALLATION.md\">Installation\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002Fengram-cloud\u002FREADME.md\">Engram Cloud\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002FAGENT-SETUP.md\">Agent Setup\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002FCODEBASE-GUIDE.md\">Codebase Guide\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002FARCHITECTURE.md\">Architecture\u003C\u002Fa> &bull;\n  \u003Ca href=\"docs\u002FPLUGINS.md\">Plugins\u003C\u002Fa> &bull;\n  \u003Ca href=\"CONTRIBUTING.md\">Contributing\u003C\u002Fa> &bull;\n  \u003Ca href=\"DOCS.md\">Full Docs\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n> **engram** `\u002Fˈen.ɡræm\u002F` — *neuroscience*: the physical trace of a memory in the brain.\n\nYour AI coding agent forgets everything when the session ends. Engram gives it a brain.\n\nA **Go binary** with SQLite + FTS5 full-text search, exposed via CLI, HTTP API, MCP server, and an interactive TUI. Works with **any agent** that supports MCP — Claude Code, OpenCode, Gemini CLI, Codex, VS Code (Copilot), Antigravity, Cursor, Windsurf, or anything else.\n\n```\nAgent (Claude Code \u002F OpenCode \u002F Gemini CLI \u002F Codex \u002F VS Code \u002F Antigravity \u002F ...)\n    ↓ MCP stdio\nEngram (single Go binary)\n    ↓\nSQLite + FTS5 (~\u002F.engram\u002Fengram.db)\n```\n\n## Quick Start\n\n### Install\n\n```bash\nbrew install gentleman-programming\u002Ftap\u002Fengram\n```\n\nWindows, Linux, and other install methods → [docs\u002FINSTALLATION.md](docs\u002FINSTALLATION.md)\n\n### Setup Your Agent\n\n| Agent | One-liner |\n|-------|-----------|\n| Claude Code | `claude plugin marketplace add Gentleman-Programming\u002Fengram && claude plugin install engram` |\n| OpenCode | `engram setup opencode` |\n| Gemini CLI | `engram setup gemini-cli` |\n| Codex | `engram setup codex` |\n| VS Code | `code --add-mcp '{\"name\":\"engram\",\"command\":\"engram\",\"args\":[\"mcp\"]}'` |\n| Cursor \u002F Windsurf \u002F Any MCP | See [docs\u002FAGENT-SETUP.md](docs\u002FAGENT-SETUP.md) |\n\nFull per-agent config, Memory Protocol, and compaction survival → [docs\u002FAGENT-SETUP.md](docs\u002FAGENT-SETUP.md)\n\nThat's it. No Node.js, no Python, no Docker. **One binary, one SQLite file.**\n\n## How It Works\n\n```\n1. Agent completes significant work (bugfix, architecture decision, etc.)\n2. Agent calls mem_save → title, type, What\u002FWhy\u002FWhere\u002FLearned\n3. Engram persists to SQLite with FTS5 indexing\n4. Next session: agent searches memory, gets relevant context\n```\n\nFull details on session lifecycle, topic keys, and memory hygiene → [docs\u002FARCHITECTURE.md](docs\u002FARCHITECTURE.md)\n\n## MCP Tools (19)\n\n| Category | Tools |\n|----------|-------|\n| **Save & Update** | `mem_save`, `mem_update`, `mem_delete`, `mem_suggest_topic_key` |\n| **Search & Retrieve** | `mem_search`, `mem_context`, `mem_timeline`, `mem_get_observation` |\n| **Session Lifecycle** | `mem_session_start`, `mem_session_end`, `mem_session_summary` |\n| **Conflict Surfacing** | `mem_judge`, `mem_compare` |\n| **Utilities** | `mem_save_prompt`, `mem_stats`, `mem_capture_passive`, `mem_merge_projects`, `mem_current_project`, `mem_doctor` |\n\nFull tool reference with parameters → [DOCS.md#mcp-tools-19-tools](DOCS.md#mcp-tools-19-tools)\n\n## Terminal UI\n\n```bash\nengram tui\n```\n\n\u003Cp align=\"center\">\n\u003Cimg src=\"assets\u002Ftui-dashboard.png\" alt=\"TUI Dashboard\" width=\"400\" \u002F>\n  \u003Cimg width=\"400\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F0308991a-58bb-4ad8-9aa2-201c059f8b64\" \u002F>\n  \u003Cimg src=\"assets\u002Ftui-detail.png\" alt=\"TUI Observation Detail\" width=\"400\" \u002F>\n  \u003Cimg src=\"assets\u002Ftui-search.png\" alt=\"TUI Search Results\" width=\"400\" \u002F>\n\u003C\u002Fp>\n\n**Navigation**: `j\u002Fk` vim keys, `Enter` to drill in, `\u002F` to search, `Esc` back. Catppuccin Mocha theme.\n\n## Git Sync\n\nShare memories across machines. Uses compressed chunks — no merge conflicts, no huge files.\n\nLocal SQLite remains the source of truth. Cloud integration is opt-in replication.\n\n```bash\nengram sync                    # Export new memories as compressed chunk\ngit add .engram\u002F && git commit -m \"sync engram memories\"\nengram sync --import           # On another machine: import new chunks\nengram sync --status           # Check sync status\n```\n\nFull sync documentation → [DOCS.md](DOCS.md)\n\n## Cloud Integration (Opt-In Replication)\n\nCloud is optional. Local SQLite stays authoritative; cloud is replication\u002Fshared access only.\n\n**Recommended first path (local smoke):**\n\n```bash\ndocker compose -f docker-compose.cloud.yml up -d\nengram cloud config --server http:\u002F\u002F127.0.0.1:18080\nengram cloud enroll smoke-project\nengram sync --cloud --project smoke-project\n```\n\nCloud mode is always project-scoped (`--project` is required; `engram sync --cloud --all` is intentionally blocked).\nKnown repairable cloud sync\u002Fupsert\u002Fcanonicalization failures keep the original error visible and recommend the explicit `doctor`\u002F`repair` flow below; Engram never auto-applies repair from sync or autosync.\nFor blocked cloud sync, `transport_failed`, or legacy session directory repair, see [Engram Cloud Troubleshooting](docs\u002Fengram-cloud\u002Ftroubleshooting.md).\nIf cloud sync stays blocked after `doctor`\u002F`repair`, download the rescue helper and run the recommended exported-row repair:\n\n```bash\ntools\u002Frepair-missing-session-directory.sh --apply --interactive --fix-exported \u003Cproject>\nengram sync --cloud --project \u003Cproject>\n```\n\n`--fix-exported` repairs local exported `sessions[].directory` and `observations[]` required fields that can still break the final push after `doctor` reports ready. For sequential legacy `sync_mutations` blockers, use `tools\u002Frepair-missing-session-directory.sh --apply --interactive --all \u003Cproject>`.\n\n**After upgrading `engram` while an MCP client is already running:**\n\n```bash\nengram setup claude-code\n```\n\nThen restart Claude Code so it reloads the Engram MCP subprocess and refreshed hook\u002Fconfig files. Updating the `engram` binary on disk does not replace an already-running stdio MCP process.\n\n**Upgrade flow for existing local databases** (diagnose → repair → bootstrap → status):\n\n```bash\nengram cloud upgrade doctor --project smoke-project        # read-only readiness check\nengram cloud upgrade repair --project smoke-project --dry-run\nengram cloud upgrade repair --project smoke-project --apply\nengram cloud upgrade bootstrap --project smoke-project     # resumable enroll + push + verify\nengram cloud upgrade status --project smoke-project        # stage\u002Fclass\u002Freason\n```\n\nSee [DOCS.md — Cloud upgrade flow](DOCS.md#cloud-upgrade-flow) for the full state machine.\n\nFor authenticated mode, upgrade flow, dashboard behavior, reason codes, and full runtime\u002Fenv details:\n\n- [Engram Cloud docs landing](docs\u002Fengram-cloud\u002FREADME.md)\n- [Engram Cloud quickstart](docs\u002Fengram-cloud\u002Fquickstart.md)\n- [DOCS.md — Cloud CLI reference](DOCS.md#cloud-cli-opt-in)\n- [DOCS.md — Cloud Autosync](DOCS.md#cloud-autosync)\n\n## Steps to Test (Beta — Phases 2+3+4)\n\nTry the new memory-conflict-surfacing features in **complete isolation** from your existing engram setup. Docker uses non-default ports + a separate data dir + a beta-only token, so your prod cloud and `~\u002F.engram\u002F` are untouched. Cleanup is one command.\n\n**What's in the beta**:\n- 🔄 Cloud sync of conflict relations cross-machine\n- 🔍 `engram conflicts` CLI + HTTP API for retroactive audit + scan\n- 🧠 `--semantic` scan that uses **your existing Claude Code or OpenCode CLI** to judge FTS5 conflict candidates with LLM reasoning — **$0 if you're on a Pro\u002FMax\u002FPlus subscription**\n\n### Setup (4 commands)\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FGentleman-Programming\u002Fengram.git engram-beta-repo\ncd engram-beta-repo && git checkout feat\u002Fmemory-conflict-surfacing-cloud-sync\ndocker compose -f docker-compose.beta.yml up -d\ngo build -o .\u002Fengram-beta .\u002Fcmd\u002Fengram\n\n# Isolated env (does NOT touch ~\u002F.engram or your prod cloud)\nexport ENGRAM_DATA_DIR=\u002Ftmp\u002Fengram-beta-data\nexport ENGRAM_CLOUD_SERVER=http:\u002F\u002F127.0.0.1:28080\nexport ENGRAM_CLOUD_TOKEN=beta-token-CHANGE-ME-please-32chars\nmkdir -p \"$ENGRAM_DATA_DIR\"\n```\n\n### Use cases\n\n**1️⃣ Phase 1 — Conflict detection on save (sanity)**\n\n```bash\n.\u002Fengram-beta save \\\n  \"Use Clean Architecture\" \\\n  \"Layers: entities, use cases, adapters.\" \\\n  --type architecture --project beta-test\n\n.\u002Fengram-beta save \\\n  \"Use Hexagonal Architecture\" \\\n  \"Ports and adapters separate domain from infra.\" \\\n  --type architecture --project beta-test\n```\n\n✅ Second save returns `candidates[]` with the first memory's id.\n\n**2️⃣ Phase 2 — Cloud sync of relations cross-machine**\n\n```bash\n.\u002Fengram-beta cloud enroll beta-test\n.\u002Fengram-beta sync --cloud --project beta-test\n.\u002Fengram-beta cloud status\n\n# Simulate a \"second machine\"\nENGRAM_DATA_DIR=\u002Ftmp\u002Fengram-beta-data-2 .\u002Fengram-beta cloud enroll beta-test\nENGRAM_DATA_DIR=\u002Ftmp\u002Fengram-beta-data-2 .\u002Fengram-beta sync --cloud --project beta-test\nENGRAM_DATA_DIR=\u002Ftmp\u002Fengram-beta-data-2 .\u002Fengram-beta search \"Architecture\"\n```\n\n✅ The \"second machine\" sees memories synced from the first.\n\n**3️⃣ Phase 3 — Admin CLI + HTTP API**\n\n```bash\n.\u002Fengram-beta conflicts list --project beta-test\n.\u002Fengram-beta conflicts stats --project beta-test\n.\u002Fengram-beta conflicts scan --project beta-test --dry-run\n.\u002Fengram-beta conflicts scan --project beta-test --apply --max-insert 10\n\n# In another terminal: .\u002Fengram-beta serve\ncurl -s \"http:\u002F\u002F127.0.0.1:7437\u002Fconflicts?project=beta-test\" | jq\n```\n\n✅ List\u002Fscan\u002Fstats return sensible data.\n\n**4️⃣ Phase 4 — Semantic LLM-judge (the killer feature) 🎯**\n\n```bash\nexport ENGRAM_AGENT_CLI=claude   # or opencode\n\n.\u002Fengram-beta conflicts scan --project beta-test --semantic --apply \\\n  --max-semantic 5 --concurrency 3 --yes\n```\n\n✅ Your agent's LLM judges semantic similarity. **$0 if on a subscription**.\n\n**5️⃣ The case where FTS5 finds a candidate, then the LLM judges meaning**\n\nLexically related candidate titles with a semantic conflict:\n\n```bash\n.\u002Fengram-beta save \\\n  \"Use Postgres for the user database\" \\\n  \"Postgres 15 is our SQL store for users.\" \\\n  --type architecture --project beta-test\n\n.\u002Fengram-beta save \\\n  \"Replace the user database with MongoDB\" \\\n  \"Document store now backs the user collection. SQL is gone.\" \\\n  --type decision --project beta-test\n\n.\u002Fengram-beta conflicts scan --project beta-test --semantic --apply \\\n  --max-semantic 5 --yes\n\n.\u002Fengram-beta conflicts list --project beta-test --status judged\n```\n\n✅ FTS5 supplies the candidate pair through shared title terms like `user` \u002F `database`; the LLM then judges whether it is `supersedes` \u002F `conflicts_with`. `--semantic` does not discover totally lexically unrelated pairs on its own.\n\n### Cleanup (zero residue)\n\n```bash\ndocker compose -f docker-compose.beta.yml down -v\nrm -rf \u002Ftmp\u002Fengram-beta-data \u002Ftmp\u002Fengram-beta-data-2 .\u002Fengram-beta\n```\n\nYour production engram is fully untouched throughout.\n\n### Full guide + troubleshooting\n\n→ [docs\u002FBETA_TESTING.md](docs\u002FBETA_TESTING.md)\n\n→ Report feedback: [issues with `beta-phase-2-3-4` label](https:\u002F\u002Fgithub.com\u002FGentleman-Programming\u002Fengram\u002Fissues)\n\n## CLI Reference\n\n| Command | Description |\n|---------|-------------|\n| `engram setup [agent]` | Install agent integration |\n| `engram serve [port]` | Start HTTP API (default: 7437) |\n| `engram mcp [--tools=PROFILE]` | Start MCP server (stdio transport) |\n| `engram tui` | Launch terminal UI |\n| `engram search \u003Cquery>` | Search memories |\n| `engram save \u003Ctitle> \u003Cmsg>` | Save a memory |\n| `engram timeline \u003Cobs_id>` | Chronological context |\n| `engram context [project]` | Recent session context |\n| `engram stats` | Memory statistics |\n| `engram export [file]` | Export to JSON |\n| `engram import \u003Cfile>` | Import from JSON |\n| `engram sync` | Git sync export\u002Fimport |\n| `engram cloud \u003Csubcommand>` | Opt-in cloud config\u002Fstatus\u002Fenrollment + cloud runtime (`serve`) |\n| `engram projects list\\|consolidate\\|prune` | Manage project names |\n| `engram obsidian-export` | Export to Obsidian vault (beta) |\n| `engram version` | Show version |\n\nFull CLI with all flags → [docs\u002FARCHITECTURE.md#cli-reference](docs\u002FARCHITECTURE.md#cli-reference)\n\n## Documentation\n\n| Doc | Description |\n|-----|-------------|\n| [Installation](docs\u002FINSTALLATION.md) | All install methods + platform support |\n| [Engram Cloud](docs\u002Fengram-cloud\u002FREADME.md) | Cloud landing page, quickstart, branding, and deep links |\n| [Agent Setup](docs\u002FAGENT-SETUP.md) | Per-agent configuration + Memory Protocol |\n| [Codebase Guide](docs\u002FCODEBASE-GUIDE.md) | Guide to the repository structure, flows, and implementation landmarks |\n| [Architecture](docs\u002FARCHITECTURE.md) | How it works + MCP tools + project structure |\n| [Plugins](docs\u002FPLUGINS.md) | OpenCode & Claude Code plugin details |\n| [Comparison](docs\u002FCOMPARISON.md) | Why Engram vs claude-mem |\n| [Intended Usage](docs\u002Fintended-usage.md) | Mental model — how Engram is meant to be used |\n| [Obsidian Brain](docs\u002Fbeta\u002Fobsidian-brain.md) | Export memories as Obsidian knowledge graph (beta) |\n| [Contributing](CONTRIBUTING.md) | Contribution workflow + standards |\n| [Full Docs](DOCS.md) | Complete technical reference |\n\n> **Dashboard contributors**: if you modify `.templ` files in `internal\u002Fcloud\u002Fdashboard\u002F`, run `make templ` to regenerate before committing. See [DOCS.md — Dashboard templ regeneration](DOCS.md#dashboard-templ-regeneration).\n\n## License\n\nMIT\n\n---\n\n**Inspired by [claude-mem](https:\u002F\u002Fgithub.com\u002Fthedotmack\u002Fclaude-mem)** — but agent-agnostic, simpler, and built different.\n\n## Contributors\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGentleman-Programming\u002Fengram\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=Gentleman-Programming\u002Fengram&max=100\" \u002F>\n\u003C\u002Fa>\n","Engram 是一个为AI编码代理提供持久化记忆的系统。其核心功能包括通过SQLite和FTS5实现的数据存储与全文搜索，支持MCP协议、HTTP API、命令行界面（CLI）以及文本用户界面（TUI）。该工具以Go语言编写成单个二进制文件，无需额外依赖即可运行，能够轻松集成到Claude Code、OpenCode、Gemini CLI等支持MCP协议的各种AI编程助手环境中。适用于需要长期保存代码相关记忆或知识，并希望在不同会话间保持连续性的开发场景中使用。",2,"2026-06-11 02:31:32","trending"]