Free and open-source software that starts workloads on demand and stops them after a period of inactivity.
Whether you don't want to overload your Raspberry Pi, or your QA environment is used only once a week and wastes resources by keeping workloads running, Sablier might be the solution you need.
You can install Sablier using one of the following methods:
- Use the Docker image
- Use the binary distribution
- Compile your binary from the sources
- Use the Helm Chart
- Docker Hub: sablierapp/sablier
- GitHub Container Registry: ghcr.io/sablierapp/sablier
Choose one of the Docker images and run it with a sample configuration file:
docker run -d -p 10000:10000 -v sablier.yaml:/etc/sablier/sablier.yaml sablierapp/sablier:1.10.2Grab the latest binary from the releases page and run it:
./sablier --helpgit clone git@github.com:sablierapp/sablier.git
cd sablier
make
# Output will change depending on your distro
./sablier_draft_linux-amd64Deploy Sablier to your Kubernetes cluster using the official Helm chart for production-ready deployments.
Add the Sablier Helm repository:
helm repo add sablierapp https://sablierapp.github.io/helm-charts
helm repo updateInstall Sablier:
helm install sablier sablierapp/sablierπ Full Documentation | π» Chart Repository
There are three ways to configure Sablier:
Configuration sources are evaluated in the order listed above.
If no value is provided for a given option, a default value is used.
At startup, Sablier searches for a configuration file named sablier.yml (or sablier.yaml) in:
/etc/sablier/$XDG_CONFIG_HOME/$HOME/.config/.(the working directory)
You can override this using the configFile argument.
sablier --configFile=path/to/myconfigfile.ymlprovider:
# Provider to use to manage containers (docker, swarm, kubernetes)
name: docker
server:
# The server port to use
port: 10000
# The base path for the API
base-path: /
storage:
# File path to save the state (default stateless)
file:
sessions:
# The default session duration (default 5m)
default-duration: 5m
# The expiration checking interval.
# Higher duration gives less stress on CPU.
# If you only use sessions of 1h, setting this to 5m is a good trade-off.
expiration-interval: 20s
logging:
level: debug
strategy:
dynamic:
# Custom themes folder, will load all .html files recursively (default empty)
custom-themes-path:
# Show instances details by default in waiting UI
show-details-by-default: false
# Default theme used for dynamic strategy (default "hacker-terminal")
default-theme: hacker-terminal
# Default refresh frequency in the HTML page for dynamic strategy
default-refresh-frequency: 5s
blocking:
# Default timeout used for blocking strategy (default 1m)
default-timeout: 1mEnvironment variables follow the same structure as the configuration file. For example:
strategy:
dynamic:
custom-themes-path: /my/pathbecomes
STRATEGY_DYNAMIC_CUSTOM_THEMES_PATH=/my/pathTo list all available arguments:
sablier --help
# or
docker run sablierapp/sablier:1.10.1 --helpCommand-line arguments follow the same structure as the configuration file. For example:
strategy:
dynamic:
custom-themes-path: /my/pathbecomes
sablier start --strategy.dynamic.custom-themes-path /my/pathSablier integrates seamlessly with Docker Engine to manage container lifecycle based on demand.
Features:
- Start and stop containers automatically
- Scale containers based on HTTP traffic
- Works with Docker Compose deployments
π Full Documentation
Sablier supports Docker Swarm mode for managing services across a cluster of Docker engines.
Features:
- Scale Swarm services on demand
- Distributed scaling across multiple nodes
- Seamless integration with Docker Swarm orchestration
π Full Documentation
Sablier works with Podman, the daemonless container engine, providing the same dynamic scaling capabilities as Docker.
Features:
- Rootless container management
- Docker-compatible API integration
- Seamless migration from Docker
π Full Documentation
Sablier provides native Kubernetes support for managing deployments, scaling workloads dynamically.
Features:
- Scale Kubernetes deployments and statefulsets
- Works with any Kubernetes cluster
- Label-based workload selection
π Full Documentation
Sablier integrates with Apache APISIX through a Proxy-WASM plugin, enabling dynamic scaling for your services.
Quick Start:
- Install the Sablier Proxy-WASM plugin
- Configure APISIX routes with Sablier plugin settings
- Define your scaling labels on target services
π Full Documentation | π» Plugin Repository
Sablier provides a native Caddy module for seamless integration with Caddy v2.
Quick Start:
- Build Caddy with the Sablier module using
xcaddy - Add Sablier directives to your Caddyfile
- Configure dynamic scaling rules
π Full Documentation | π» Plugin Repository
Sablier integrates with Envoy Proxy through a Proxy-WASM plugin for high-performance dynamic scaling.
Quick Start:
- Deploy the Sablier Proxy-WASM plugin
- Configure Envoy HTTP filters
- Set up scaling labels on your workloads
π Full Documentation | π» Plugin Repository
Sablier works with Istio service mesh using the Proxy-WASM plugin for intelligent traffic management.
Quick Start:
- Install the Sablier Proxy-WASM plugin in your Istio mesh
- Configure EnvoyFilter resources
- Annotate your services with Sablier labels
π Full Documentation | π» Plugin Repository
Sablier integrates with Nginx through a WASM module, bringing dynamic scaling to your Nginx deployments.
Quick Start:
- Build Nginx with WASM support
- Load the Sablier Proxy-WASM plugin
- Configure Nginx locations with Sablier directives
π Full Documentation | π» Plugin Repository
Sablier provides a powerful middleware plugin for Traefik, the cloud-native application proxy.
Quick Start:
- Add the Sablier plugin to your Traefik static configuration
- Create Sablier middleware in your dynamic configuration
- Apply the middleware to your routes
π Full Documentation | π» Plugin Repository
Join our Discord server to discuss and get support!
This project is maintained by a single developer in their free time. If you find Sablier useful, here are some ways you can show your support:
β Star the repository - It helps others discover the project and motivates continued development
π€ Contribute - Pull requests are always welcome! Whether it's:
- Bug fixes
- New features
- Documentation improvements
- Test coverage
π Share your usage - We'd love to see how you're using Sablier! Consider:
- Opening a discussion to share your setup
- Contributing examples of your deployment configurations
- Writing a blog post or tutorial
π¬ Engage with the community - Ask questions, report issues, or help others in discussions
Every contribution, no matter how small, makes a difference and is greatly appreciated! π
For detailed support options, see SUPPORT.md.
If you find Sablier valuable and want to support its development, please consider sponsoring the project:
π Sponsor on GitHub - Your sponsorship helps keep this project maintained and actively developed
Your support helps:
- Keep the project maintained and up-to-date
- Dedicate more time to bug fixes and new features
- Improve documentation and examples
- Support the broader open-source ecosystem
Every contribution, no matter the size, makes a real difference. Thank you for considering! π
This project is supported by: