Quick start
Run the container
Docker Compose
Adocker-compose.yml is included for the common case.
spaceduck-data volume across restarts and upgrades.
Persistence
The container stores its SQLite database at/data/spaceduck.db. The compose file mounts a named volume at /data, so your data survives container restarts.
Default database path inside the container:
Environment variables
| Variable | Default | Purpose |
|---|---|---|
PORT | 3000 | Gateway listen port |
LOG_LEVEL | info | Logging verbosity (debug, info, warn, error) |
PROVIDER_NAME | (unset) | AI provider (configured via Settings UI or env) |
PROVIDER_MODEL | (unset) | Optional model override |
MEMORY_BACKEND | sqlite | Memory backend |
MEMORY_CONNECTION_STRING | spaceduck.db | SQLite file path (set to /data/spaceduck.db in Docker) |
API keys
Pass provider API keys as environment variables:GEMINI_API_KEYOPENROUTER_API_KEYAWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY/AWS_REGION
Running the CLI inside the container
The image includes the CLI bundle. If your container is namedspaceduck:
Local AI providers
If you want Spaceduck inside Docker to connect to a model server running on your host machine (LM Studio, llama.cpp, etc.):- macOS / Windows
- Linux
Docker Desktop provides
host.docker.internal to reach the host:Healthcheck
The image includes a built-in healthcheck against/api/health. Verify manually:
Notes
- Playwright/browser tooling is not included in the default image to keep it lean.
- The Docker image is intended for gateway-first usage. The CLI is included for setup and maintenance inside the container.
- To add custom binaries or system packages, extend the image with your own Dockerfile.
