Noema.

The intentional memory layer for your AI agents.

Noema gives AI agents — and the humans working alongside them — a persistent, structured place to record what they know, decide, observe, and intend. Every memory is a plain markdown file. The index is a local SQLite database. Nothing lives in the cloud; nothing requires a paid cloud API key.

Why Noema?

  • Federated by design. Multiple Cortexes can pair into a ring and sync peer-to-peer. Grow a shared memory across a team, a lab, or a research network — no central server, no gatekeeper.
  • Local-first. No cloud, no API keys, no account required. Your memories live in ~/.noema/.
  • Plain markdown. Every Trace is a file. You can cat, grep, and git commit it — no proprietary format.
  • MCP-native. Works with Claude Code, Copilot, Zed, and any MCP-compatible agent out of the box.
  • Security from day one. Keyed MCP auth that refuses to serve bearer keys over plaintext, explicit host-binding rules, and out-of-band key verification — the security work most projects defer to v2 is in v1.

Concepts

TermMeaning
Trace A single memory — one markdown file + its database row
Cortex A named collection of Traces, stored in a directory you control

Every Trace has a type that describes its intent — fact, decision, preference, context, skill, intent, observation, or note.

Federation

Two or more Cortexes can pair into a ring and sync peer-to-peer. Every Trace, every lineage edge, every audit event replicates across every peer — no central server, no cloud broker.

When two peers edit the same Trace concurrently, Noema refuses to overwrite either side. Instead it creates a divergence Trace that preserves both versions verbatim, so you can resolve it deliberately when you're ready. Nothing is ever lost; nothing is ever silently decided for you.

A personal cortex becomes a lab cortex becomes a research-network cortex. Memory grows with the collective, on your terms.

Security

A federated ring of memories is worth defending. Noema's HTTP MCP endpoint supports a keyed mode where every request must carry a bearer key — and when keyed mode is active, the server refuses to start without TLS. A bearer token over plaintext is worse than no auth at all; Noema treats that combination as a hard startup error, not a warning.

Rings share one key, verifiable via a fingerprint command so every peer knows it's talking to the right ring. Keys live in environment variables or 0600 sidecar files, never in command-line history.

The HTTP transport demands an explicit host — binding to 0.0.0.0 is rejected outright, so a federation peer can't be accidentally exposed to every interface on the machine. The cortex must be named explicitly too; no silent defaults on a network-facing endpoint.

The work many projects push to v2 — auth middleware, host-binding safety, fingerprint verification, divergence-aware conflict resolution — is in v1.

Get started

Requires Go 1.25+.

$ go install github.com/Fail-Safe/Noema/cmd/noema@latest
$ noema init --name my-cortex
$ noema serve --transport stdio

For full setup, federation, and MCP configuration see the README.