Blueprints / IaC
Declare your project's infrastructure as a single YAML file — pulsar.yaml — committed to your repo alongside your code.
What is a blueprint?
A blueprint describes your project's services, databases, env vars, and scaling config in a declarative way. Instead of clicking through the dashboard, you define everything once in pulsar.yaml and sync it with one click.
Blueprints are optional — all settings can still be configured through the dashboard or CLI. They're most useful for teams that want infrastructure changes tracked in version control alongside code.
pulsar.yaml format
version: "1"
# Services run as Docker containers
services:
web:
type: web # web | worker | database | cache | custom
start_cmd: npm start
root_dir: ./ # relative to repo root
worker:
type: worker
start_cmd: npm run worker
# Managed database instances
databases:
main:
type: postgres # postgres | mysql | redis | mongodb | pocketbase
size: nano # nano | micro | small | medium
cache:
type: redis
size: nano
# Environment variables (all environments)
env:
NODE_ENV: production
PORT: "3000"Using the dashboard
Every project has an Infrastructure tab (inside Project → Tabs). Open the YAML editor, paste or edit your blueprint, and click Save. The blueprint is validated immediately — any syntax or schema errors are shown inline.
Click Sync to apply the blueprint to the live project. Pulsar will provision any declared databases that don't yet exist and update service configuration.
Service types
Database sizes
Blueprint status
Full example
version: "1"
# A Next.js app with Postgres and a background job worker
services:
web:
type: web
start_cmd: npm start
root_dir: ./
email-worker:
type: worker
start_cmd: node workers/email.js
databases:
postgres:
type: postgres
size: small
sessions:
type: redis
size: nano
env:
NODE_ENV: production
PORT: "3000"
# DATABASE_URL is auto-injected when a postgres db is declared