Mesh
Shared memory for AI agents.
When one agent learns something, every other agent can recall it — by meaning, not exact keywords.
The problem
Every AI agent starts each session with amnesia. Claude in your terminal doesn't know what Claude in your editor discovered. Your coding agent can't access what your review agent found. Every agent repeats work already done.
The solution
Mesh is a shared semantic memory layer. Agents write memories. Agents read memories. They never need to communicate directly.
from mesh import Mesh
# Agent A learns something
agent_a = Mesh(namespace="my-project", agent_id="coding-agent")
agent_a.learn("The API rate limit is 100 requests/min")
# Agent B recalls it — no direct communication
agent_b = Mesh(namespace="my-project", agent_id="review-agent")
results = agent_b.recall("what are the API constraints?")
# → Returns the memory above with 0.91 similarity
Installation
pip install mesh-context-layer
MCP Server (Claude Desktop + Cursor)
Add Mesh to your AI tools with one config change.
Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mesh": {
"command": "mesh-server"
}
}
}
Cursor — create .cursor/mcp.json in your project:
{
"mcpServers": {
"mesh": {
"command": "mesh-server"
}
}
}
Restart the app. Your agents now have access to mesh_learn, mesh_recall, mesh_forget, and mesh_inspect.
Namespaces
Agents sharing a namespace share memory. Agents in different namespaces are isolated.
# Team A's agents
Mesh(namespace="team-alpha")
# Team B's agents — cannot see Team A's memories
Mesh(namespace="team-beta")
# Set namespace for the MCP server via env var
# MESH_NAMESPACE=my-project mesh-server
Memory types
| Type | When to use |
|---|---|
fact |
Objective information |
preference |
User or system preferences |
context |
Situational background |
result |
Outcomes of tasks |
instruction |
Rules and guidelines |
Storage
Memory lives in ~/.mesh/ on your machine. It persists across sessions and reboots. Nothing leaves your machine.
Features
v0.3 — Privacy, Portability, and Namespace Control
Privacy flags Mark any memory as local-only to ensure it never leaves your machine:
mesh.learn(
"Internal staging server is under heavy load",
local_only=True
)
Export and import
# Export all non-private memories from a namespace
mesh-export backup.json --namespace shared
# Import into a new machine or namespace
mesh-import backup.json --namespace shared
# Preview without writing
mesh-import backup.json --dry-run
Namespace management
# List all namespaces
mesh-namespaces list
# Get detailed stats
mesh-namespaces stats work
# Delete a namespace
mesh-namespaces delete old-project
# Rename a namespace
mesh-namespaces rename work work-archived
Using Mesh from any tool
Start the HTTP server:
mesh-http
Then from any tool that supports HTTP:
Shell:
# Store a memory
curl -s -X POST http://localhost:7701/learn \
-H "Content-Type: application/json" \
-d '{"content": "deploy uses ./scripts/deploy.sh", "memory_type": "process"}'
# Recall memories
curl -s -X POST http://localhost:7701/recall \
-H "Content-Type: application/json" \
-d '{"query": "how do we deploy?", "count": 3}'
# Get formatted context for a system prompt
curl -s -X POST http://localhost:7701/context \
-H "Content-Type: application/json" \
-d '{"count": 10, "format": "markdown"}'
Python (no SDK needed):
import httpx
# Recall
r = httpx.post("http://localhost:7701/recall", json={"query": "deploy process"})
memories = r.json()["results"]
Node.js:
const res = await fetch("http://localhost:7701/recall", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ query: "deploy process", count: 5 })
});
const { results } = await res.json();
License
MIT
Metadata
Release files for mesh-context-layer 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mesh_context_layer-0.5.0.tar.gz | 92.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mesh_context_layer-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 164.0 kB
Release files / mesh_context_layer-0.5.0.tar.gz
| Download URL | mesh_context_layer-0.5.0.tar.gz |
|---|---|
| Size | 92.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0951e88624b1da1de8267e8652576a2e637e4505e99c72b5f7120ceaaf757a3a
|
|
BLAKE2b-256 checksum How to use checksums |
606af6cf4608c5b4aaac0f558949f30394b45f5c4cf40c4d2d4225d698bd3af6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.0
|
Release files / mesh_context_layer-0.5.0-py3-none-any.whl
| Download URL | mesh_context_layer-0.5.0-py3-none-any.whl |
|---|---|
| Size | 71.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fcdd29ce38dda0a3fe83f8d4ae4cb7905edcae5583a6b0a1101d35e684cc5ad0
|
|
BLAKE2b-256 checksum How to use checksums |
68eeb43651e98e900dc5d68ffcc611460ecb80b5ba85ff6a5d73b55887b7106d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.0
|