CLI Reference
python -m appimage.ctl COMMAND [OPTIONS]
Always the interpreter you meant - same reasoning as python -m pip
over a bare pip. There’s no separate appimagectl console script:
that would resolve to whichever install happens to be first on PATH,
not necessarily the one you’re actually working in.
COMMAND is required - check, build, init, lock, enable-reproducible,
build-appdir, and update-tools are each a distinct, mutually exclusive action.
Commands
Command |
Description |
|---|---|
|
Build the AppImage. |
|
Show detected build configuration and exit without building. |
|
Write auto-detected values to |
|
Generate hash-pinned lock files and exit - a thin wrapper around |
|
One-command onboarding: runs |
|
Assemble the AppDir - install Python and packages, copy assets/extra files, run hooks, compile bytecode, scrub build-machine paths - without resolving appimagetool/the runtime stub or packaging into an |
|
Move every toolchain pin forward to whatever’s currently available - |
Options
Shared by every command above (a command-specific note is called out where one applies):
Option |
Description |
|---|---|
|
Override the application name. |
|
Override the console script entry point. |
|
Override the Python version to bundle (e.g. |
|
Override the python-build-standalone release date for reproducible builds (e.g. |
|
Override extras to install (e.g. |
|
Additional pip install target. May be repeated. |
|
Path to the project root (default: current directory). |
|
Path to a local appimagetool binary. Skips the build cache and download - |
|
Informational label for the pinned appimagetool build. |
|
Expected sha256 of the appimagetool binary, verified regardless of how it was resolved. |
|
Path to a local python-build-standalone tarball. Skips the download. |
|
Expected sha256 of the python-build-standalone tarball. |
|
Exact version of the bundled |
|
Expected sha256 of the |
|
Path to a local AppImage runtime ELF stub, passed to appimagetool as |
|
Expected sha256 of the runtime file, verified regardless of how it was resolved. |
|
Abort the build instead of warning whenever appimagetool, the runtime file, or the Python archive would otherwise be used unverified. |
|
Abort the build instead of warning when |
|
Path to a hash-pinned |
|
Abort the build instead of warning when |
|
Path to a hash-pinned pylock-format file constraining the packaged project’s own |
|
Abort the build instead of warning when |
|
Only meaningful on |
|
Enforce a build that’s reproducible across machines and over time: implies |
Examples
# Build with a specific Python version
python -m appimage.ctl build --python 3.13
# Reproducible build pinned to a specific release date
python -m appimage.ctl build --python-date 20260211
# Override app name and entry point
python -m appimage.ctl build --app myapp --entry-point myapp.cli:main
# Install extras and additional packages
python -m appimage.ctl build --extras production --package extra-lib
# Build from a different project directory
python -m appimage.ctl build --project-dir /path/to/project
# Use a locally installed appimagetool instead of downloading
python -m appimage.ctl build --appimagetool /opt/appimagetool-x86_64.AppImage
# Use a previously downloaded Python archive (e.g. from another build)
python -m appimage.ctl build --python-archive /shared/cache/python.tar.gz
# Fully offline build using local copies of appimagetool, the runtime, and Python
python -m appimage.ctl build \
--appimagetool /opt/appimagetool-x86_64.AppImage \
--runtime-file /opt/runtime-x86_64 \
--python-archive /shared/cache/python-3.11-x86_64.tar.gz
# Pin and verify the toolchain automatically, then build reproducibly
python -m appimage.ctl init # writes python_date/python_sha256/appimagetool_version/appimagetool_sha256/runtime_sha256
python -m appimage.ctl build
# Fail loudly instead of warning if anything ends up unverified
python -m appimage.ctl build --verify-downloads
# One command: pin the toolchain, hash-pin every dependency, verify with a
# real build, and turn reproducible = true on once that build succeeds
python -m appimage.ctl enable-reproducible
# Piecewise equivalent, plus a one-off enforced build afterwards
python -m appimage.ctl init
python -m appimage.ctl lock
python -m appimage.ctl build --reproducible
# Generate hash-pinned lock files (pylock.toml + build_pylock), then build against them
python -m appimage.ctl lock
python -m appimage.ctl build --require-pylock --require-build-pylock
# Regenerate both locks with a 7-day cooldown, excluding just-published releases
python -m appimage.ctl lock --uploaded-prior-to P7D
# Just assemble the AppDir - for testing, or deploying without packaging
# into a single-file .AppImage. Never touches appimagetool/the runtime stub.
python -m appimage.ctl build-appdir