arrow_back Announcements

cpak 2.12.0 / September 2, 2026

Keep cpak services running after reboot

cpak 2.12 can keep an application command running, restart it after a failure and restore it when the machine starts. Its status now shows the package, process, health and listening ports together.

Name the application command once

A package can declare a named service command in its manifest. The manifest records the executable and its arguments, so each deployment can start the same application mode without rebuilding a command line.

"services": {
  "server": {
    "binary": "/usr/bin/example",
    "arguments": ["serve", "--port", "3000"]
  }
}

Run it once with cpak run --service server github.com/example/app, or enable it as a persistent service with its own restart policy, health check and dependencies.

cpak service enable app-prod github.com/example/app   --service server   --restart on-failure

Restore services on different Linux hosts

cpak uses the host startup mechanism that is available. It can install a systemd user service, a cron reboot entry or XDG autostart. The cpak service manager itself does not require systemd or D-Bus. When a host can restore applications only after login, cpak service setup reports that limit.

Pass deployment configuration without changing the image

--env and --env-file provide deployment values. --secret NAME=/path validates a private file and mounts it read-only below /run/secrets. Secret contents are not copied into the service definition or printed by service commands.

See whether the application is ready

cpak ps, status, inspect and health expose one runtime view. It includes the container, process, health result, running time and listener ports. JSON output is available for scripts, and cpak health returns a failing status when the application is not ready.

cpak ps
cpak status github.com/example/app --instance app-prod --json
cpak health github.com/example/app --instance app-prod

Existing interactive applications do not need a change. Package authors add a manifest service only when the application has a command worth naming, and operators choose whether to keep it running.

Better isolated X11 windows

X11 applications now follow the Xephyr window size and pass their title, icon and fullscreen state to the host desktop. Closing the last application window stops its cpak instance.

Packages can declare clipboard access in either direction. cpak copies approved text and image targets through its built-in broker while file lists, the host X11 socket and its authority file stay outside the package. No clipboard tool or D-Bus service is required in the image.

Edit complex permissions

cpak override edit <origin> opens the complete override JSON in your editor. For scripts, nested keys such as sessionBus.own accept arrays and objects directly through --value.

Projects and technologies around cpak