Skip to main content

Docker

Graph Memory provides multi-platform Docker images (amd64 + arm64) on GitHub Container Registry.

Quick start​

docker run -d \
--name graph-memory \
-p 3000:3000 \
-v $(pwd)/graph-memory.yaml:/data/config/graph-memory.yaml:ro \
-v /path/to/my-app:/data/projects/my-app:ro \
-v graph-memory-models:/data/models \
ghcr.io/graph-memory/graphmemory-server

Docker Compose​

services:
graph-memory:
image: ghcr.io/graph-memory/graphmemory-server
ports:
- "3000:3000"
volumes:
- ./graph-memory.yaml:/data/config/graph-memory.yaml:ro
- /path/to/my-app:/data/projects/my-app:ro
- models:/data/models
restart: unless-stopped

volumes:
models:

Volume mounts​

Container pathPurpose
/data/config/graph-memory.yamlConfig file (read-only)
/data/projects/<name>Project directories (read-only for indexing)
/data/modelsEmbedding model cache (persist across restarts)
Persist the model cache

Use a named volume for /data/models to avoid re-downloading the ~560 MB embedding model on every container restart.

Config for Docker​

In your graph-memory.yaml, use the container paths:

projects:
my-app:
projectDir: "/data/projects/my-app"

server:
host: "0.0.0.0" # bind to all interfaces inside container
modelsDir: "/data/models"

Why a config file is required for Docker​

Running without a config file uses the container's working directory (/app) as the project, which indexes the built application files instead of your source code. Always provide a config file that points projectDir to the correct container path for your mounted project directories.

Write access for file mirror​

If you use knowledge, tasks, or skills graphs, the file mirror writes .notes/, .tasks/, and .skills/ directories inside the project. In that case, do not mount the project directory as read-only (:ro):

-v /path/to/my-app:/data/projects/my-app   # no :ro — allows file mirror writes

Other commands​

Run one-shot indexing or force re-index via Docker:

# One-shot index
docker run --rm \
-v $(pwd)/graph-memory.yaml:/data/config/graph-memory.yaml:ro \
-v /path/to/my-app:/data/projects/my-app:ro \
-v graph-memory-models:/data/models \
ghcr.io/graph-memory/graphmemory-server \
index --config /data/config/graph-memory.yaml

# Force re-index on serve
docker run -d \
-p 3000:3000 \
-v $(pwd)/graph-memory.yaml:/data/config/graph-memory.yaml:ro \
-v /path/to/my-app:/data/projects/my-app:ro \
-v graph-memory-models:/data/models \
ghcr.io/graph-memory/graphmemory-server \
serve --config /data/config/graph-memory.yaml --reindex