Operator
Docker
Run SLAW in Docker without installing Node or pnpm locally.
Compose quickstart (recommended)
docker compose -f docker/docker-compose.quickstart.yml up --build
Open http://localhost:3100.
Defaults:
- Host port:
3100 - Data directory:
./data/docker-slaw
Override with environment variables:
SLAW_PORT=3200 SLAW_DATA_DIR=../data/pc \
docker compose -f docker/docker-compose.quickstart.yml up --build
note
SLAW_DATA_DIR is resolved relative to the compose file (docker/), so ../data/pc maps to data/pc in the project root.
Manual Docker build
docker build -t slaw-local .
docker run --name slaw \
-p 3100:3100 \
-e HOST=0.0.0.0 \
-e SLAW_HOME=/slaw \
-v "$(pwd)/data/docker-slaw:/slaw" \
slaw-local
Data persistence
All data is persisted under the bind mount (./data/docker-slaw):
- Embedded PostgreSQL data
- Uploaded assets
- Local secrets key
- Agent workspace data
Claude and Codex adapters in Docker
The Docker image pre-installs:
claude(Anthropic Claude Code CLI)codex(OpenAI Codex CLI)
Pass API keys to enable local adapter runs inside the container:
docker run --name slaw \
-p 3100:3100 \
-e HOST=0.0.0.0 \
-e SLAW_HOME=/slaw \
-e OPENAI_API_KEY=sk-... \
-e ANTHROPIC_API_KEY=sk-... \
-v "$(pwd)/data/docker-slaw:/slaw" \
slaw-local
Without API keys, the app runs normally — adapter environment checks surface the missing prerequisites.
Next steps
- Database — point SLAW at an external Postgres
- Environment Variables — container config
- Deployment Modes — auth and exposure