Repolode
sablierapp

sablierapp/sablier

Starts containers and other workloads on demand when requests arrive and stops them after a period of inactivity, working with reverse proxies.

Stars
3,114
Forks
106
Open issues
68
Last commit
20 hours ago

What is it?

Sablier is a self-hosted server that starts sleeping workloads when a request arrives and shuts them down after a configurable period of inactivity. It supports Docker, Docker Swarm, Podman, Kubernetes, Proxmox LXC and systemd as providers, so the same approach works across container runtimes and hosts.

Sablier is usually paired with a reverse proxy plugin for Traefik, Caddy, Nginx, Envoy, Apache APISIX or Istio. The plugin intercepts incoming requests, calls the Sablier API to wake the target service, and shows a waiting page until it is ready. Sessions can be requested with a blocking strategy that holds the connection, or a dynamic strategy that serves a themed loading page.

Beyond stopping workloads, Sablier can throttle CPU, memory and block I/O instead of stopping them in scale mode, and it can make one group yield resources to another through anti-affinity. It also offers webhooks for start and stop events, Prometheus metrics and OpenTelemetry tracing.

Key features

  • 01Starts and stops Docker, Swarm, Podman, Kubernetes, Proxmox LXC and systemd workloads on demand.
  • 02Integrates with Traefik, Caddy, Nginx, Envoy, Apache APISIX and Istio through proxy plugins.
  • 03Shows a customizable waiting page with themes while a workload warms up.
  • 04Scale mode throttles CPU and memory when idle instead of stopping containers.
  • 05Sends webhook notifications on instance start and stop.
  • 06Exposes Prometheus metrics and OpenTelemetry traces.

Use cases

  • Running services on a Raspberry Pi and keeping rarely used apps stopped until someone visits them.
  • Keeping QA or staging environments that are only used occasionally from consuming resources.
  • Scaling idle Kubernetes deployments to zero to cut cloud costs.
  • Letting a GPU-heavy service yield memory to another service that is in use.

Quick start

  1. 1

    Run the Sablier server with Docker (copy the compose.yaml from the README)

    docker run --name sablier -p 10000:10000 -v /var/run/docker.sock:/var/run/docker.sock sablierapp/sablier:1.10.5 start --provider.name=docker
  2. 2

    Start a demo container with Sablier labels

    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
  3. 3

    Request a session for the demo group through the Sablier API

    curl -v http://localhost:10000/api/strategies/blocking\?group\=demo\&session_duration\=20s

Things to know

  • Needs a Docker socket, Kubernetes API, Podman or Proxmox setup to manage workloads.
  • Containers must define a healthcheck to scale to zero reliably.
  • Licensed under AGPL-3.0, a copyleft license with network-use obligations.

In collections

Topics

FAQ

What is sablier?
Starts containers and other workloads on demand when requests arrive and stops them after a period of inactivity, working with reverse proxies. Sablier is a self-hosted server that starts sleeping workloads when a request arrives and shuts them down after a configurable period of inactivity. It supports Docker, Docker Swarm, Podman, Kubernetes, Proxmox LXC and systemd as providers, so the same approach works across container runtimes and hosts.
Is sablier free to use? What license does it have?
sablier is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
Is sablier still maintained?
Actively maintained. The last commit to sablier was on Nov 6, 2026.
What can I use sablier for?
Running services on a Raspberry Pi and keeping rarely used apps stopped until someone visits them. Keeping QA or staging environments that are only used occasionally from consuming resources. Scaling idle Kubernetes deployments to zero to cut cloud costs. Letting a GPU-heavy service yield memory to another service that is in use.
How do I install sablier?
Run the Sablier server with Docker (copy the compose.yaml from the README): docker run --name sablier -p 10000:10000 -v /var/run/docker.sock:/var/run/docker.sock sablierapp/sablier:1.10.5 start --provider.name=docker Start a demo container with Sablier labels: 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 Request a session for the demo group through the Sablier API: curl -v http://localhost:10000/api/strategies/blocking\?group\=demo\&session_duration\=20s
Where can I get sablier?
The source code and installation instructions are on GitHub: https://github.com/sablierapp/sablier

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects