Open Source

memshare

Peer-to-peer AI memory sharing — approved on both sides.

Any tool  ·  Any model  ·  Any teammate  ·  Your machine only

The Problem

Your AI's memory is trapped

Every vendor builds memory in its own proprietary, closed format.

🔒

Locked to one platform

Spent 6 months "training" Claude or ChatGPT on your preferences? Want to switch? Start from zero.

🏝️

Isolated to one user

Every AI memory product is per-user by design. There's no way to share context with a colleague or friend.

🤷

No real control

"Deleted" is a promise, not a guarantee. You don't know what's saved, where, or who has access.

What Exists Today

Memory is built as a chat feature, not a data type

Powerful tools exist. But every one of them stores memory per-account, in a format you cannot inspect, verify, or hand to anyone else.

Tool Cross-model portability Self-hosted User-to-user sharing Consent flow
Claude / ChatGPT Memory ✗ ✗ ✗ ✗
Mem0 ✓ ✓ ✗ ✗
OMP (Open Memory Protocol) ✓ ✓ ✗ ✗
Portable Memory (MacPaw) ✓ ✓ ✗ ✗
memshare ✓ ✓ ✓ ✓
The Missing Piece

Memory as
files you own

Make memory a file and three things follow — in this order.
Inspect it. Move it. Then share it, with approval on both sides.

1  Inspect — plain JSON. Greppable, diffable, deleted when you delete it.

2  Move — one store, every MCP tool, every machine you own.

3  Share — item by item, preview and approval on both sides.

✓  No central server. No vendor can revoke any of it.

🧑 Alice
Claude
←MCP→
Memory
Server A
↕ bundle
🧑 Bob
ChatGPT
←MCP→
Memory
Server B

Each person runs their server locally.
No central server sees everything.

Cross-Platform · Model-Agnostic

Not tied to Claude.
Not tied to anyone.

Your memory is local JSON files. The MCP server is one adapter over them — anything else can be written the same way.

🧠
~/.memshare/
JSON files — the actual product
▲   ▲   ▲   ▲
MCP Server
Claude · Cursor · VS Code
Windsurf · any MCP tool
CLI
list · export · import
preview · add
ChatGPT Adapter · planned
Custom GPT action
or browser extension
System Prompt Inject
memshare recall → paste
Ollama · Gemini · any API

If MCP disappears tomorrow — your data is still here. Just files.

How Memory Gets Built

Capture is automatic.
Sharing never is.

Three modes control what gets written down. What gets shared is gated separately, and always by you.

🤖

Auto (default)

Claude saves what it learns as you work, choosing shareable for project facts and private for anything about you. Either way nothing leaves until you approve an export.

Claude silently calls memory_set()
💬

Suggest

Claude proposes what to save at the end of a conversation. You approve, edit, or skip.

Claude calls memory_suggest() → user approves
👆

Manual

"Save this to memory" — only saved when you explicitly ask. Maximum control.

User says "remember this" → Claude calls memory_set()

Auto mode — what actually happens, with no command and no prompt:

You: "we went with Postgres — the JSONB support decided it"
memory_set({ content: "Team chose Postgres over MySQL for JSONB support",
            tags: ["db"], visibility: "shareable" })  ← a project fact

You: "don't ping me before 10am"
memory_set({ content: "Prefers not to be contacted before 10am",
            tags: ["preferences"], visibility: "private" })  ← about you

// You never asked it to remember either one. Neither has left
// your machine, and neither will until you approve an export.
Architecture

Federated, Self-Hosted

Starts local on your machine. Same code deploys to a team server when you're ready.

📦

MCP Server (local process)

Not a real server — a local process that Claude starts and stops automatically. No open ports, no Docker, no cloud.

🗂️

Local JSON Files

Human-readable, diffable, git-friendly. Sync between devices via Dropbox or git.

🤝

Bundle Exchange

Selective export → preview → approval → import. Send the file however you want — email, Slack, AirDrop.

# Install — no server, no signup
npm install -g memshare-mcp
memshare init

# Connect to Claude
claude mcp add memshare --scope user -- npx -y memshare-mcp serve

# After that, you just talk.
"what do you know about project-x?"

"remember that migrations run
 through scripts/migrate.ts"


"share the project-x notes with Bob"
# → shows you the list, waits for a yes
Consent Flow

Full control — on both sides

1

Alice picks what to share

Every memory item is tagged private or shareable at creation time. Not all-or-nothing.

2

Automatic redaction

Sensitive PII (health, financial, government IDs) is blocked automatically before export. Conservative by default.

3

Exact preview

Before a file exists, Alice is shown the exact list — and what was held back, and why. She approves by saying so.

4

Bob receives and chooses

Bob sees every incoming item before any of it lands, and takes only what he wants. Nothing he already had is overwritten.

"share the project-x architecture
 notes with Bob, good for a week"


→ 3 would go:
  · Team chose Postgres for JSONB
  · Migrations run via scripts/migrate.ts
  · Auth uses JWT, 15min refresh
