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, andgit commitit — 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
| Term | Meaning |
|---|---|
| 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.