npm.io
0.3.0 • Published yesterdayCLI

bytetiger-memory

Licence
Apache-2.0
Version
0.3.0
Deps
3
Size
58 kB
Vulns
0
Weekly
0

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.

How ByteTiger Memory works: agents write freely to their own private notes; a human reviews every share request before a note becomes shared with the team or canonical org truth. Promotion is upward-only, copies the note up a level, and never deletes the original.

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 through cmd /c instead:

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.

The four everyday actions: saying "remember" saves to your private notes with no approval; asking a question searches your private notes plus shared and canonical; asking to share creates a request that a human must approve; replacing a note marks the old one replaced rather than deleting it. Only sharing crosses a gate.

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

The review flow: run `bytetiger review` to list pending requests, then `bytetiger review <id>` to see the diff. Approving publishes the note and records your approval as a commit; rejecting publishes nothing and leaves the agent's original private note untouched.

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:

  1. This repo — the tool (server + CLI). Contains no memories.
  2. Your memory store — created wherever you pointed --store. A plain git repo with private/, 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/