Crewship can be configured via a YAML file passed at startup. Environment variables override YAML values. The config is loaded and validated in internal/config/config.go.
The shutdown_timeout controls how long the server waits for in-flight requests to complete during graceful shutdown. The server port must be between 1 and 65535.
Standard Docker (auto-detects Docker, Podman, Colima, OrbStack, Rancher)
apple
Apple Containers on macOS Tahoe+ (lightweight VMs)
auto
Auto-detect between docker and apple
Kubernetes provider is on the v0.2 roadmap.
Runtime options
Runtime
Security
Performance
runc
Standard Linux namespaces
Fast
runsc (gVisor)
Kernel-level syscall interception
Moderate
kata-runtime
Lightweight VM isolation
Slower
sysbox-runc
Enhanced container isolation
Moderate
The container_prefix is prepended to container names. For example, with container_prefix: "prod", a container would be named prod-team-engineering instead of crewship-team-engineering. Essential for multi-instance deployments.
As of PR #446, no env vars are required for first boot. Run crewship start against an empty data directory and the server will:
Listen on 0.0.0.0:8080
Use Docker as container provider
Store data in ~/.crewship (or $CREWSHIP_DATA_DIR)
Use BoltDB for state
Auto-generateENCRYPTION_KEY, NEXTAUTH_SECRET, and CREWSHIP_INTERNAL_TOKEN with crypto/rand, persisting them to <dataDir>/secrets.env at mode 0600
Auto-derive the NextJS URL from the listen port
Set env vars only when you need to override a default (different port, external secret manager, custom data dir, etc.). See Environment Reference for the full list.