engram
your team's AI memory, in one place

Your AI's memory, in one terminal

Claude Code writes memories to disk, one folder per project. engram puts them all in one fast TUI and shares the best with your team over plain git.

brew install ertugrulhaskan/tap/engram

macOS, Linux · single binary · no engram service, no signup

memories  5plans  2

engram v0.3.0

type: all   group: project/search

▌ support-agent (3)

projectModel + limits live in agent.yaml
projectRetry on 429 with backoff
feedbackKeep prompts under 300 words

▌ rag-index (2)

feedbackCite sources in answers
referenceVector DB URL in .env

5 of 5 shown

Model + limits live in agent.yaml

project support-agent/memory/agent-limits.md · edited yesterday

Every call reads its model and limits from one agent.yaml. No IDs hard-coded, so switching to claude-sonnet-5 is a one-line change.

model:      claude-sonnet-5
max_tokens: 1024
stream:     true

e edit  n new  ^P palette  q quit

// what engram is

Your AI already takes notes. engram is where you read them

As you work, Claude Code quietly writes notes to itself: what a project does, how you like things, decisions you've made. They pile up as Markdown scattered under ~/.claude. You rarely open those files, they drift out of date, and there's no clean way to fix or share them. engram opens that folder up: everything your AI remembers in one place, yours to correct and to hand to your team.

Every memory, one place

One searchable two-pane TUI across all your projects. No more grepping ~/.claude by hand.

Share over plain git

Promote a memory; teammates pull it. No engram service or account: your git host is the auth.

Safe by default

Read-only until you act. engram only adds its own frontmatter and never rewrites Claude's. It scans for secrets before anything reaches your shared repo.

// the moat

Your memory, not their server

Every assistant keeps a memory of how you work. What matters is where it lives, and whether you can read, move, and version it.

Claude Code + engramyour disk · plain Markdownyes, it's just files in git
Gemini appGoogle account · serverno, vendor-locked
GrokxAI account · serverno, vendor-locked
CopilotGitHub account · serverno, vendor-locked

Claude Code is the outlier: it writes memory to ~/.claude as Markdown you own. engram adds the fast UI and the git layer, so what your team knows stays portable instead of locked behind a login.

// what about sharing CLAUDE.md?

A CLAUDE.md committed to your repo shares instructions your team writes deliberately. Claude's auto-learned memories are different: they stay machine-local. engram fills that gap by letting you promote selected memories through your git remote.

// team sharing

Every memory is personal until you promote it

Promote asks one thing: who is this for? Your answer decides where the memory lives, and engram keys it to your git remote without an engram service in between.

default

Personal

Stays on your disk. Never synced, never shared. No badge, just yours.

team · this project

Shared with this repo

Teammates who pull in their clone get it in their memory folder. Keyed to the git remote, so it travels with the code.

team · global

Shared team-wide

Tied to no repo. It lives in the team store, and anyone can browse it and pull it into whichever project they like.

engram keys sharing to your git remote: project memories follow the repo, global memories follow the team.

1 · onceengram init-team <git-url>
2 · in the TUIselect & promote · commit + push
3 · teammatepull · lands where Claude reads

sync states · outlined words stay readable without color; the preview strip explains direction and offers the next action

[synced]in sync with the team store
[behind]team moved; pull a project copy, resolve a global one
[ahead]your edits are not shared yet; promote
[conflict]both sides moved; resolve in your editor
[missing]absent from the store; promote again
[unknown]no direction anchor; resolve in your editor

Personal memories carry no state. A shared preview adds a sentence, a you ▬▬▬ ↔ ▬▬▬ team direction gauge, an honest timestamp when one is known, and the action that fits that row.

// command palette

One field. Type anything

ctrl+p or ctrl+k opens one sectioned list. Fuzzy-search a memory or plan, type a command name directly, or use /, @, and > only when you want to narrow the list.

engram:  type to jump or run…

Jump to

Project setup conventions

Sources

/memories

Team

>promote

Assistant

@Claude

type to jump · ↑↓ · · esc close

/   narrow to sources

/memoriesbrowse memories
/plansplan-mode plans
/filesCLAUDE.md · read-only
/settingstheme, editor

@   narrow to assistants

@Claudefix & edit memories

Opens a Claude Code session in the right folder, so you can run Claude's own /memory there. engram reloads when it exits.

>   narrow to team actions

>promoteshare the selected memory
>pullfetch teammates' memories
>resolvemerge a conflict in $EDITOR
>withdrawtake a shared memory back
>initset up the team store
// roadmap

What's here, what's next

available

Local browsing

Discover, search, edit, plans, the @Claude assistant, and Midnight, Paperback, and CRT themes.

available

Team sharing over git

Promote, pull, resolve & withdraw, direction-aware badges, secret-scan on the way out.

next

Other assistants

Pluggable sources. AGENTS.md and GEMINI.md first; ChatGPT and Gemini app via export/import.

// faq

Questions we get asked

Where does Claude Code store its memories?

In ~/.claude, as Markdown files, one folder per project. Claude writes them as you work; engram is the UI over that folder.

How do I share Claude Code memory with my team?

Run engram init-team <git-url> once, then promote a memory in the TUI. engram commits and pushes it; teammates pull and it lands in their memory folder, where Claude reads it. There's no engram service or account in between.

Does engram send my memories anywhere?

No. It's a single local binary. Nothing leaves your machine unless you explicitly promote a memory to a git remote you chose, and engram scans for secrets before anything reaches a shared repo.

How is this different from sharing CLAUDE.md?

A CLAUDE.md committed to your repo shares instructions your team writes deliberately. Claude's auto-learned memories are different: they stay machine-local. engram fills that gap by letting you promote selected memories through your own git remote.

Is engram free?

Yes, free and open source under the MIT License. Install it with brew install ertugrulhaskan/tap/engram or go install. macOS and Linux.

Does it work with ChatGPT, Gemini, or Copilot?

Not yet. engram reads Claude Code's memories today. Local instruction files like AGENTS.md and GEMINI.md are next. No assistant exposes a memory API, so server-side memories can only arrive by export and import, never a live bridge.

Stop grepping your memory files

One binary. No engram service. No signup. Yours today, your team as soon as you promote.

brew install ertugrulhaskan/tap/engram