ByteTiger Memory
Persistent memory for AI agents, safe to share with a team.
Each agent writes freely to its own private notes. Nothing becomes visible to anyone else until a human reviews and approves it — like a pull request. Approved notes move up: private → shared (your team) → canonical (org truth). Nothing is ever deleted by promotion — it's copied up a level, and the original stays put.
Docs: DESIGN.md (storage format) · DESIGN-APP.md (tool surface).
1. Install
npm install -g bytetiger-memory
No clone, no build — this installs the MCP server and the bytetiger review CLI together.
Prefer not to install anything? Use npx -y bytetiger-memory ... in the connect step below instead.
2. Connect your AI client
Give each client its own --agent name — every note records which agent wrote it.
Claude Code:
claude mcp add --scope user bytetiger-memory -- bytetiger-memory-server --store <store-path> --agent claude-code
Windows (PowerShell): PowerShell breaks the
--in that command. Run it throughcmd /cinstead:cmd /c 'claude mcp add --scope user bytetiger-memory -- bytetiger-memory-server --store <store-path> --agent claude-code'
Claude Desktop — add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"bytetiger-memory": {
"command": "bytetiger-memory-server",
"args": ["--store", "<store-path>", "--agent", "claude-desktop"]
}
}
}
If the file already has content, add "mcpServers" alongside it — don't replace the file. Fully quit and relaunch Claude Desktop after saving.
Windows Microsoft Store install: the config that actually gets read is at
%LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\claude_desktop_config.json, not the usual%APPDATA%\Claude\path.
No store yet? One is created automatically the first time the server runs — nothing extra to set up.
Verify the connection by asking your agent to call the ping tool — it should return the store path and agent name.
3. Use it
Just talk to your agent normally — it calls the tools for you.
Save something.
"Remember that our staging DB is read-only on Fridays."
Saved to your own private notes. No approval needed, and no one else can see it yet.
Ask for it back later.
"What do we know about staging DB access?"
Your agent searches your notes, plus anything shared/canonical you can see, and answers from what it finds.
Share it with the team.
"Share that staging-DB note with the team."
This doesn't publish it right away — it creates a request. A human has to approve it (see below) before anyone else can see it.
Update or retire a note.
"That staging-DB note is outdated, replace it with the new one."
The old note isn't deleted, just marked as replaced. If it was already shared/canonical, the replacement needs approval too.
4. Approve or reject a share request
bytetiger review
Lists every pending request, e.g. prom_2026-07-18_4e496e mem_... private -> shared.
bytetiger review prom_2026-07-18_4e496e
Shows exactly what's being shared, as a diff, before you decide.
bytetiger approve prom_2026-07-18_4e496e
Publishes it. Your approval is permanently recorded.
bytetiger reject prom_2026-07-18_4e496e "reason here"
Nothing gets published. The agent's original private note is untouched.
Set the store path once so you don't have to pass --store every time:
export BYTETIGER_MEMORY_STORE=~/memory-store
$env:BYTETIGER_MEMORY_STORE = "C:\path\to\memory-store"
Where your data lives
Two separate git repos:
- This repo — the tool (server + CLI). Contains no memories.
- Your memory store — created wherever you pointed
--store. A plain git repo withprivate/,shared/,canonical/,.promotions/— ordinary markdown files you can read, grep, and diff directly.
Every write, share request, and approval is a git commit in your store. git log there is the full history of who did what and when.
Upgrading an older (v0.1) store? Run bytetiger migrate <store-path> once.
Sharing a store with a team (optional)
cd ~/memory-store
git remote add origin <private GitHub / company server / NAS>
git push -u origin main
Teammates clone it and point their own server at their clone.
Current limit: one server per store, one machine writing at a time. Concurrent writers on different clones get plain git merge conflicts, same as any git repo.
Development
npm test # vitest
npm run build # tsc → dist/