Daemon that schedules Podman healthchecks without relying on systemd timers
- Rust 100%
| .github/workflows | ||
| assets | ||
| src | ||
| .envrc | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| README.md | ||
A lightweight Rust daemon that schedules Podman healthchecks without relying on systemd timers. Works on any Linux distribution.
Why
Podman normally depends on systemd timers to run container healthchecks. On systems without systemd (Guix, Alpine, Void, etc.), healthchecks simply never execute. This daemon replaces that functionality with a standalone process.
How it works
- On startup, enumerates running containers and inspects each for a healthcheck config
- Spawns an async timer per container that has a healthcheck defined
- Watches
podman eventsfor container start/stop/remove events and adjusts timers accordingly - On SIGINT/SIGTERM, cancels all timers and exits cleanly
The daemon only acts as a clock — podman healthcheck run handles retries, failing streaks, and on-failure actions internally.
Install
| Method | Command |
|---|---|
| Cargo | cargo install podman-healthcheckd |
| Debian/Ubuntu | Download .deb — sudo dpkg -i podman-healthcheckd_*_amd64.deb |
| Fedora/RHEL | Download .rpm — sudo rpm -i podman-healthcheckd-*.x86_64.rpm |
| Guix | guix install -L <panther> podman-healthcheckd (Panther channel) |
Pre-built binaries for Linux (x86_64) on GitHub Releases.
Guix service
A Guix service definition is available in the Panther channel for running podman-healthcheckd as a managed system service.
Build
cargo build --release
On Guix:
guix shell rust rust:cargo gcc-toolchain -- sh -c "CC=gcc cargo build --release"
Usage
RUST_LOG=info ./target/release/podman-healthcheckd
Log levels: error, warn, info, debug, trace (via RUST_LOG).
License
MIT