Skip to content

buildctl

⚠ Redesigned (2026-07-05). The implementation this section documents was removed and the tool redesigned — see the CLI overview for the new surface and ADR-0031 for the decision. Headlines: no pure-Go pipeline (assembly delegated, container on macOS), backends docker/mkosi/shell, never auto-detected, signing inside build, local-only index init/add/update instead of publish. The tutorials and reference pages below describe the old tool and await rewrite.

buildctl builds signed DDI packages for Offline Lab and any systemd-based host that runs portable services. It takes a project directory with a package.yaml and a build backend, and produces a .raw image with dm-verity integrity and a PKCS7 signature that systemd verifies natively at attach time.

Where to start

New to buildctl? Work through Build your first package. It scaffolds, builds, and validates a complete DDI from scratch.

Tutorials

How-to guides

Task-focused recipes. Assume you have buildctl installed and a signing key.

Reference

Explanation

buildctl is one tool in the Offline Lab ecosystem. It produces packages that appctl installs and manages on devices. For the package format specification, repository model, security model, and the conceptual build pipeline, see the Offline Lab documentation.