Skip to content

Runbook

Operational reference for running Wakeplane in production or staging environments.

Operator warning: Wakeplane has no authentication or RBAC. Bind it to localhost, a trusted subnet, VPN, Tailscale, or a reverse-proxied private network. Do not expose it directly to the public internet. See Security before deploying.

Terminal window
WAKEPLANE_DB_PATH=/var/lib/wakeplane/data.db \
WAKEPLANE_HTTP_ADDR=:8080 \
WAKEPLANE_WORKER_ID=wrk_prod_01 \
wakeplane serve

Verify startup:

Terminal window
curl http://localhost:8080/healthz # {"ok":true}
curl http://localhost:8080/readyz # {"ok":true,"storage":"ok"}
EndpointPurposeProbe type
GET /healthzProcess is aliveLiveness
GET /readyzDatabase is reachableReadiness

Send SIGINT or SIGTERM. The daemon emits structured shutdown logs and timeout warnings if drain exceeds the deadline.

Scrape GET /v1/metrics.

MetricAlert conditionMeaning
runs_failed_totalIncreasingExecutions failing
dead_letters_total> 0Runs exhausted all retries
claimed_but_expired_total> 0Workers dying mid-execution or lease TTL too short
runs_dueGrowing over timeDispatcher not keeping up
runs_retry_queuedGrowing over timeRetries accumulating

GET /v1/status exposes scheduler timing, worker counts, and run counts.

Recovery is automatic on next startup through lease-expiry handling.

Expired claimed leases are reset to pending.

Inspect target configuration, executor logs, and run receipts.

Ensure no other process is writing to the SQLite file.

Terminal window
wakeplane schedule get <id>
wakeplane run list
VariableDefaultDescription
WAKEPLANE_DB_PATH./wakeplane.dbSQLite database file path
WAKEPLANE_HTTP_ADDR:8080HTTP listen address
WAKEPLANE_WORKER_IDwrk_localWorker identity string in lease records
WAKEPLANE_SCHEDULER_INTERVAL_SECONDS5Planner loop tick interval
WAKEPLANE_DISPATCHER_INTERVAL_SECONDS2Dispatcher loop tick interval
WAKEPLANE_LEASE_TTL_SECONDS30Worker lease TTL for crash recovery