podup
docker-compose on rootless Podman — one static Rust binary. No daemon. No Python.
Website · Install · Quick start · Benchmarks · Docs
📥 Install
Debian / Ubuntu (apt) — recommended
Register the signed Glyndor repository and install — copy-paste:
&&
The keyring package registers https://apt.glyndor.net and ships the signing
key, so podup updates (and key renewals) arrive through apt upgrade — the apt
build omits self-update since apt owns upgrades. Signed, SHA-256 verified,
fail-closed. Requires Podman ≥ 5.0 (rootless).
apt, one-liner (script)
Same as above via the install script (registers the repo, then installs):
|
Linux / macOS (install script)
|
Windows (PowerShell)
irm https://glyndor.net/podup/install/windows | iex
Both installers verify the Ed25519 signature over SHA256SUMS and fail closed
otherwise.
Build from source
Self-update
podup update replaces the running binary in place only after verifying the
release's Ed25519 signature and SHA-256 checksum — it fails closed otherwise. See
docs/self-update.md for the trust model.
Podman version
podup tracks the latest stable Podman and supports its last two majors —
Podman 5.x and 6.x. It talks to Podman's native libpod API (still versioned
5.x — 5.2.0 on Podman 6), so it needs Podman ≥ 5.0. Validated on Podman
5.x (5.8.1) and 6.0.0 (the latter in CI against Fedora rawhide). Many distributions still ship 4.x — check
podman --version and upgrade if needed. Fedora, Debian trixie/sid and recent
Ubuntu releases carry 5.x; on an older release, install or upgrade Podman
following the official guide: https://podman.io/docs/installation.
Platforms
Linux, macOS and Windows (x86_64 and arm64). On macOS and Windows podup talks to
the podman machine VM through its host-side unix:// socket or npipe://
named pipe; the socket must be local (remote tcp:///ssh:// are rejected).
🚀 Quick start
⚡ Why
Rootless-native libpod API, real compose-spec (extends, profiles,
develop.watch, inline secrets), and systemd Quadlet export —
vs alternatives · Rust library.
sequenceDiagram
autonumber
participant Y as docker-compose.yml
participant P as podup
participant L as Podman · libpod REST
Y->>P: parse · substitute · resolve depends_on
P->>L: create networks · volumes · secrets
P->>L: start containers in order
L-->>P: health / status
P-->>Y: stack up
📊 Benchmarks
~7 MiB flat memory • near-zero CPU • up to 15× faster than podman-compose
Same Podman, same digest-pinned images, median of 10 runs. Full tables & methodology →
📖 Docs
Commands · Migrating from Compose · Benchmarks · Self-update · Security model
License
Apache-2.0 — report vulnerabilities privately via the Security tab, never in a public issue.