Deployment
whook is a single static Go binary with SQLite built in, so most deploys are a matter of running one container or one binary.
Docker image
Prebuilt multi-arch images (linux/amd64, linux/arm64) are published to GitHub
Container Registry on every push to main and every v* tag. Tags: latest,
main, sha-<short>, and on releases the semver tags (1.2.3, 1.2).
docker run -p 8080:8080 -v whook-data:/data ghcr.io/edaywalid/whook:latest
Docker Compose
cp .env.example .env # set WHOOK_ADMIN_TOKEN and WHOOK_SECRET_KEY
docker compose up --build -d
Observability
GET /metrics exposes Prometheus metrics: ingest rate, ingest write latency,
delivery outcomes, and dead-letter volume. It sits behind the admin token, so point
your scraper at it with the Authorization: Bearer <token> header.
GET /healthz is an unauthenticated liveness check suitable for load balancers and
orchestrators.
Graceful shutdown
On SIGINT or SIGTERM the gateway stops accepting new work, lets in-flight
deliveries finish (up to a drain timeout), and then exits, so a deploy or restart
does not cut a delivery off mid-flight.
Scaling
For larger or multi-instance deploys, move from SQLite to Postgres. See Postgres.