Overview
NovaCortex is a self-hosted, privacy-first, MCP-native memory layer for AI agents — typed memories, semantic search, and a relation graph on your own infrastructure.
NovaCortex is a self-hostable, graph-native memory layer for AI agents. It gives your agents a persistent, queryable memory: typed memories, semantic vector search, a typed relation graph, and a knowledge base — all running on your own infrastructure. You can use it from Claude / Cursor (over MCP), the REST API, the CLI, or the TypeScript and Python SDKs.
The open-source core is licensed under Apache-2.0 and runs fully self-hosted with no key.
Why NovaCortex
NovaCortex is built around three things most agent-memory tools give up:
- Privacy-first. All memory data is stored and served on your own
infrastructure (SurrealDB + Qdrant + Redis). Semantic search is off by
default — it only sends text to an embedding provider when you explicitly set
OPENAI_API_KEY. PointOPENAI_BASE_URLat a local OpenAI-compatible server (Ollama, LiteLLM) to keep embeddings local too. - Self-host. One
docker composebrings up the whole stack. Data is bind-mounted under a directory you control, so it survives container and image rebuilds. No managed service, no external dependency required. - Portable. The whole graph exports and imports as a Portable Memory Format (PMF) file — JSON, binary MessagePack (~60% smaller), or AES-256-GCM encrypted — with Merkle + content-hash integrity. No lock-in.
What it does
- Memory types — episodic, semantic, procedural, and working memories, with salience and decay.
- Semantic search — natural-language queries are embedded server-side and matched via a Qdrant vector index, with a transparent substring fallback when embeddings are off.
- Relation graph — typed edges (
causes,supports,contradicts,supersedes,same_as, …). Your agent asserts the links; NovaCortex stores and serves the graph. - Knowledge base — drop in documents and get auto-generated, searchable semantic memories.
- Namespaces — isolate memory per agent or project.
- Ops-ready — scope-gated tokens, audit log, webhooks, and opt-in OpenTelemetry traces.
Architecture
A NovaCortex deployment is four application surfaces over three storage backends:
The API, MCP server, and CLI/SDKs all talk to the same SurrealDB namespace and Qdrant collection, so a memory written through one interface is immediately visible to the others. The Web UI never talks to the database directly — it proxies through the API.
Claude / Cursor ──MCP──┐
CLI / SDKs ──REST──────┤
Browser ──> Web UI ────┼──> API ──┬──> SurrealDB (memories, relations)
│ ├──> Qdrant (vectors)
│ └──> Redis (sessions, rate limits)
│
└──> Embeddings (OpenAI-compatible, optional)
Who it's for
- Agent developers who want persistent, queryable memory for Claude, Cursor, or any MCP client without sending data to a third-party SaaS.
- Self-hosters running on Unraid or any Docker host who want full control over where memory lives and how it is backed up.
- Teams with privacy or compliance requirements that rule out a managed memory service and need on-prem storage with local embeddings.
Licensing & tiers
The open-source core is Apache-2.0. The free tier runs fully self-hosted with no key. Pro and Enterprise unlock more namespaces and federation via an ed25519-signed offline license key — the build embeds only the public key, so keys are verified offline and cannot be forged.
Next steps
- Quickstart — get the full stack running in about 5 minutes.
- Installation — Docker requirements, compose variants, volumes, ports, and version upgrades.
- Configuration — every environment variable, with meanings and defaults.