Blueprints
Blueprints are pre-built application stacks that you can install with a single command. Each blueprint includes everything needed for a working deployment: the application, database, storage, and configuration.
Browsing blueprints
kip blueprint list NAME VERSION DESCRIPTION
ghost 1.0 Ghost publishing platform with MySQL database
gitea 1.0 Gitea self-hosted Git service with PostgreSQL
plausible 1.0 Plausible Analytics, privacy-friendly web analytics with PostgreSQL
wordpress 1.0 WordPress blog with MySQL database and persistent uploadsBlueprint details
View what a blueprint will create and its configurable parameters:
kip blueprint info wordpress wordpress (v1.0)
WordPress blog with MySQL database and persistent uploads
Parameters:
projectName Project name (required)
environment Target environment (e.g. test, prod)
storageSize Storage size for uploads [default: 5Gi]
dbStorage Database storage size [default: 5Gi]
Install:
kip blueprint install wordpress --set projectName=my-projectInstalling a blueprint
Install directly to your cluster:
kip blueprint install wordpress --set projectName=my-blog ✔ Namespace my-blog created
Installing wordpress into my-blog...
✔ App/wordpress created
✔ Service/db created
✔ Volume/uploads created
✔ wordpress installed (3 resources)With custom parameters
Override any parameter with --set:
kip blueprint install wordpress \
--set projectName=company-blog \
--set storageSize=20Gi \
--set dbStorage=10Gi \
--environment prodInto a specific environment
kip blueprint install ghost \
--set projectName=my-site \
--set domain=https://blog.example.com \
--environment prodGenerating a manifest
Generate a skipper.yaml file that you can review and customise before applying, instead of installing directly:
kip init --blueprint wordpress --set projectName=my-blog ✔ Generated skipper.yaml from wordpress blueprint
Edit it, then run: kip apply -f skipper.yamlThis creates a standard skipper.yaml file, not a special blueprint format, just a regular manifest. Edit it to add routes, environment variables, resource profiles, or any other configuration. Then apply:
kip apply -f skipper.yamlAvailable blueprints
WordPress
Full WordPress installation with MySQL database and persistent upload storage.
| Component | Details |
|---|---|
| App | wordpress:6-apache on port 80 |
| Database | MySQL with configurable storage |
| Storage | Persistent volume for wp-content/uploads |
| Service binding | MySQL credentials injected via WORDPRESS_DB_ prefix |
Ghost
Ghost publishing platform with MySQL backend.
| Component | Details |
|---|---|
| App | ghost:5-alpine on port 2368 |
| Database | MySQL with configurable storage |
| Parameters | domain: the public URL for Ghost |
Gitea
Self-hosted Git service with PostgreSQL and persistent repository storage.
| Component | Details |
|---|---|
| App | gitea/gitea:1.22-rootless on port 3000 |
| Database | PostgreSQL with configurable storage |
| Storage | Persistent volume for Git repositories |
Plausible Analytics
Privacy-friendly web analytics.
| Component | Details |
|---|---|
| App | ghcr.io/plausible/community-edition:v2.1 on port 8000 |
| Database | PostgreSQL with configurable storage |
| Parameters | baseUrl (required): the public URL for analytics |
Medusa
Open source e-commerce platform (Shopify alternative).
| Component | Details |
|---|---|
| App | medusajs/medusa:latest on port 9000 |
| Database | PostgreSQL with configurable storage |
| Cache | Redis |
n8n
Workflow automation platform (Zapier alternative).
| Component | Details |
|---|---|
| App | n8nio/n8n:latest on port 5678 |
| Database | PostgreSQL with configurable storage |
Uptime Kuma
Monitoring and status page. No database required. Data stored on a persistent volume.
| Component | Details |
|---|---|
| App | louislam/uptime-kuma:1 on port 3001 |
| Storage | Persistent volume for monitoring data |
Outline
Team wiki and knowledge base.
| Component | Details |
|---|---|
| App | outlinewiki/outline:latest on port 3000 |
| Database | PostgreSQL with configurable storage |
| Cache | Redis |
| Storage | MinIO for file attachments |
| Parameters | domain (required): the public URL |
Cal.com
Open source scheduling platform (Calendly alternative).
| Component | Details |
|---|---|
| App | calcom/cal.com:latest on port 3000 |
| Database | PostgreSQL with configurable storage |
| Parameters | domain (required): the public URL |
Invoice Ninja
Invoicing and billing platform.
| Component | Details |
|---|---|
| App | invoiceninja/invoiceninja:5 on port 9000 |
| Database | MySQL with configurable storage |
| Storage | Persistent volume for documents |
| Parameters | domain (required): the public URL |
Mattermost
Team messaging platform (Slack alternative).
| Component | Details |
|---|---|
| App | mattermost/mattermost-team-edition:latest on port 8065 |
| Database | PostgreSQL (10Gi default) |
| Storage | Persistent volume for uploads and attachments |
| Parameters | domain (required): the public URL |
Rocket.Chat
Team communication platform.
| Component | Details |
|---|---|
| App | rocket.chat:latest on port 3000 |
| Database | MongoDB (10Gi default) |
| Parameters | domain (required): the public URL |
How blueprints work
A blueprint is a skipper.yaml template with Go template placeholders. When you install a blueprint, Skipper:
- Loads the template from the built-in registry
- Applies your parameter values (with defaults for optional ones)
- Renders the template to a standard Skipper manifest
- Creates the namespace if needed
- Applies all resources to the cluster
The rendered output is identical to a hand-written skipper.yaml, with no special tracking or metadata. You can export it later with kip export and manage it via GitOps like any other manifest.
Creating custom blueprints
A blueprint file contains two YAML documents separated by ---:
- Metadata: name, description, version, parameters
- Template: a
skipper.yamlwith Go template placeholders (e.g..projectName)
The file has two YAML documents separated by ---. The first document defines the metadata and parameters. The second document is the manifest template using Go text/template syntax. Placeholders like .projectName and .replicas are replaced with parameter values at render time.
After rendering with --set projectName=acme --set replicas=3, the template produces:
project: acme
apps:
api:
image: registry.example.com/api:latest
port: 8080
replicas: 3
services:
db:
type: postgres
storage: 5GiAll parameter values are strings. Use quotes in the template for numeric fields that YAML might interpret differently.
Parameters use Go text/template syntax. All parameter values are strings. Use quotes in the template for numeric fields that YAML might interpret differently.
