Configuration Reference
Complete reference for all configuration options in devproc.yaml.
Top-Level Options
name: string # Required - Project nameenv: object # Optional - Global environment variablesdotenv: string # Optional - Path to .env filecompose: string # Optional - Path to docker-compose.ymlgroups: object # Optional - Service group definitionsservices: object # Required - Service definitionsname
Type: string
Required: Yes
Project name displayed in the DevProc header.
env
Type: Record<string, string>
Required: No
Global environment variables applied to all services.
env: NODE_ENV: development LOG_LEVEL: debugdotenv
Type: string
Required: No
Path to a .env file to load. Variables are merged with env (dotenv takes precedence).
dotenv: .env.localcompose
Type: string
Required: No
Path to Docker Compose file for compose services.
compose: docker-compose.ymlgroups
Type: Record<string, string[]>
Required: No
Service groups for UI organization.
groups: backend: - api - worker frontend: - webservices
Type: Record<string, ServiceConfig>
Required: Yes
Service definitions. At least one service is required.
Service Options
services: my-service: cmd: string # Required (unless compose is set) cwd: string # Optional - Working directory env: object # Optional - Environment variables depends_on: array|object # Optional - Dependencies healthcheck: string|object # Optional - Health check restart: string # Optional - Restart policy stop_signal: string # Optional - Stop signal color: string # Optional - Log color compose: boolean|string # Optional - Docker Compose service group: string # Optional - Group assignmentcmd
Type: string
Required: Yes (unless compose is set)
Command to execute. Parsed as shell command.
cmd: npm run devcmd: go run ./cmd/server -port 8080cmd: docker run --rm -p 5432:5432 postgres:16cwd
Type: string
Required: No
Default: Config file directory
Working directory for the command.
cwd: ./services/apicwd: /absolute/path/to/serviceenv
Type: Record<string, string>
Required: No
Service-specific environment variables. Merged with global env (service takes precedence).
env: PORT: "3000" DATABASE_URL: postgres://localhost/myappdepends_on
Type: string[] or Record<string, "started" | "healthy">
Required: No
Service dependencies.
# Simple form - wait for process startdepends_on: - postgres - redis
# Object form - wait for specific statedepends_on: postgres: healthy redis: startedhealthcheck
Type: string or HealthcheckConfig
Required: No
Health check configuration.
# Simple formhealthcheck: curl -f http://localhost:3000/health
# Full formhealthcheck: cmd: curl -f http://localhost:3000/health interval: 2s timeout: 5s retries: 30HealthcheckConfig
| Field | Type | Default | Description |
|---|---|---|---|
cmd | string | Required | Command to run |
interval | string | "2s" | Time between checks |
timeout | string | "5s" | Command timeout |
retries | number | 10 | Max failures before unhealthy |
restart
Type: "no" | "on-failure" | "always"
Required: No
Default: "no"
Restart policy when process exits.
| Value | Behavior |
|---|---|
no | Never restart |
on-failure | Restart if exit code ≠ 0 |
always | Always restart |
stop_signal
Type: string
Required: No
Default: "SIGTERM"
Signal to send when stopping the service.
stop_signal: SIGTERMstop_signal: SIGINTstop_signal: SIGKILLcolor
Type: "red" | "green" | "yellow" | "blue" | "magenta" | "cyan"
Required: No
Log color in “all services” view.
compose
Type: boolean | string
Required: No
Docker Compose integration.
compose: true # Use service namecompose: pg # Use different compose service namegroup
Type: string
Required: No
Assign service to a group.
group: backendDuration Format
Duration strings support these formats:
| Format | Example | Meaning |
|---|---|---|
Ns | 2s | N seconds |
Nms | 500ms | N milliseconds |
Nm | 1m | N minutes |
Complete Example
name: my-fullstack-app
env: NODE_ENV: development LOG_LEVEL: debug
dotenv: .env.local
compose: docker-compose.yml
groups: infrastructure: - postgres - redis backend: - api - worker frontend: - web
services: postgres: compose: true healthcheck: cmd: pg_isready -h localhost -p 5432 interval: 2s timeout: 5s retries: 30
redis: compose: true healthcheck: cmd: redis-cli ping interval: 1s retries: 30
api: cmd: air cwd: ./services/api depends_on: postgres: healthy redis: healthy env: PORT: "8080" DATABASE_URL: postgres://postgres:dev@localhost:5432/myapp healthcheck: cmd: curl -f http://localhost:8080/health interval: 2s retries: 30 color: green
worker: cmd: go run ./cmd/worker cwd: ./services/api depends_on: - api restart: on-failure env: REDIS_URL: redis://localhost:6379 color: yellow
web: cmd: bun run dev cwd: ./apps/web depends_on: - api env: VITE_API_URL: http://localhost:8080 color: cyanValidation
Validate your configuration:
devproc validateCommon validation errors:
| Error | Cause |
|---|---|
Missing required field: name | No project name |
Missing required field: services | No services defined |
Unknown service in depends_on | Dependency doesn’t exist |
Circular dependency detected | A → B → A |
healthcheck required for healthy dependency | depends_on: x: healthy but x has no healthcheck |