Skip to content

Installation

  • Python 3.12+
  • pip, uv, or pipx
  • An embedding provider for semantic search — pick one during mm init (see Embedding Providers below). Fine to skip at first: memtomem works keyword-only until you choose.
Terminal window
uv tool install 'memtomem[all]'

[all] is the recommended first install because it matches the main docs: ONNX dense embeddings, Korean tokenizer, Ollama / OpenAI providers, code chunking, the Web UI, Langfuse tracing, and LangGraph Store adapters. For a leaner footprint, drop the extras for a BM25-only install:

Terminal window
uv tool install memtomem # no extras — dense search, Web UI, Korean tokenizer unavailable until added

Opt into features later with e.g. uv tool install --reinstall 'memtomem[onnx,web]'.

After installing, verify the binary and upgrade with refreshed package metadata if the version looks stale:

Terminal window
mm --version
uv tool install 'memtomem[all]' --refresh

The extras below are what [all] bundles — install them individually when you want a narrower footprint.

ExtraDescriptionCommand
onnxfastembed local embeddings (recommended default)pip install memtomem[onnx]
ollamaOllama provider clientpip install memtomem[ollama]
openaiOpenAI provider clientpip install memtomem[openai]
koreankiwipiepy Korean morphological analysispip install memtomem[korean]
codetree-sitter AST chunking (Python / JS / TS)pip install memtomem[code]
webFastAPI + uvicorn Web UIpip install memtomem[web]
langfuseLangfuse observability tracingpip install memtomem[langfuse]
langgraphMemtomemStore and MemtomemBaseStore adapterspip install memtomem[langgraph]
allEverythingpip install memtomem[all]

After installation, the commands you’ll reach for most often:

CommandPurpose
mm initInteractive setup wizard
mm statusPost-install DB / config / embedding health check
mm search <query>Search the knowledge base
mm add <content>Add a memory entry
mm webLaunch Web UI dashboard (http://localhost:8080)
mm --version · mm versionPrint installed version

Full command list (including ingest, session, context, wiki, watchdog, schedule, tags, upgrade, uninstall): see the CLI Reference.

The MCP server itself ships as the memtomem-server console script. You don’t run it by hand — your MCP client (Claude Desktop, Claude Code, Cursor, etc.) launches it automatically once memtomem is registered in the client’s MCP config. For copy-paste mcpServers JSON per client, see Quick Start → Connect Your MCP Client.

memtomem keeps everything under your home directory — nothing leaves the machine:

PathWhat
~/.memtomem/memtomem.dbSQLite store (chunks + vectors)
~/.memtomem/config.jsonLTM configuration written by mm init
~/.memtomem/logs/web.logWeb UI log (from mm web -b)

Override the config directory with the MEMTOMEM_* env vars (see Configuration).

STM is optional. Install it after the LTM quick-start flow works if you want proactive memory surfacing (presenting relevant memories) or tool-response compression.

Terminal window
uv tool install memtomem-stm
ExtraDescriptionCommand
langfuseLangfuse observability tracingpip install memtomem-stm[langfuse]
langchainLangChain agent integrationpip install memtomem-stm[langchain]

After installation, the following commands are available:

CommandPurpose
mms init --mcp claudeFirst-time setup + auto-register with Claude Code
mms add <name> --command <cmd>Register an upstream MCP server
mms add --from-clientsBulk-import upstreams from existing MCP client configs
mms eject <name>Restore an imported server to its original client and unregister it from STM
mms listList registered servers (with a SURFACING column)
mms statusConfig summary — enabled flag and server count
mms healthProbe upstream connectivity + LTM surfacing readiness
mms --versionPrint installed version

The STM proxy itself ships as the memtomem-stm console script. As with LTM, you don’t launch it by hand — once STM is registered with your MCP client (via mms init --mcp claude, mms register, or a .mcp.json entry), the client starts it automatically. STM writes its proxy config to ~/.memtomem/stm_proxy.json; mms add / mms init manage it for you, so you rarely hand-edit it.

ProviderSetupGPUCost
ONNX (fastembed)Built-inNot requiredFree
Ollamaollama pull nomic-embed-textNot requiredFree
OpenAIAPI key requiredPaid

Not sure which to pick? Start with ONNX — it’s fully local, free, and needs no extra daemon or API key. You can always switch later by re-running mm init or setting MEMTOMEM_EMBEDDING__PROVIDER (note the double underscore — nested pydantic-settings keys use __ as delimiter).

CategoryTechnology
MCPFastMCP (stdio, SSE, Streamable HTTP)
FrameworkPydantic v2, Click (CLI), FastAPI (Web UI)
DatabaseSQLite (FTS5 full-text search), sqlite-vec (vector search)
Code parsingtree-sitter (Python, JS, TS AST)
Koreankiwipiepy morphological analyzer (optional)
ObservabilityLangfuse (optional)