→ 1 held back: contains an email address
→ nothing written yet.

"yes, send those"
→ file written. Alice sends it however she likes.
"import what Alice sent me"

→ Alice sent 3. You already know 1 of them.
  · Team chose Postgres for JSONB
  · Migrations run via scripts/migrate.ts
→ nothing imported yet.

"just the migrations one"
→ 1 imported. private. tagged from-alice.
In Practice

Nobody wrote a single page of documentation.

None of this is typed at a terminal. You talk to your AI; the context accumulates, and moves, on its own.

DAY 0 · DANA (TECH LEAD)

Install, then forget it

Install once. After that she never types a memshare command at all — she just works, and her AI records what it learns.

# she just says, mid-conversation:
"we went with Postgres —
 the JSONB support decided it"

→ Claude calls memory_set()
→ saved as shareable: a project fact

DAY 14 · DANA

Send what the team needs

~40 memories, already marked as they were learned. She checks, corrects anything by saying so, and asks for the ones Sam needs. She sees the list before anything is written.

"what have you learned
 about project-x?"

→ memory_get()
"keep the client pricing one private"
→ memory_set_visibility()

"send the project-x notes to Sam"
→ memory_export() shows her the list first
→ she says yes. a file is written.

DAY 15 · SAM JOINS

Productive on the first prompt

Sam looks before he takes anything, then accepts item by item. After that he is back to plain conversation — and his AI already knows the codebase.

# Dana sends him the file. Sam says:
"what's in what Dana sent me?"
→ the whole list. nothing imported.
"import what Dana sent me"
→ he picks item by item

# then, on day one:
"how do migrations work here?"
→ the real answer. no onboarding.

Nobody wrote a wiki page, and nobody typed a command. Every step was a sentence — and both sides still saw exactly what was changing hands before it moved.

Use Cases

Sharing between people

🆕

Onboarding a new teammate

Dana joins the team. Instead of spending a week "teaching" her Claude about the project, the tech lead shares a bundle — internal terms, architecture decisions, code conventions.

"share the project-x onboarding
 notes with Dana"

→ shows you exactly what would go,
   then writes it once you say yes
🔄

Project handoff between freelancers

Uri finished his part of the project. Instead of the next freelancer starting from zero, Uri shares a bundle — client preferences, decision history, technical gotchas.

"hand over everything about
 client-acme, good for 30 days"
🎨

A designer on Cursor, devs on Claude

The designer’s AI knows the component conventions. The backend devs’ AI knows the API contract. One bundle each way and neither side re-explains. Different people and different vendors — the only tool that crosses both.

"send the design system notes
 to the backend team"

→ Cursor to Claude. same format.
🎓

Mentor shares knowledge with mentee

A senior engineer "taught" their Claude about best practices, design patterns, and review guidelines. Instead of writing a guide — they share the memory directly.

"share my code review
 guidelines with the team"
Use Cases

Sharing between models and sessions

🔀

Switching tools mid-project

Claude Code today, Cursor tomorrow, Windsurf next month. There is nothing to migrate — every MCP client reads the same local store. Same context, zero commands. (A ChatGPT route is planned.)

# nothing to run. it is already there.
"what did we decide about the design system?"
# → asked in Claude, learned in Cursor
🪟

Between distant Claude sessions

Long conversation with rich context. Open a new chat and have to explain everything again. With memshare — the MCP server auto-injects relevant context.

# MCP server auto-injects relevant context
memshare recall --tags "project-x"
⚡

Using multiple models in parallel

Claude for code, ChatGPT for research, Gemini for document analysis. All read from the same local memory store — no duplicating context three times.

# One memory, every model reads it
memshare serve # → Claude, GPT, Gemini all connect
💻

Between devices

Working on the laptop at home and the desktop at the office. The memory store syncs via git or Dropbox — because it's just JSON files.

# Sync via git — it's just files
cd ~/.memshare && git push
Deployment

Your files, wherever you want them.

Your memories are the same JSON files in all four, so moving between them costs you nothing — no migration, no re-setup, nothing left behind.

WE SUGGEST STARTING HERE

💻

Local

Files on your laptop.
MCP as local process.

Sharing via:

Export file → email/Slack → import file

PLANNED

📂

Shared folder

Dropbox, Google Drive,
or a git repo.

Sharing via:

Auto-sync through the shared folder

PLANNED

🖥️

Team server

Docker on your VPS.
Team connects remotely.

Sharing via:

By username on the server

PLANNED

☁️

Hosted service

Managed infra.
Same protocol, zero ops.

Sharing via:

Username, invite link, or email

# Local: you ask, it writes a file, you send it
"share the project-x notes with Bob"
# → bundle-a3f8.memshare.json — Slack, email, anything
# Team server — planned, not built yet:
"share the project-x notes with Bob"
# → no file to send. it just reaches him.

# and on Bob's side
"anything new from the team?"
# → Alice shared 3 items. Take them?
Open Source · MIT License

memshare

Your memory belongs to you.
You decide what to share, with whom, and for how long.

✅ Shipped and live today · install it from npm