Mnema
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Mnemasummarize our onboarding flow and propose any doc updates"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mnema
Your AI assistant answers from its training data, not your team's. Mnema is a self-hostable knowledge workspace that publishes your docs, decisions, and step-by-step workflows to any MCP-aware AI client (Claude, ChatGPT, Cursor, Windsurf, Cline) over the Model Context Protocol — so your agents read your context, live, with no uploads or copy-paste.
This is the open-core repository (fair-code, Mnema Community License). It is the full core product and runs on its own; the enterprise modules are separate.
Quickstart (self-host in a few minutes)
Clone to a live MCP endpoint in about 4 minutes — a one-time image build. (A stone-cold first-ever build can take longer; it's I/O-bound on Docker's filesystem, not downloads. Native Linux is as fast or faster.)
Requirements: Docker + Docker Compose. (Working on the code itself, outside
Docker? Node 22 — nvm use picks it up from .nvmrc — and
pnpm 10; see CONTRIBUTING.md.)
git clone https://github.com/nbkdoesntknowcoding/mnema.git
cd mnema
./scripts/self-host-init.sh # generates secrets + the OAuth keypair, writes .env
docker compose up -d --build # postgres, redis, api, collab, workers, webThen:
Open http://localhost:4321 and create an account at
/auth/local(email + password).Connect an MCP client to your server:
http://localhost:8080/mcp(in Claude/Cursor, add it as a custom MCP/connector URL; you'll be sent back here to log in and approve).
That's it — the first workspace comes with a welcome doc and an example flow, so your first connection has something real to read.
Optional: set VOYAGE_API_KEY (semantic search) and GEMINI_API_KEY (autocomplete)
in .env — bring your own keys. Both stay disabled until set.
Related MCP server: Rootr MCP Server
Documentation
Connect an AI client — Claude, ChatGPT, Cursor, Windsurf, Antigravity
Embed Mnema in your own app — REST API + an API key
REST API reference — every public endpoint, auth, scopes, examples
What's in the core (this repo) vs. licensed
The free layer carries the full product; the gates sit on what organizations and R&D need. Plainly:
Capability | Core (this repo) | Licensed |
Docs, real-time editor, folders, search | ✅ | ✅ |
Flows (build + walk step-by-step via MCP) | ✅ | ✅ |
MCP server (read + propose/commit writes) | ✅ | ✅ |
Built-in email+password auth, or generic OIDC | ✅ | ✅ |
Self-host, single-workspace, unlimited docs | ✅ | ✅ |
Version history + document export | ✅ free with a community license | ✅ |
Knowledge graph (build, report, traverse) | ❌ | ✅ |
Meeting intelligence (bot, transcription, summaries) | ❌ | ✅ |
Org / IAM / SSO, audit logs, multi-workspace | ❌ | ✅ |
The knowledge graph, meeting intelligence, org/IAM+SSO, audit, and multi-workspace mode are commercial add-ons — the core runs perfectly without them, and its CI proves it builds and boots with the enterprise modules entirely absent. Licensing: LICENSE for the core; enterprise inquiries via the website.
Docs, flows, collaboration, and live MCP are free forever, registered or not. Version history and export are also free — we just ask for your email (a free community license, entered in Settings). Your history is recorded from day one; registering reveals it.
Self-host notes
Pin to a release tag. For a stable deployment, check out a tagged release rather than tracking
main:git fetch --tags && git checkout vX.Y.Z, thendocker compose up -d --build. Release tags are immutable and signed; upgrade by checking out a newer tag and rebuilding. See RELEASING.md and CHANGELOG.md.HTTPS / reverse proxy. Behind TLS, expose the collab WebSocket as
wss://<your-host>/collab(WebSocket upgrade enabled) and setPUBLIC_COLLAB_URL=wss://<your-host>/collab, then rebuild the web app (PUBLIC_*vars are baked in at build time). Otherwise the browser falls back tows://localhost:1234, which is blocked as mixed content on an HTTPS page — and every document shows "disconnected." Re-run./scripts/self-host-init.sh --url https://<your-host>to regenerate.envfor a public host.Backups. Everything lives in Postgres + the named volumes. Back up with
docker compose exec postgres pg_dump -U mnema mnema > backup.sqland snapshot thepgdata/redis_datavolumes.Requirements. Comes up on a 4 GB machine. Migrations apply automatically on first
up(idempotent).
Troubleshooting (self-host)
docker compose upexits immediately with "set POSTGRES_PASSWORD in .env" (orREDIS_PASSWORD). There's no.envyet — the compose refuses to boot with empty credentials. Run./scripts/self-host-init.shfirst (it writes.envwith generated secrets); add--forceto regenerate one that already exists."port is already allocated" on startup. The stack publishes three ports on 127.0.0.1:
4321(web),8080(api),1234(collab). Stop whatever holds the port, or change the host side of that service'sports:entry indocker-compose.yml.Every document shows "disconnected" (HTTPS deploys). The browser is trying
ws://localhost:1234— blocked as mixed content on an HTTPS page. SetPUBLIC_COLLAB_URL=wss://<your-host>/collab, proxy that path with WebSocket upgrade enabled, and rebuild the web image — see the HTTPS note above../scripts/self-host-init.sh --url https://<your-host> --forceregenerates.envwith the whole URL block derived for you.Changed a
PUBLIC_*var in.envbut the app ignores it.PUBLIC_*values are baked into the web image at build time, not read at runtime. Rebuild it:docker compose up -d --build web.First boot looks stuck. Startup is gated: postgres healthy →
migratecompletes → api healthy → web starts. Watchdocker compose psanddocker compose logs -f migrate api.(non-fatal on re-run)lines frommigrateare normal — the migrations are idempotent and re-runs are safe.The login page shows SSO buttons, or sign-up is nowhere to be found. Self-host sign-in lives at
/auth/local(email + password). Keep bothAUTH_PROVIDER=passwordandPUBLIC_AUTH_PROVIDER=passwordin.env— thePUBLIC_one is baked at build time, so rebuild the web image after changing it.
Run it with an AI agent (alternative)
Open the repo in Claude Code (or any coding agent) and paste:
Set up and run Mnema (this repo) for self-hosting. Confirm Docker is running, then run
./scripts/self-host-init.sh --defaultsanddocker compose up -d --build. Wait for all services healthy, open the web URL, create an account at/auth/local, and report the URLs. Fix any error you hit and continue.
Stack
pnpm monorepo — api (Fastify + Drizzle/Postgres), collab (Hocuspocus/Yjs), workers (BullMQ/Redis), web (Astro + React). Node 22, Postgres 16 + pgvector, Redis 7.
License
The core is licensed under the Mnema Community License (a Sustainable-Use fair-code license): free to use, modify, and self-host for your own internal or personal use; commercial hosting/reselling requires an agreement. See LICENSE, CONTRIBUTING.md, and TRADEMARK.md.
"Mnema" is a trademark of the maintainer — forks may use the code, not the name.
This server cannot be deployed
Maintenance
Related MCP Connectors
Team docs served to AI agents over MCP - search, Markdown reads, version pinning, read audit.
- WitWikiOAuthapp.witwiki
A shared team wiki your coding agents read and write — across every repo and every MCP client.
Hosted markdown project wikis your team's AI assistants read, search, and update over MCP.
- FlowdexOAuthdk.flowdex
Read and write your team's shared, AI-readable wiki from any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI applications to access and contextualize organizational knowledge sources including GitHub repositories and internal documentation through standardized MCP protocol integration. Features OAuth 2.1 authentication, vector-based semantic search, and optimized context chunking for enterprise development workflows.-
- AlicenseNot gradedqualityDmaintenanceProvides AI agents with direct, permissioned access to team documents, databases, spreadsheets, and knowledge via an MCP interface, enabling natural-language queries and management.431 npmMIT
- AlicenseAqualityAmaintenanceServes organizational context to MCP-capable AI agents from a local folder or GitHub repository, and lets agents propose changes that require human approval.414 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible AI agents to read and store architecture decisions, constraints, and research from a private Solveaux workspace, keeping generated code aligned with team-approved technical direction.338 npmMIT