Stacks
Apple's container CLI runs one container at a time. There is no docker-compose equivalent — no way
to declare "a database, then an app that waits for it, wired together." Managing a multi-container app
means dozens of manual commands and hand-copied IP addresses.
Stacks are Runbay's answer: compose-style orchestration built for Apple's runtime.
What a Stack does
- Dependency ordering — start the database before the app that needs it.
- Health-check gating — wait until PostgreSQL is actually ready before starting the web tier, not just until its container exists.
- Auto-injected direct IPs — each container's dedicated IP is resolved and injected into
dependents (for example, a
DATABASE_URLpointed at192.168.64.5:5432), so there's no localhost confusion and no manual copy-paste.
The whole system is verified end-to-end against the live daemon — Runbay --selftest-stack
runs a 13-step deploy-and-teardown every time, so orchestration isn't just theoretical.
Built-in templates
Eight templates ship in the app, ready to deploy from the Stacks browser:
| Template | Stack |
|---|---|
postgresql-dev |
PostgreSQL, tuned for local development |
lemp |
Linux + Nginx + MySQL/MariaDB + PHP |
mern |
MongoDB + Express + (React) + Node |
django |
Django + PostgreSQL |
rails |
Rails + PostgreSQL |
wordpress |
WordPress + MySQL |
monitoring |
A monitoring stack |
ai-ollama |
Local AI with Ollama |
Open the Stacks item in the sidebar, pick a template, review the containers it will create, and deploy. The direct IPs are wired for you.
Importing a docker-compose file
Already have a compose.yml? Open or drag it into Runbay. The importer parses it with a
hand-rolled YAML reader (zero dependencies) and shows you a review sheet before anything deploys.
The rule is: nothing is silently dropped. Every key that doesn't map cleanly onto Apple's runtime surfaces as an explicit warning you read and accept. Compose features Apple's framework doesn't have become visible decisions, not quiet omissions. Once you accept, the compose file deploys as a Stack and behaves like any other — dependency ordering, health gating, injected IPs.
Migrating from Docker or OrbStack? Compose projects are bridged straight into this importer — see the migration guide.
Notes and honest limits
- macOS 15: direct-IP injection between containers depends on container-to-container networking, which Apple only supports on macOS 26. On macOS 15 the app is honest about the degraded story.
- Prefer arm64 images in your stacks;
linux/amd64emulation can segfault JIT-heavy workloads.
Next: wire your stack's containers into a coding agent with the agent setup guide, or keep them alive across crashes with the supervisor.