MemMesh — persistent, self-improving memory for AI agents. Get started →
Self-HostingRun with Docker

Run with Docker

Most users don’t need this. The simplest local setup is the single thinkfleet-memory binary over stdio — npx @thinkfleet/memmesh install — with no server or database to run. See the Quickstart. The Docker stack below is the advanced self-host HTTP server path, for teams that want a shared, networked endpoint.

This is the advanced self-host path: run the MemMesh engine as an HTTP server on your own infrastructure. The quickest way to get a full stack is Docker Compose, which brings up the database, the cache, the retrieval service, and the API.

The stack

docker compose up --build starts these services:

ServiceRolePort
postgresPostgres with pgvector (pgvector/pgvector:pg16) — durable store5432
redisRedis (redis:7-alpine) — queue / cache backing the API6379
memory-retrieveRust retrieval/engine service (gRPC)50051
apiHTTP API (serves the per-project MCP endpoint)3000
frontendStatic admin SPA (nginx)8080:80

Bring it up

cd memory-thinkfleet
docker compose up --build

To start only part of the stack:

docker compose up postgres                 # just the database
docker compose up --build memory-retrieve  # the Rust retrieval path only

The memory-retrieve build expects the engine source as a build context (../thinkfleet-memory-engine, mounted relative to the compose file). Adjust the path in docker-compose.yml if your checkout differs.

Engine-only (no Docker)

You can also run the retrieval engine directly against a local Postgres — useful for development. In broad strokes:

# 1. Start Postgres with pgvector
docker run -d --name memory-pg -p 5432:5432 \
  -e POSTGRES_PASSWORD=memory -e POSTGRES_DB=memory \
  pgvector/pgvector:pg16
 
# 2. Provide a license token
export MEMORY_LICENSE_TOKEN=eyJ...
 
# 3. Run the engine (single-license mode)
MEMORY_DATABASE_URL=postgres://postgres:memory@localhost/memory \
  MEMORY_GRPC_ADDR=0.0.0.0:50051 \
  MEMORY_LICENSE_MODE=single \
  cargo run -p memory-retrieve

See Configuration for the full set of environment variables.

Connect your editor

The api service exposes a per-project MCP endpoint. Each project has its own path and bearer token — the console’s admin UI generates the ready-to-paste block:

editor MCP config
{
  "mcpServers": {
    "thinkfleet-memory": {
      "type": "http",
      "url": "http://localhost:3000/api/v1/projects/YOUR_PROJECT_ID/mcp-server/http",
      "headers": {
        "Authorization": "Bearer YOUR_PROJECT_TOKEN"
      }
    }
  }
}

A managed, multi-tenant version of this endpoint — Mesh Router (hosted) — is coming soon. Until then, either run the local stdio engine or self-host this stack.

To remove it later, delete the thinkfleet-memory entry under mcpServers. For the config shapes per client, see the MCP overview.