LabscoMCP early access ↗
fjwood69MCP SERVER

Mori

Shared memory for coding agents with provenance — a memory true in one repo stops leaking into another.

by fjwood69 ↗Agent MemoryCommunity

LABSCO SUMMARY

Memory that knows where it applies.

A memory that was true in another repository is worse than no memory — it sends an agent confidently after an API that does not exist here. Scoping retrieval by provenance, and putting a human between a proposal and canon, is what turns a shared store into something you can leave on.

What it is

A self-hosted memory server your coding agents write into and read from. What separates it from a vector store with a retrieval prompt is the gate: curation decides what is kept, and provenance decides where it is valid, so canon bound to one repository is withheld when you are working in another. Session events arrive through agent lifecycle hooks, get distilled into structured memories, and are surfaced at the start of the next session.

What you get

  • Session grounding — /brief loads shared context at session start, and /brief --post-compact is a lightweight delta that surfaces only what changed since your last brief
  • The dream pipeline — /dream distils session events into structured memories, running at high recall because nothing it produces reaches canon without a human promoting it
  • Search and browse — /pensieve over the shared store, with SQLite FTS5 or Postgres full-text behind it, plus a web memory browser at the server root
  • Ingestion and review — /ingest takes PDFs, images, git and transcripts; proposals land in a review queue and /review shows source, diff, approve and reject before anything becomes canonical
  • Governance — capability-scoped API keys with read, write and dreamer roles, versioning, trusted dreamers, rollback and attribution, with every write landing a write_audit row in the same transaction
  • Across machines — /nats for real-time cross-device awareness, /msg to send tasks and questions between agents, /update to push slash commands to every device
  • Project tracking — /req keeps a lightweight checklist that shows up in the brief; /consult asks for strategic review with your standards injected

Requirements

Your own deployment — Railway, Render, Fly or Cloud Run, or any stateless host with managed Postgres; a container build with podman or docker is one command. MORI_API_KEY holds your model provider key in direct mode, with MORI_MODEL, MORI_DREAM_MODEL and MORI_FAST_MODEL choosing which model does the advising, the distillation and the fast checks. Set MORI_API_KEYS to give each client a named key — without it the server starts in open mode, which is fine on a private network and not otherwise. MORI_BRIEF_SCOPE defaults to safe, which is the provenance-routed brief; all is the legacy behaviour with no scoping. MORI_TRUSTED_DREAMERS names the hostnames allowed to promote memories. In Claude Code the plugin wires the MCP connection, hooks and skills in one step. AGPL-3.0, with commercial licences available.

Setup effort

Build from source — git clone https://github.com/fjwood69/mori.git