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:
| Service | Role | Port |
|---|---|---|
postgres | Postgres with pgvector (pgvector/pgvector:pg16) — durable store | 5432 |
redis | Redis (redis:7-alpine) — queue / cache backing the API | 6379 |
memory-retrieve | Rust retrieval/engine service (gRPC) | 50051 |
api | HTTP API (serves the per-project MCP endpoint) | 3000 |
frontend | Static admin SPA (nginx) | 8080:80 |
Bring it up
cd memory-thinkfleet
docker compose up --buildTo start only part of the stack:
docker compose up postgres # just the database
docker compose up --build memory-retrieve # the Rust retrieval path onlyThe 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-retrieveSee 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:
{
"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.