Repo of the Day
sablierapp/sablier
Published: Oct 28, 2026
Open repository ↗Start your containers on demand, shut them down automatically when there's no activity. Docker, Docker Swarm Mode, Podman, Kubernetes and Proxmox LXC compatible
Summary
Sablier is a Go API server that starts workloads on demand and stops or pauses them after a session expires. Reverse proxy plugins call Sablier, display a waiting page while a workload wakes up, and then allow normal traffic to continue.
What it is useful for
Sablier is aimed at environments where keeping every workload running wastes resources: a QA environment used once a week, a Raspberry Pi host, or cloud services scaled to zero. It supports Docker, Docker Swarm, Podman, Kubernetes Deployments and StatefulSets, Proxmox LXC, systemd units, Nomad task groups, and AWS ECS services.
Beyond stopping idle workloads, scale mode keeps replicas running while throttling CPU and memory, including Docker block-I/O controls, then restores the active limits when a session begins. Anti-affinity can make one workload group idle while another is active, which is useful when groups contend for RAM or GPU memory. Teams can also enable Prometheus metrics, OpenTelemetry tracing, and webhooks for workload start and stop events.
There are important constraints. Workloads that scale to zero need a reliable healthcheck; without one, Sablier cannot distinguish a container that has started from one ready to accept traffic. Nomad support is experimental, and Docker per-device block-I/O limits require Docker API version 1.55 or newer.
How engineers can use it
For a Docker trial, the README creates a workload with the required Sablier labels and a healthcheck:
docker run -d --health-cmd "/mimic healthcheck" -p 8080:80 --name mimic \
--label sablier.enable=true \
--label sablier.group=demo \
sablierapp/mimic:v0.3.3 \
-running -running-after=5s \
-healthy=true -healthy-after=5s
Stop it to simulate a scaled-down workload:
docker stop mimic
Then start Sablier with Docker Compose. The documented compose.yaml mounts the Docker socket, publishes port 10000, and selects the Docker provider:
services:
sablier:
image: sablierapp/sablier:1.19.1
command:
- start
- --provider.name=docker
ports:
- "10000:10000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Run docker compose up -d, then request a 20-second session:
curl -v "http://localhost:10000/api/strategies/blocking?group=demo&session_duration=20s"
Sablier starts the container and stops it when the session expires. For production traffic, the README provides integrations for Traefik, Caddy, Nginx, Envoy, Istio, and Apache APISIX. Provider-specific credentials and settings should be taken from the provider sections and linked documentation in the README.