lawn catalog
| Command | Description |
|---|---|
lawn catalog search [query] | List or search available app templates |
lawn catalog info <id> | Show details for a template |
lawn catalog refresh | Pull the latest catalog updates |
lawn catalog list | List 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.
lawn catalog search
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]
| Option | Description |
|---|---|
--category <name> | Filter by category |
-q, --quiet | Only 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-apps → alice/my-apps), and persists it so its templates are immediately available to lawn catalog search and lawn app install.
lawn catalog add <url>
| Option | Description |
|---|---|
--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/templatesreturns 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.