Memora is the Memory-as-a-Service API for AI apps — durable, multi-tenant, versioned memory with vector + graph recall, callable from any MCP-aware agent.
- memora-core — single-binary HTTP server with bundled MCP transport.
- memora-cli — first-class command-line tool, built from the same Go module.
- Pluggable adapters behind three Go interfaces —
PrimaryStore,VectorStore,LedgerStore. OSS ships SQLite + sqlite-vec + sqlite-ledger as zero-dependency defaults; Postgres + pgvector ship as scale-up adapters. - Context Graph — typed, directed edges between Memories (
parent_of,derived_from,supersedes,references,session_of,mentions) plus graph-augmented Recall. - Agent identity — every Memory / Cell / Edge / Ledger entry carries an
agent_id. Pluggable providers:opaque,a2a,did,oauth_agent,oidc_agent,anthropic_session.
git clone https://github.com/axiom-studio/memora && cd memora
make build
# 1) Start the server
./bin/memora-core serve --addr=127.0.0.1:7777 --data-dir=./data &
# 2) Create a workspace + remember it
export MEMORA_ENDPOINT=http://127.0.0.1:7777
WS=$(./bin/memora-cli workspaces create --name demo -o json | jq -r .id)
export MEMORA_WORKSPACE=$WS
# 3) Imprint a memory
./bin/memora-cli imprint --text "Customer wants the enterprise plan."
# 4) Recall by keyword
./bin/memora-cli recall enterprise
# 5) Patch it — only the changed cell re-embeds (the moat)
WMK=$(./bin/memora-cli lookup 7d4e2a91-5b3c-4f8e-a1d6-9c0b2e7f3a58 -o json | jq -r .head_watermark)
./bin/memora-cli patch 7d4e2a91-5b3c-4f8e-a1d6-9c0b2e7f3a58 \
--patch '[{"old_string":"enterprise","new_string":"premium"}]' \
--if-match $WMK
# ✓ Patched 7d4e2a91-5b3c-4f8e-a1d6-9c0b2e7f3a58
# Cells re-embed: 1
# Cells skipped: 0 (the moat)Docker:
docker run -p 7777:7777 -v memora-data:/data ghcr.io/axiom-studio/memora-core:latestAttach via MCP (Claude Code, etc.):
./bin/memora-core mcp --data-dir=./data
# JSON-RPC 2.0 over stdio; 26 OSS tools.Three docker-compose configurations are available for development and testing:
| Setup | Location | Backends | Ports |
|---|---|---|---|
| Dev (single node) | docker-compose.yml |
SQLite + sqlite-vec | 7777 |
| Federation (3-node) | deploy/federation/ |
SQLite + sqlite-vec | 7771-7773 |
| Federation Prod (3-node) | deploy/federation-prod/ |
Postgres + pgvector | 7771-7773 |
The dev and federation stacks publish their ports on 127.0.0.1 only and
need an API key; no key is committed, so each needs a .env first.
# Start dev (key in ./.env):
cp .env.example .env # then set MEMORA_API_KEY, e.g. openssl rand -hex 24
docker compose up -d
# Start federation (SQLite; keys in deploy/federation/.env):
cp deploy/federation/.env.example deploy/federation/.env # then fill it in
docker compose -f deploy/federation/docker-compose.yml up -d
# Start federation-prod (Postgres) — needs secrets first, see deploy/federation-prod/README.md:
cp deploy/federation-prod/.env.example deploy/federation-prod/.env # then fill it in
docker compose -f deploy/federation-prod/docker-compose.yml up -dPre-built env files and test fixtures live in test/fixtures/. To run
CLI-based integration tests against a running docker-compose setup:
# Build the CLI first:
CGO_ENABLED=0 go build -o memora-cli ./cmd/memora-cli/
# Load the keys from the stack's .env, then source the env file for your target:
set -a; . ./.env; set +a # (or deploy/federation*/.env)
source test/fixtures/env.dev # single dev node
source test/fixtures/env.federation # 3-node SQLite federation
source test/fixtures/env.federation-prod # 3-node Postgres federation
# Run the test suite:
./test/fixtures/run-cli-tests.sh dev
./test/fixtures/run-cli-tests.sh federation
./test/fixtures/run-cli-tests.sh federation-prodThe test script exercises health checks, workspace CRUD, imprint (plain text,
markdown, CSV, JSONL with chunker configs), list, recall, and federation
cross-node fanout (for federation targets). Test data fixtures are in
test/fixtures/ (sample.txt, sample.md, sample.csv, sample.jsonl).
┌──────────────────────────────┐
Clients ───▶ │ memora-core (HTTP + MCP) │
└──────────────────────────────┘
│ │ │
┌──────┘ │ └──────┐
▼ ▼ ▼
PrimaryStore VectorStore LedgerStore
(SQLite (sqlite-vec (SQLite
/ Postgres) / pgvector) / file
/ Postgres)
See docs/dev-docs/architecture.md for the full architecture walkthrough (forthcoming with the F12 docs milestone).
- Memora Core (this repo) — Apache-2.0, self-hostable, zero-dependency default. Specified in the OSS PRD.
- Memora Cloud — managed multi-tenant SaaS by Axiom Studio, hosted MCP endpoint, AWS S3 Vectors VectorStore, SLAs, compliance attestations. Specified separately under the Cloud PRD.
The public API surface is identical across editions. Migration from OSS to Cloud is an endpoint URL + API key change, no code changes.
Apache-2.0 — see LICENSE and NOTICE.
Telemetry is off by default in OSS. Opt-in via MEMORA_TELEMETRY=anonymous
to send anonymous usage counts to Axiom Studio (helps roadmap prioritization).

