Daemon that schedules Podman healthchecks without relying on systemd timers
Find a file
2026-03-06 18:01:58 +00:00
.github/workflows chore: publishing workflow now includes .deb and .rpm packages 2026-02-07 16:12:38 +00:00
assets feat: cleanup readme 2026-03-06 17:59:17 +00:00
src fix: align start_period log with actual timing 2026-03-05 11:11:18 +00:00
.envrc initial commit 2026-02-06 07:46:15 +00:00
.gitignore initial commit 2026-02-06 07:46:15 +00:00
Cargo.lock fix: align start_period log with actual timing 2026-03-05 11:11:18 +00:00
Cargo.toml fix: 🐛 align healthcheck timing with Docker/Podman defaults 2026-03-05 10:12:45 +08:00
LICENSE initial commit 2026-02-06 07:46:15 +00:00
README.md feat: cleanup readme #2 2026-03-06 18:01:58 +00:00

podman-healthcheckd

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

  1. On startup, enumerates running containers and inspects each for a healthcheck config
  2. Spawns an async timer per container that has a healthcheck defined
  3. Watches podman events for container start/stop/remove events and adjusts timers accordingly
  4. 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 .debsudo dpkg -i podman-healthcheckd_*_amd64.deb
Fedora/RHEL Download .rpmsudo 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