lawn app
Commands for one installed app take its instance name or ID.
| Command | Description |
|---|---|
lawn app install <id> | Install an app from the catalog |
lawn app list | List all installed instances |
lawn app outdated | List apps with available updates |
lawn app upgrade [apps...] | Update selected apps, or all outdated apps |
lawn app info show <instance> | Show instance details |
lawn app ps | Show running containers |
lawn app start <instance> | Start an instance |
lawn app stop <instance> | Stop an instance |
lawn app restart <instance> | Restart an instance |
lawn app reinstall <instance> | Reinstall an app while keeping its data and settings |
lawn app rename <instance> <new-name> | Rename an instance |
lawn app autostart <instance> | Configure automatic startup |
lawn app remove <instance> | Remove an instance |
lawn app logs <instance> | View container logs |
lawn app exec <instance> -- <cmd> | Run a command in a container |
lawn app shell <instance> | Open an interactive shell |
lawn app configuration <instance> | Export or save app settings |
lawn app ports | View and manage port configuration |
lawn app env | View and manage environment variables |
lawn app resources | View and manage resource limits |
lawn app info notices | View and manage notices |
lawn app install
Install an app from the catalog.
lawn app install <template-id>
| Option | Description |
|---|---|
--name <name> | Custom name for the instance |
-p, --port <mapping> | Port override as containerPort:hostPort (repeatable) |
--random-port | Use randomly assigned free ports |
--start | Start the app after installation |
# Basic install
lawn app install mealie
# Install an older version
lawn app install paperless-ngx@2.20.15
# Custom name and port
lawn app install jellyfin --name "Media Server" --port 8096:9000
# Install and start
lawn app install nextcloud --start
When required settings need values, installation lists them and directs you to lawn app config.
lawn app config
View and edit an app's template settings.
lawn app config <instance>
lawn app config list <instance>
lawn app config set <instance> NAME=VALUE [NAME=VALUE ...]
lawn app config reset <instance> NAME [NAME ...]
lawn app config reset <instance> --all
List alias: ls
The list includes current values, required settings, saved overrides, and available choices. Set an option and its settings together:
lawn app install github-actions-runner --name ci
lawn app config set ci RUNNER_SCOPE=repo REPO_URL=https://github.com/your-org/your-repo
lawn app config list ci
Before starting the runner for the first time, enter its registration token in Edit Configuration. Then run lawn app start ci.
Reset removes the selected overrides and reveals their template defaults. Generated secrets cannot be reset; --all preserves them. A stopped app can save incomplete settings. A running app keeps its existing settings if an edit leaves required values missing.
lawn app list
List all installed app instances.
lawn app list
Aliases: ls
| Option | Description |
|---|---|
-q, --quiet | Only display instance IDs |
lawn app outdated
Refresh the catalog, then list apps with available updates:
lawn catalog update
lawn app outdated
lawn app upgrade
Update selected apps, or omit the names to update all outdated apps:
lawn app upgrade grafana
lawn app upgrade grafana paperless
lawn app upgrade
# Apply only the next required version
lawn app upgrade paperless --next
# Skip required intermediate versions. This may corrupt the app's data.
lawn app upgrade nextcloud --force --yes
A running app stops during the update and starts again afterward. A stopped app stays stopped.
| Option | Description |
|---|---|
--dry-run | Review the update without applying it |
-y, --yes | Accept the update and any requested temporary start without prompting. Required in scripts and with JSON output |
# Update all outdated apps in a script
lawn app upgrade --yes --output json > updates.json
Exit status is zero on success and nonzero if any update fails. Other apps continue updating after a failure. To undo an update, restore the snapshot taken before it.
lawn app info show
Show detailed information about an app instance.
lawn app info show <instance>
lawn app ps
Show running containers across all instances.
lawn app ps
| Option | Description |
|---|---|
-q, --quiet | Only display instance/container identifiers |
-a, --all | Show all containers, including stopped |
lawn app start
Start an app instance and all its containers.
lawn app start <instance>
lawn app stop
Gracefully stop an app instance.
lawn app stop <instance>
lawn app restart
Stop and start an app instance.
lawn app restart <instance>
lawn app reinstall
Reinstall the same app version while keeping its data and settings. Lawn saves a recovery snapshot first, then tries starting the app again:
lawn app reinstall garage
The command asks for confirmation. Use --yes for intentional non-interactive use. It reports progress and the startup result.
Mounted app data, configuration, secrets, and settings are reused. Custom files inside the system filesystem remain only in the recovery snapshot. Reinstallation does not upgrade the app and may not resolve problems with configuration, networking, or mounted data. If Lawn cannot capture the complete snapshot, reinstallation stops without replacing system files.
The recovery snapshot remains available after success or failure. Use the snapshot ID reported by the command to restore the complete previous state:
lawn app snapshot list garage
lawn app snapshot restore garage <snapshot-id>
Restoring also returns mounted data to the snapshot's state, undoing changes made by the attempted restart. The previous state may still fail to start. See the snapshot command reference for restore options.
lawn app rename
Rename an app instance.
lawn app rename <instance> <new-name>
lawn app rename whoami "My App"
lawn app autostart
Configure automatic startup for an app instance. When enabled, the instance starts automatically when Lawn launches.
lawn app autostart <instance> --enable
lawn app autostart <instance> --disable
| Option | Description |
|---|---|
--enable | Enable automatic startup |
--disable | Disable automatic startup |
lawn app remove
Delete an installed app instance and all associated data, including snapshots. This cannot be undone.
lawn app remove <instance>
Aliases: rm
| Option | Description |
|---|---|
--force | Skip the confirmation prompt |
# Remove and delete all data
lawn app remove jellyfin
# Skip confirmation
lawn app remove jellyfin --force
lawn app logs
View logs from an app instance.
Logs remain available after the app stops or fails to start. Each container's next start replaces its saved output.
lawn app logs <instance>
| Option | Description |
|---|---|
-f, --follow | Stream logs in real time |
-t, --tail <lines> | Number of lines to show from the end |
--container <name> | Filter to a specific container |
# Follow logs in real time
lawn app logs jellyfin --follow
# Show last 50 lines
lawn app logs jellyfin --tail 50
# Logs from a specific container
lawn app logs nextcloud --container db
lawn app exec
Execute a command inside a running container.
lawn app exec <instance> -- <command>
| Option | Description |
|---|---|
-i, --interactive | Keep stdin open |
-t | Allocate a pseudo-TTY |
--container <name> | Target a specific container |
# Run a one-off command
lawn app exec nextcloud -- ls /var/www/html
# Interactive session
lawn app exec -it nextcloud -- /bin/bash
lawn app shell
Open an interactive shell inside a running container. The shell is auto-detected (bash, sh, etc.).
lawn app shell <instance>
| Option | Description |
|---|---|
--container <name> | Target a specific container |
--shell <path> | Shell to use (auto-detected if omitted) |
lawn app configuration
Export app settings as JSON, or save several sections together.
lawn app configuration <instance> > settings.json
# Edit settings.json, then apply its settings
lawn app configuration <instance> --file settings.json
| Option | Description |
|---|---|
--file <path> | Read and apply settings from this JSON file; use - for standard input |
The JSON contains configVariables, environmentVariables, ports, and resources. Omit a section to keep its saved settings. When editing an entry's value, host port, or memory limit, set isOverridden to true to apply that value.
For settings with template defaults, set isOverridden to false to restore the default. For an environment variable, also set isRemoved to false. Generated secrets retain their saved values.
Saving changed settings restarts a running app and briefly interrupts access. Use lawn app info show <instance> to check startup after saving.
The ports, env, and resources commands below use the same save behavior.
lawn app ports
View and manage port configuration.
# List ports
lawn app ports list <instance>
# Set a port override
lawn app ports set <instance> <containerPort>:<hostPort>
# Reset to template defaults
lawn app ports reset <instance> [containerPort]
The port list shows each mapping's current availability and the owner of an occupied port when known. Use --output json for structured availability, owner details, and addresses for available ports.
lawn app env
View and manage environment variables.
# List environment variables
lawn app env list <instance>
# Set an override
lawn app env set <instance> NAME=VALUE
# Reset to template defaults
lawn app env reset <instance> [name]
| Option | Description |
|---|---|
-c, --container <name> | Filter or target a specific container |
lawn app resources
View and manage resource limits.
# List resource limits
lawn app resources list <instance>
# Set memory limit (in MB, minimum 128)
lawn app resources set <instance> <memoryMB>
# Reset to template defaults
lawn app resources reset <instance>
The set and reset commands accept:
| Option | Description |
|---|---|
-c, --container <name> | Target a specific container |
lawn app info notices
View and manage template notices for an instance.
# List notices
lawn app info notices list <instance>
# Dismiss a notice
lawn app info notices dismiss <instance> <noticeId>
# Restore all dismissed notices
lawn app info notices restore <instance>