Skip to main content

YAML Configuration

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 config file has twelve top-level sections: server, ipc, container, storage, state, logging, auth, llm_proxy, keeper, license, composio, and local_models. The Complete Reference below shows every field with its default; Section Details explains the load-bearing ones.

Loading Order

Complete Reference

Section Details

Server

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.

Container

Kubernetes provider is on the v0.2 roadmap.
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.

Storage

The base_path stores crew workspace files, agent output, and persistent data. The log_path stores agent execution logs.

State

BoltDB is the default state store for agent run tracking. A PostgreSQL state provider for high-throughput deployments is on the v0.2 roadmap. The /var/lib/crewship/state.db default holds for a packaged install (the deb/rpm unit pins CREWSHIP_DATA_DIR=/var/lib/crewship). Point CREWSHIP_DATA_DIR anywhere else and the default becomes <dataDir>/state.db — the bbolt file is exclusively locked by one process, so instances that share a data root cannot share it. The IPC socket_path default follows the same rule.

Auth

Never commit the jwt_secret or internal_token to version control. Use environment variables for sensitive values.

LLM Proxy

The LLM proxy manages token usage tracking and provider health monitoring.

Keeper

For development, start Ollama with models on an external SSD:
Then enable Keeper: KEEPER_OLLAMA_URL=http://localhost:11434 ./dev.sh start

Minimal Configuration

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-generate ENCRYPTION_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.

Production Configuration