DevelopmentUnreleased

This topic is not available in this guide. You're viewing its overview.

Development documentation may include features that are not in the latest release. Read the Lawn 0.8.1 guide.

CLI

lawn catalog

Browse, search, and manage the app catalogs Lawn installs from.

Catalog commands

CommandDescription
lawn catalog search [query]List or search available app templates
lawn catalog info <id>Show details for a template
lawn catalog updatePull the latest catalog updates
lawn catalog listList configured catalog sources
lawn catalog add <location>Register a Git or local catalog
lawn catalog edit <identifier>Place a catalog in a user-managed checkout
lawn catalog unedit <identifier>Return an editable catalog to Lawn management
lawn catalog remove <identifier>Deregister a custom catalog

Installing an app lives under lawn app install.

Template IDs and catalog slugs

Use a short template ID such as whoami when only one configured catalog supplies it. If several catalogs have the same ID, the command lists qualified selectors to choose from.

A qualified selector has the form <catalog-slug>/<app>. GitHub catalog slugs use owner/repository; other Git hosts include the hostname. Local catalogs use the directory's lowercase basename.

Catalog locationQualified template selector
https://github.com/alice/my-apps.gitalice/my-apps/photoprism
https://gitlab.com/alice/my-apps.gitgitlab.com/alice/my-apps/photoprism
~/Projects/My-Lawn-Catalogmy-lawn-catalog/photoprism

Commands that take a template ID, including lawn app install and lawn catalog info, accept short IDs and qualified selectors. Get catalog slugs from lawn catalog list --output json.

List or search available app templates. With no query, all templates are listed; with a query, results are filtered by name, description, or tags.

lawn catalog search [query]
OptionDescription
--category <name>Filter by category
-q, --quietOnly display template IDs
# List every template
lawn catalog search

# Search by keyword
lawn catalog search photos
lawn catalog search "password manager"

# Filter by category
lawn catalog search --category Media

# Get just the IDs (useful for scripting)
lawn catalog search --quiet

lawn catalog info

Show full details for an app template, including its description, features, and links.

lawn catalog info <template-id>
# Short form (when unambiguous across your catalogs)
lawn catalog info jellyfin

# Qualified selectors
lawn catalog info getlawn/templates/paperless-ngx
lawn catalog info alice/my-apps/photoprism
lawn catalog info gitlab.com/alice/my-apps/photoprism
lawn catalog info my-lawn-catalog/photoprism

# List historical template versions
lawn catalog info paperless-ngx --versions

--versions lists historical template versions and revisions that Lawn can load from the catalog's Git history, newest first. It requires a Git-backed catalog checkout, including for local catalogs. Ordinary browsing of local catalog folders does not require Git. This is template history, not a list of installed app versions.

lawn catalog update

Pull the latest updates for catalogs that follow a branch. Lawn also updates these catalogs automatically in the background. Tags stay pinned; local folders and editable checkouts are user-managed and are skipped by both automatic updates and this command.

lawn catalog update

lawn catalog refresh

lawn catalog refresh is an alias for lawn catalog update.

lawn catalog list

List configured catalog sources, including built-in catalogs and any you've added.

lawn catalog list

Text output shows each source's display name, URL, app count when available, ref and subdirectory when set, and either the editable checkout path or last-pulled time. Display names preserve repository or directory capitalization. Text output omits the built-in/custom kind.

Use JSON for catalog selectors and kind:

lawn catalog list --output json

Each JSON object includes slug, the stable UUID in id, and kind, either built-in or custom. It also includes identifier, url, ref, path, editable, editablePath, and lastPulledAt.

lawn catalog add

Register a catalog by Git URL, GitHub owner/repository, or local directory path. Lawn clones remote repositories; local directories are used in place and are never updated by Lawn. Its templates are immediately available to lawn catalog search and lawn app install.

lawn catalog add <location>

Press Ctrl+C to cancel an add. If the connection closes or Lawn reports missing progress updates, the add may still finish. Check lawn catalog list before trying again.

OptionDescription
--ref <ref>Follow a Git branch or pin to a tag. Defaults to following the repository's default branch.
--path <dir>Subdirectory within the repo containing catalog apps. Defaults to the repo root.
# Add a public GitHub catalog
lawn catalog add https://github.com/alice/my-apps.git

# Add a local catalog
lawn catalog add ~/Projects/my-lawn-catalog

# Follow updates on the stable branch
lawn catalog add https://github.com/alice/my-apps.git --ref stable

# Pin to a tag instead of following branch updates
lawn catalog add https://github.com/alice/my-apps.git --ref v1.0.0

# Apps live in a subdirectory of the repo
lawn catalog add https://github.com/alice/monorepo.git --path lawn-apps

Remote catalogs must be public Git repositories.

lawn catalog edit

Place a Git catalog in a user-managed checkout. The command prints the checkout path; JSON output supplies it as editablePath. Modify the files there and manage Git pulls and pushes yourself. Lawn pauses automatic pulls while the catalog is editable, and lawn catalog update skips it too.

lawn catalog edit <identifier>

# By slug
lawn catalog edit alice/my-apps

# By URL
lawn catalog edit https://github.com/alice/my-apps.git

The identifier can be the catalog's slug, URL, or UUID from lawn catalog list --output json. Local catalog folders are already user-managed and do not need edit.

lawn catalog unedit

Return an editable Git catalog to Lawn management. Lawn replaces the editable checkout with a fresh clone of the configured source and resumes automatic updates for branch-following catalogs. Commit and push your changes first; the command refuses uncommitted changes or unpushed commits unless you pass --force.

lawn catalog unedit <identifier>

lawn catalog unedit alice/my-apps

Accepts the same slug, URL, or UUID selectors as edit. Local catalog folders always remain user-managed and cannot be switched to managed mode with unedit.

OptionDescription
--forceDiscard uncommitted changes and unpushed commits.
# Discard local work and return to a fresh managed clone
lawn catalog unedit alice/my-apps --force

lawn catalog remove

Deregister a custom catalog. Lawn deletes managed clones. Editable checkouts and local catalog folders stay on disk.

lawn catalog remove <identifier>

The identifier can be the catalog's slug, its URL (case-insensitive, .git suffix optional), local directory path, or its UUID from lawn catalog list --output json.

OptionDescription
--forceSkip the confirmation prompt. Required when standard input is not a terminal.
# By slug, with interactive confirmation
lawn catalog remove alice/my-apps

# By URL
lawn catalog remove https://github.com/alice/my-apps.git

# By local directory
lawn catalog remove ~/Projects/my-lawn-catalog

# By UUID
lawn catalog remove 8C2A3B42-F077-4D89-B216-E5DEB0E7A6F1

# Unattended removal
lawn catalog remove alice/my-apps --force

Built-in catalogs cannot be removed. Catalogs with installed apps also cannot be removed; the command lists the blocking instances by name. Uninstall them with lawn app remove <id> first, then retry. --force skips confirmation only and does not bypass either restriction.