CLI

lawn catalog

Browse, search, and manage the app catalogs Lawn installs from.
CommandDescription
lawn catalog search [query]List or search available app templates
lawn catalog info <id>Show details for a template
lawn catalog refreshPull the latest catalog updates
lawn catalog listList configured catalog sources
lawn catalog add <url>Register a new remote catalog
lawn catalog remove <identifier>Deregister a custom catalog

Installing an app lives under lawn app install.

Template IDs and catalog slugs

Every template has an id. With the built-in catalog that's usually the short form (whoami, jellyfin). Once you add custom catalogs, two catalogs can ship a template with the same short name — so templates also have a canonical id that includes the catalog they came from.

  • Canonical id<owner>/<repo>/<app> (e.g. getlawn/templates/whoami, alice/my-apps/photoprism). Always unambiguous.
  • Short id<app> (e.g. whoami). Works whenever only one catalog ships that app. Otherwise commands error and list the canonical forms to pick from.

Every command that takes a template id (app install, catalog info, …) accepts either form.

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

# Canonical form (always works)
lawn catalog info getlawn/templates/paperless-ngx
lawn catalog info alice/my-apps/photoprism

lawn catalog refresh

Pull the latest catalog updates from all configured repositories.

lawn catalog refresh

Lawn automatically updates catalogs in the background, but this forces an immediate update across every configured source.

lawn catalog list

List every configured catalog repository source — built-in plus any you've added.

lawn catalog list

Shows each source's slug, URL, git ref, subdirectory path, and whether it's a built-in or custom catalog. Pass --output json for a machine-readable form that also includes the catalog's stable UUID.

lawn catalog add

Register a new remote catalog by git URL. Lawn clones the repository, derives a slug from the URL (https://github.com/alice/my-appsalice/my-apps), and persists it so its templates are immediately available to lawn catalog search and lawn app install.

lawn catalog add <url>
OptionDescription
--ref <ref>Pin to a specific git tag or branch. Defaults to 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

# Pin to a specific branch
lawn catalog add https://github.com/alice/my-apps.git --ref stable

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

Only public git repositories are supported in this release — authentication will come in a future update.

lawn catalog remove

Deregister a custom catalog. Lawn removes the registry entry and deletes the local clone to free disk space.

lawn catalog remove <identifier>

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

# By slug
lawn catalog remove alice/my-apps

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

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

Two safety rules apply:

  • Built-in catalogs cannot be removed. Attempting to remove getlawn/templates returns an error.
  • Catalogs with installed apps cannot be removed. If any app is still installed from that catalog, the command refuses and lists the blocking instances by name. Uninstall them first (lawn app remove <id>) and re-run.