Taxonomy
The DeployAlly catalog is organized into a hierarchy inspired by biological taxonomy. Every template lives at an exact place in the tree — you find what you need by category (functional family) or by slug (technical species).
Hierarchy
kingdom
└── family
└── species
└── variant| Level | Description | Example |
|---|---|---|
| kingdom | Conceptual layer in the ecosystem | infrastructure, data, applications |
| family | Functional category (the catalog "shelf") | database, blog, notes, workflow |
| species | Specific technology (the template) | mariadb, wordpress, memos, n8n |
| variant | Image variant | 11.4, php82-apache, alpine |
The relevant fields live in the template's identity:
identity:
slug: wordpress # species
name: WordPress
archetype: application
family: cms # family
app_version: "6.7"The variant is declared in image.variants[]:
image:
base: wordpress
variants:
- { id: php82-apache, tag: php8.2-apache, default: true }
- { id: php81-apache, tag: php8.1-apache }Family ≠ Archetype
It's a common confusion, but they're different axes:
familydescribes what the service does functionally (it's a CMS, a database, a notes tool).archetypedescribes how the service behaves technically (it's an app, an asset, a worker — see Ecology).
Examples:
| Species | Family | Archetype |
|---|---|---|
| WordPress | cms |
application |
| MariaDB | database |
asset |
| Memos | notes |
application |
| Traefik | ingress |
network_appliance |
| Postal | email |
multi_component_saas |
Catalog Organization
On the backend, the catalog is organized into directories by family/category:
factory/catalog/
├── _registry.yaml
├── blog/
│ └── wordpress.yaml
├── database/
│ ├── mariadb.yaml
│ ├── mysql.yaml
│ ├── postgresql.yaml
│ └── …
├── notes/
│ ├── memos.yaml
│ ├── joplin.yaml
│ └── …
├── cache/
│ └── redis.yaml
├── workflow/
│ └── n8n.yaml
├── monitoring/
│ └── uptime-kuma.yaml
├── password/
│ └── vaultwarden.yaml
├── email/
│ └── postal.yaml
├── ingress/
│ └── traefik.yaml
└── …Each <species>.yaml file is a complete template. The directory name becomes the category shown in the front; the template's identity.family field confirms that placement.
Supported Categories
The catalog covers many verticals. Examples of the main categories:
| Category | Example species |
|---|---|
database |
mariadb, mysql, postgresql, redis (in cache), mongodb |
cache |
redis, memcached |
blog / cms |
wordpress |
notes |
memos, joplin, anytype, logseq, trilium |
workflow / automation |
n8n, activepieces |
monitoring |
uptime-kuma, prometheus, grafana |
email |
postal, mailcow |
password |
vaultwarden, bitwarden-self-hosted |
ingress / gateway |
traefik, caddy |
analytics |
plausible, umami |
documentation |
bookstack, outline |
file_sharing |
nextcloud, syncthing |
The list evolves — each catalog release adds new species and, occasionally, new categories.
Public Catalog URLs
The catalog is exposed by the API at:
GET /api/v1/templates/<species>
GET /api/v1/catalog?family=<family>
GET /api/v1/catalog/categoriesThe front consumes these endpoints to build the public library (browse by category) and each template's page.
Searching via CLI
# List available species
deployally catalog list
# Filter by family
deployally catalog list --family database
# Show details for a species
deployally catalog show wordpress
# Validate a template locally before promoting
deployally validate --species wordpressNaming
| Resource | Pattern | Example |
|---|---|---|
| Container | <species> or <species>-<uid> |
mariadb-shared, wordpress-blog-001 |
| Docker volume | <instance_uid>_<storage_id> |
wordpress-blog-001_data |
| Dedicated network (asset) | <species> |
mariadb, redis |
| Manifest directory | /opt/deployally/<instance_uid>/ |
/opt/deployally/wordpress-blog-001/ |
Template Promotion
Templates go through three internal states before showing up in the public catalog:
| Status | Description |
|---|---|
draft |
Under development; validator may have errors. |
validated |
Passes deployally validate --species X. |
published |
Promoted to the public catalog; consumable by CLI/front. |
Each published requires deployally validate clean and — when applicable — a real deploy test on the project's test server.
Next Steps
- Templates — The YAML structure of each species.
- Ecology — How archetypes differ from families and how services connect.
- Definitions and Instances — How a catalog species becomes a running container.