The only memory layer purpose-built for AI-assisted engineering teams. Persistent. Governed. Audited. Runs 100% local or in the cloud.
Chose ArcadeDB over Neo4j for multi-model support and embedded vector search.
Redis OOM on prod-02. Resolved by setting maxmemory-policy=allkeys-lru.
CONSTRAINT: All database queries must go through the ORM layer. Direct SQL is prohibited.
Use gh pr create --fill to open a PR with auto-filled title and body.
CONSTRAINT: All PHI data MUST be encrypted at rest using AES-256. Direct database access from service layers is PROHIBITED.
Your team has 20 engineers and 20 AI assistants. Without shared memory, you have 40 silos — each starting from zero.
Context window closes; architecture decisions, resolved incidents, learned patterns — gone. Every session restarts from zero.
Agent A doesn't know what Agent B discovered 10 minutes ago. Work is repeated, mistakes are repeated, and coordination is manual.
A senior architect's 10am decision doesn't reach the developer asking the same question at 2pm. The same trade-offs get re-litigated daily.
No audit trail. No way to know which agent made which call, which decision was automated, or why. Compliance is impossible to prove.
Agents generate code that violates your documented architecture. No one enforces the rules at code-generation time without re-prompting every session.
Onboarding takes weeks because institutional knowledge lives in people's heads and scattered notes. New hires and their AI assistants start completely cold.
ArcadeDB multi-model backend — graph, vector, and document in one engine. Facts, decisions, incidents, and constraints survive session boundaries and are shared across your entire team.
Every memory carries valid_from / valid_until timestamps. Query the knowledge graph as_of any past date — "what did we know about the auth service on March 15th?" Only memnos does this.
Not a static document store. The graph evolves in real-time as agents work — new edges, superseded decisions, cross-linked incidents — always reflecting your team's current understanding.
Ingest your architecture docs as typed constraint nodes. Every agent's search results automatically include relevant constraints — your documented rules enforce themselves without re-prompting.
Every memory write carries agent_id, tool, git_commit, JIRA ticket, and timestamp. Know which agent made which decision and why, forever queryable. Full compliance-grade audit log.
Real-time pub/sub across agents — SSE stream, webhook, and cursor delivery modes. When one agent writes a discovery, every subscribed agent knows in milliseconds.
Claude Code, GPT-4, Llama, Gemini, Mistral — any model that can make an HTTP call works with memnos. Swap your underlying LLM without touching your memory layer.
Fine-grained access control via API keys and namespaces. Give the backend team read/write to org:acme:backend, the frontend team to org:acme:frontend. Each agent gets exactly the permissions it needs.
AES-256-GCM encrypted vault for secrets, credentials, and keys stored alongside memories. Automatic credential rotation, audit-logged access. Stop putting secrets in environment variables.
Write an architecture rule or policy once. It auto-injects into every future search result — a guardrail that propagates to your entire agent fleet without any re-prompting or system prompt updates.
Built-in skill catalogs for Claude Code, GitHub CLI, Docker, kubectl. Teams author and share reusable skills. Any agent can discover what any tool or teammate knows how to do.
Full namespace export/import. Move your entire knowledge graph between installations, environments, or cloud regions. Your team's memory travels with your infrastructure.
Product, engineering, QA, and DevOps all share one knowledge graph. New hires get full institutional context on day one — not after weeks of onboarding.
Learn more →Ingest your architecture docs, ADRs, and compliance requirements. Agents enforce rules automatically during code review and development — zero re-prompting.
Learn more →When PagerDuty fires, surface similar past incidents and resolutions instantly. Stop re-investigating the same failures at 2am.
Learn more →Replace static wikis with a living knowledge graph that every agent and engineer contributes to and queries in real time. Documentation that updates itself.
Learn more →The question isn't whether your AI agents will make consequential decisions. They already are. The question is whether you can audit them, govern them, and prove it to your organization.
{
"id": "mem_a4f2b91",
"content": "Chose ArcadeDB over Neo4j",
"memory_type": "decision",
"provenance": {
"agent_id": "arch-agent-01",
"tool": "claude-code",
"git_commit": "a4f2b91",
"ticket": "ARCH-42"
},
"created_at": "2026-03-15T10:23:44Z",
"namespace": "org:acme:architecture"
}
memnos is the only memory tool built for multi-agent engineering teams — with governance, temporal queries, and architecture enforcement no other tool has.
| Capability | memnos | mem0 | Zep | Obsidian+Claude | ChatGPT Memory |
|---|---|---|---|---|---|
| Multi-agent shared memory | ✓ | ✗ | ~ | ✗ | ✗ |
| Temporal memory (as_of queries) | ✓ | ✗ | ✗ | ✗ | ✗ |
| Architecture enforcement | ✓ | ✗ | ✗ | ✗ | ✗ |
| Complete audit trail | ✓ | ✗ | ✗ | ✗ | ✗ |
| Self-hostable, 100% local | ✓ | ~ | ~ | ✓ | ✗ |
| Secret vault | ✓ | ✗ | ✗ | ✗ | ✗ |
memnos-sdk is a zero-dependency Python client with optional integrations for LangChain, LlamaIndex, and architecture enforcement. Install what you need.
from memnos_sdk import MemnosClient
with MemnosClient(url="http://localhost:8766", api_key="...") as client:
# Write a decision with full provenance
client.write(
"JWT tokens must expire after 15 minutes in production",
namespace="org:acme:security",
memory_type="constraint",
affects=["auth", "api-gateway"],
rationale="Compliance requirement — SOC2 CC6.1",
)
# Semantic search across all team memories
results = client.search(
"authentication token expiry policy",
namespace="org:acme:security",
)
for r in results:
print(f"[{r.memory_type}] {r.content}")
Five lines is all it takes to give your agent permanent, governed, shared memory.
Drop the MCP server into Claude Code, Cursor, or any MCP-compatible host. Or use the REST SDK from any language. Self-host with Docker in 90 seconds or use the managed cloud API.
Agents search and write as they work. Every search result automatically includes relevant architecture constraints — your rules propagate without re-prompting or system prompt updates.
Run corpus.check_all() on every PR diff. SHALL violations block the merge. SHOULD violations annotate it. Architecture governance runs automatically in your pipeline.
Every memory write carries agent_id, tool, git_commit, and JIRA ticket. The audit trail is built in — no extra work. Query any decision, trace any incident, prove any action forever.
from memnos_sdk import MemnosClient
async with MemnosClient(
url="https://memnos.acme.com",
api_key="...",
) as client:
# Search — constraints auto-inject with every result
memories = await client.search(
"how do we handle patient data encryption",
namespace="org:acme:engineering",
)
# → facts + auto-injected constraints
# Architecture enforcement in CI
result = await client.corpus.check_all(
code=pull_request_diff,
context="patient-access consent validation",
)
if result[0].shall_violations:
raise ArchitectureViolation(result[0].format())
# Write with full audit provenance
await client.write(
content="Selected ArcadeDB — single engine",
namespace="org:acme:architecture",
memory_type="decision",
author="arch-agent",
metadata={
"ticket": "ARCH-42",
"git_commit": "a4f2b91",
},
)
Every architecture decision in this codebase is a memory. Every incident we hit is stored. The agents that write our docs query memnos before writing a word.
We didn't just use our product — our product made itself. If memnos went down, our agents would start repeating the same mistakes within a week.
// actual memories from building memnos
Chose ArcadeDB over Neo4j+Qdrant. Multi-model support eliminates two separate services and gives embedded vector search without running a second database.
E2E stack stuck at "Created" — ArcadeDB container never became healthy. Root cause: ~ in .env file not expanded by docker-compose. Fixed by injecting MEMNOS_DATA_DIR as shell env var.
CONSTRAINT: Source directories are READ-ONLY. All memory and learnings go to vaults only. Never write markdown in source repos.
Self-host with Docker in 90 seconds, or connect to the managed API. MIT licensed. No lock-in.