Engineering & Specification Documentation
About QuadletGen
QuadletGen (quadletgen.com) is an independent, clean-room workbench that converts Docker Compose stacks and docker run or podman run commands into declarative Podman Quadlet systemd unit files inside browser memory.
Alignment with Podman 4.4+ and 5.x systemd generator specifications
Starting in Podman 4.4 and maturing across Podman 5.x, upstream Podman integrated Quadlet (podman-system-generator) directly into its core distribution and deprecated imperative podman generate systemd wrapper scripts. During every systemctl daemon-reload or systemctl --user daemon-reload cycle, the generator reads declarative .container, .network, and .volume source files and compiles transient systemd service definitions matched to the installed Podman version.
QuadletGen targets documented podman-systemd.unit(5) keys rather than legacy shell scripts. Service dependencies from depends_on compile into [Unit] After= and Requires= directives. Container restart rules map to [Service] Restart= supervision. Registry updates emit AutoUpdate=registry alongside [Install] WantedBy=default.target so rootless workloads under ~/.config/containers/systemd/ and rootful workloads under /etc/containers/systemd/ start cleanly at boot. Operators can verify every generated file locally with /usr/libexec/podman/quadlet --dryrun --user prior to reloading systemd.
Why automatic shared .network units solve inter-container DNS (podlet#190)
One of the most frequent breakages when migrating multi-service docker-compose.yml stacks to Podman Quadlet involves implicit service discovery, a recurring pain point documented in upstream community discussions including containers/podlet#190. Docker Compose automatically creates a project-scoped bridge network with internal DNS even when the Compose file omits a top-level networks: block. Application containers rely on that implicit bridge to reach peers by service name such as postgres:5432 or redis:6379.
When services are translated one by one into standalone .container units without a shared .network unit, rootless Podman attaches each container to isolated pasta or slirp4netns user-mode networking where peer container hostnames cannot resolve. QuadletGen eliminates that failure mode by synthesizing a dedicated <stack>.network unit by default and attaching every participating .container unit with Network=<stack>.network and NetworkAlias= entries. Podman then provisions netavark and aardvark-dns on that bridge so existing database and cache connection strings keep working unchanged.
100% browser-local execution so production secrets never leave RAM
Real-world Compose files routinely contain database passwords, JWT signing keys, S3 credentials, internal registry hostnames, and private filesystem paths. Pasting production manifests into server-backed web converters exposes sensitive operational metadata to remote logs.
QuadletGen runs its YAML parser, CLI flag tokenizer, SELinux :z and :Z volume relabeler, EnvironmentFile= secret splitter, and PKZIP binary packager strictly inside client-side JavaScript memory. Uploaded .yml files are read via the browser File API and exported via local Blob URLs without transmitting container definitions over the network. Read our Privacy Policy for full details on how you can verify zero-upload behavior in your browser DevTools Network tab.
Independent open-source workbench and non-affiliation notice
All parser logic, unit formatters, built-in templates, and documentation on QuadletGen are original MIT-licensed software built for Linux administrators running Fedora Server, Fedora CoreOS, Red Hat Enterprise Linux, CentOS Stream, Debian, Ubuntu, openSUSE MicroOS, and Universal Blue. There are zero container count limits, zero account walls, and zero paid tiers. To keep hosting sustainable, deployment documentation may feature clearly labeled infrastructure referral links governed by our Terms of Service.
Non-affiliation notice. QuadletGen (quadletgen.com) is an independent engineering project and is not affiliated with, endorsed by, or sponsored by Red Hat, Inc., IBM, the Podman project, the containers/podlet maintainers, Docker, Inc., or the Linux Foundation. Podman and Red Hat are trademarks or registered trademarks of Red Hat, Inc. in the United States and other countries. Docker is a trademark or registered trademark of Docker, Inc.
Contact and specification feedback
Found an edge case in a Compose directive, need a new Podman 5.x unit key mapped, or have a security question? Email the maintainer directly at hello@quadletgen.com with a sanitized snippet and your target Linux distribution plus podman --version output.