Profiles
Start small. Even two profiles pay off right away — a lightweight one for quick UI fixes and a full one for feature work. Here’s the smallest useful setup: a frontend and a backend, with a frontend profile that skips the API when you don’t need it:
name: myapp
root: ~/Projects/myapp
services:
web: npm run dev # frontend UI
api:
cmd: node server.js
port: 4000 # backend API
profiles:
# Just the frontend — fastest startup, good for UI-only fixes
frontend: [web]
# Full stack — frontend + backend for feature work
full: [web, api]
Every name in a profile list must match a service defined above in services. Services can appear in as many profiles as you like — overlap is fine and expected.
Multiple profiles for different modes. Once your project grows a third or fourth service — a background worker, a queue, a second frontend — a single profile isn’t enough. Define one profile per workflow you actually use, so you can jump between “just the UI”, “normal dev”, and “everything running” without touching the config:
name: shop
root: ~/Projects/shop
services:
web: npm run dev # React frontend
api:
cmd: python -m api.server
port: 5000 # Flask backend
worker: celery -A tasks # background jobs
profiles:
# Quick UI fixes — no backend needed
frontend: [web]
# Normal day-to-day development — web + api
local: [web, api]
# Everything, including background workers
full: [web, api, worker]
What does a plain Start run?
With no profiles, Start runs every service. Once a project has profiles, Start runs the profile you last started since opening the app — otherwise the first profile in alphabetical order, which is how the dropdown lists them. In the examples above, that’s frontend. To choose what a plain Start runs from the beginning, give that profile a name that sorts first.