Closed ecosystems
ChatGPT Memory and Claude Memory are still product silos. Knowledge built in one tool does not naturally flow into the next.
YuYi gives every AI agent you use a shared, persistent memory layer deployed on your own infrastructure, owned by you, and readable by every tool you trust.
# Write a memory from any agent
$ curl -X POST https://memory.local/v1/memories \
-H "Authorization: Bearer mk-..." \
-d '{
"content": "All API responses follow {code, message, data}",
"memoryType": "project_rule",
"scope": { "projectId": "p_demo" }
}'
{
"code": "CREATED",
"data": {
"id": "mem_a1b2c3d4",
"memoryType": "project_rule",
"importance": 0.9,
"status": "active"
}
}
# Recall context for a task from any other agent
$ curl -X POST https://memory.local/v1/recall \
-d '{ "task": "Implement user registration", "maxTokens": 2000 }'ChatGPT Memory and Claude Memory are still product silos. Knowledge built in one tool does not naturally flow into the next.
Switch models, clients, or sessions, and the operating context disappears. Agents have to restart from zero over and over again.
You cannot truly audit what is stored, delete one memory precisely, or migrate data on your own schedule. Your knowledge lives somewhere else.
This is not a bug in one product. Memory has been treated like an app feature, when it should be infrastructure in the same class as databases or version control.
Memory belongs to you. Self-host it, manage it, export it fully, and delete it for real. No mandatory external account involved.
Stage one writes only when you say so. Auto-write is opt-in, visible, and reversible instead of hidden in product magic.
Stable Memory stores distilled facts. History Recall stores process context. Mixing them degrades retrieval quality almost immediately.
No dependency on any vendor native memory API. Plug in any LLM or embedding provider. If one agent dies, the core still runs.
The recall pipeline emits a token-budgeted context block that is ready for direct injection. It is not a thin wrapper over document search.
Ship the smallest verifiable loop first. Layer in complexity only after the foundation has already proved it can carry real work.
Each adapter translates intent into a standard API call. Business logic lives server-side, so adding a new agent does not force a core rewrite.
Layer 3 decides what is worth storing, which layer it belongs to, and what still fits into recall. It is a scheduler, not just a transport layer.
Vector and lexical retrieval fail independently. If embeddings are missing, lexical search still works. Missing zhparser should never crash the pipeline.
A three-stage decision chain runs on every write request. Hard rules run first and cannot be overridden by the LLM. The model stays advisory, and the rule fallback is always available.
The Recall Orchestrator runs eight steps to produce a RecallContextBlock, a compacted, deduplicated, token-budgeted block that can be injected directly into any agent context window.
prefer mode:All endpoints return { code, message, data, httpStatus, timestamp }. Errors use structured MEM-* codes instead of raw HTTP status text.
// Request body
{
"content": "All backend APIs return {code, message, data}",
"title": "Response format convention",
"memoryType": "project_rule",
"scope": { "projectId": "p_demo" },
"semanticKey": "p_demo:rule:api_response_format",
"importance": 0.9
}
// Response 201
{
"code": "CREATED",
"data": { "id": "mem_a1b2c3d4", "status": "active", "version": 1 }
}{
"content": "Completed user auth module. MailCodeService handles TTL.",
"recordKind": "task_summary",
"scope": { "projectId": "p_demo" },
"ttlPolicy": "365d"
}MEM-AUTH*Authentication & authorizationMEM-MEM*Memory operation errorsMEM-RECALL*Recall pipeline errorsMEM-JUDGE*Judge / LLM provider errorsMEM-SEARCH*Embedding & search errorsMEM-SYS*System & validation errorsgit clone https://github.com/plumememory/memory-deploy
cd memory-deploycp .env.example .env
# Set required variables:
MEMORY_BOOTSTRAP_ADMIN_USERNAME=admin
MEMORY_BOOTSTRAP_ADMIN_PASSWORD=change-me-now
POSTGRES_PASSWORD=your-db-password# Development
docker compose -f docker-compose.dev.yml up -d
# Production (with TLS via Caddy/Nginx)
docker compose -f docker-compose.prod.yml up -dbash verify-mvp.sh
# ✓ Write stable memory
# ✓ Write history record
# ✓ Task recall
# ✓ Cross-agent read
# ✓ Delete & temporary modeMEMORY_EMBEDDING_ENABLED=true
MEMORY_EMBEDDING_API_KEY=sk-...
MEMORY_EMBEDDING_MODEL=text-embedding-3-smallMEMORY_JUDGE_LLM_ENABLED=true
MEMORY_LLM_API_KEY=sk-...
MEMORY_LLM_MODEL=gpt-4o-mini
MEMORY_LLM_BASE_URL=https://api.openai.com/v1