gentle-shell
A Pi-native shell for controlled development with skills for opening review-sized pull requests, writing clear docs and collaboration comments, and delegating work to focused subagents with test-first habits.
Persistent memory for AI coding agents. An agent-agnostic Go binary that stores memory in SQLite with full-text search, exposed through an MCP server, HTTP API, CLI, and TUI.
Claude Code
> /plugin marketplace add Gentleman-Programming/engram> /plugin install engram@engram
Codex
$ npx skills add Gentleman-Programming/engram -a codex
Cursor
$ npx skills add Gentleman-Programming/engram -a cursor
Gemini CLI
$ npx skills add Gentleman-Programming/engram -a gemini-cli
GitHub Copilot
$ copilot plugin marketplace add Gentleman-Programming/engram$ copilot plugin install engram@engram
OpenCode
$ npx skills add Gentleman-Programming/engram -a opencode
Windsurf
$ npx skills add Gentleman-Programming/engram -a windsurf



Website • Quickstart • Docs • Candidate staging • Gentle-AI • Wiki
engram /ˈen.ɡræm/ — neuroscience: the physical trace of a memory in the brain.
Your AI coding agent forgets everything when the session ends. Engram gives it a brain.
If Engram saved you from re-explaining your project, a star helps other people find it.
WORKS WITH THE AGENT YOU ALREADY HAVE
Claude Code · Pi · OpenCode · Gemini CLI · Codex · Antigravity · Windsurf Qwen Code · Kiro · Cursor · VS Code (Copilot) · Kilo Code · Kimi Code · CommandCode
14 setup targets · plus any MCP-compatible agent · per-agent setup →

Agent (Claude Code / OpenCode / Gemini CLI / Codex / VS Code / Antigravity / ...)
↓ MCP stdio
Engram (single Go binary)
↓
SQLite + FTS5 (~/.engram/engram.db)
Codex mutating Engram tools require the running core's /health response to advertise capabilities.runtime_session_resolution: true before resolving the host session. root_session_resume alone is not sufficient. If the core is incompatible, upgrade it to match the CLI, manually restart the running Engram server, and start a new Codex session. Hooks never restart the server automatically. Unregistered sessions and connection or invalid-response failures remain safely blocked with distinct diagnostics; read-only and non-Engram calls are unaffected.
A Go binary with SQLite + FTS5 full-text search, exposed through CLI, HTTP API, MCP, and an interactive TUI. It works with any MCP-compatible agent, including Claude Code, OpenCode, Gemini CLI, Codex, VS Code (Copilot), Antigravity, Cursor, and Windsurf. No Node.js, Python, or Docker is required: one binary, one SQLite file.
The data directory defaults to ~/.engram; a nonblank ENGRAM_DATA_DIR overrides it and must be an absolute path. On Windows, local-SQLite commands (including serve, mcp, and doctor) create and check <data-directory>/tmp/sqlite before opening SQLite, then set TEMP and TMP for that process only. Startup fails with an operation-specific diagnostic if the directory cannot be used. User/system environment settings and the working directory are unchanged. The directory is shared between processes and is not cleaned by Engram; SQLite manages its own uniquely named temporary files. This preparation also covers cloud status, enroll, unenroll, attest-prompt-source, and the local-store cloud upgrade operations (doctor, repair, bootstrap, remirror, status, rollback). It does not run for protocol-mode, setup, cloud serve, cloud config, top-level cloud repair or cloud bootstrap (distinct from the included cloud upgrade repair and cloud upgrade bootstrap), other cloud upgrade subcommands, or unknown commands. Existing orphan-database migration behavior is unchanged, including for commands excluded from this preparation. Linux/macOS, config-free commands, isolated self-tests, compatibility, and migrate-copy retain their existing behavior.
Project-aware reads use the canonical current project when no selector is supplied: an explicit project, then ENGRAM_PROJECT, then cwd detection. Use --all in the CLI or all_projects=true in HTTP for an intentional global read; do not combine either with an explicit project. engram context retains its positional project as an alias for --project. GET /sync/status supports one resolved project and rejects all_projects=true because its provider cannot aggregate status.
Engram keeps memory local by default. The local SQLite database is authoritative; Git Sync exports portable compressed chunks for sharing across machines, and Engram Cloud is optional, project-scoped replication/shared access with browser visibility.
| Need | Start here |
|---|---|
| Local memory and the runtime model | Architecture |
| Share memory with Git | Git Sync reference |
| Use optional Cloud replication | Engram Cloud |
| Diagnose or recover Cloud operations | Cloud troubleshooting |
For an existing local database, use the guided upgrade sequence. If the dry run reports changes, apply them before bootstrap; otherwise continue directly to bootstrap.
engram cloud upgrade doctor --project <project>
engram cloud upgrade repair --project <project> --dry-run
engram cloud upgrade repair --project <project> --apply # only when the dry run reports changes
engram cloud upgrade bootstrap --project <project>
engram cloud upgrade status --project <project>
engram tui


Navigate with j/k, use Enter to drill in, c to copy content to the clipboard, / to search, and Esc to go back. The TUI uses the Catppuccin Mocha theme.
| Component | What it does |
|---|---|
| MCP tools | Save, search, timeline, session, review, and diagnosis tools for your agent |
| HTTP API | The same memory over local HTTP endpoints; compound agent workflows |
| Doctor | engram doctor — read-only operational diagnostics |
| Conflict surfacing | Flags related or conflicting memories so the agent can judge them |
| Plugins | OpenCode and Claude Code plugin details |
gentle-engram | The Engram package for Pi |
| Team usage | Shared-memory conventions |
| Binary self-testing | Isolated reliability and performance checks for released binaries |
| Obsidian Brain | Export memories as an Obsidian knowledge graph (beta) |
Every command, environment variable, and endpoint: Full reference →

For production use and security support, install the latest stable release from GitHub Releases. Release candidates are prerelease validation and feedback builds; choose one only when you accept prerelease risk. See the Release Policy before upgrading.
Homebrew installs the latest stable release:
brew install gentleman-programming/tap/engram
For Windows, Linux, source builds, and all installation methods, see Installation.
A Pi-native shell for controlled development with skills for opening review-sized pull requests, writing clear docs and collaboration comments, and delegating work to focused subagents with test-first habits.
Configures AI coding agents such as Claude Code, Cursor, and Codex with persistent memory, skills, MCP servers, and personas. Includes skills for writing pull requests, collaboration comments, and design docs.
Captures what your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions so work carries over. Works with Claude Code and several other coding agents.
Gives Claude Code long-term memory through Hindsight. It recalls relevant past context before answering, retains durable facts as the agent learns them, and reflects over stored memory.
Local-first memory for Claude Code. It stores conversations verbatim in a private palace you can search before answering about past work, people, projects, or decisions, with optional shared-brain hub setup.
Gives Claude Code a private memory that stays on your machine. It stores past conversations word for word, so you can ask what was decided, what happened before, or who was involved and get the original context back. It can also hand tasks to other agents.
Install it with the command on its page. It includes memory, architecture-guardrails, backlog-triage. Its skills do not fire on their own yet. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it