~/docs/features/stacks
╭─ § 03.03 ─╮

StacksPRO

└───────────╯

A stack is a runnable composition of projects, services, and other stacks. Instead of starting your API, its database, its auth worker, and your frontend one at a time, you group them once and bring the whole environment up — in dependency order — with a single command, click, or Shortcut.

A stack runs no process of its own. It’s a lightweight unit that orchestrates its members: starting a stack starts its members (and their dependencies); stopping it releases them.

Two kinds of stack

Manual

You choose the members. Create a stack, seed it, then add or remove members whenever you like.

corral stack create storefront --member web --member api
corral stack add storefront auth
corral stack rm storefront web

Cloudflare-derived

For Cloudflare Workers, Corral builds stacks automatically. It reads each worker’s wrangler config, finds the workers that call each other — service bindings, queue producer/consumer pairs — and groups each cluster into a derived stack. New clusters are detected as you register projects; you don’t create these by hand.

A derived stack stays in sync with your config. Change a wrangler binding and the stack’s membership and wiring are re-derived; if the on-disk config has drifted from the stack, Corral shows a divergence banner with a one-click Re-sync.

To hand-edit a derived stack, eject it into a manual copy first (see below).

Starting and stopping

corral stack start storefront      # bring every member up, in dependency order
corral stack stop storefront       # release the stack's members
corral stack restart storefront

In the macOS app, select the stack in the STACKS section of the sidebar and use the toolbar Start / Stop / Restart controls, or the Play button on the stack’s row.

Members are ref-counted. If two running stacks share a member — say both storefront and admin depend on postgres — stopping one stack won’t pull the shared member out from under the other. The member stops only when the last stack using it releases it. When stopping a stack would affect another running stack, Corral asks first.

Seeing how a stack fits together

corral stack list                  # every stack: status, origin, member count
corral stack status storefront     # dependency tree, members, wiring, drift

In the app, a stack’s detail view opens on a Graph tab — a dependency diagram of the members and the wiring between them, each node showing its live status. The Members list, a New Stack sheet, membership editing, and (for derived stacks) the re-sync / eject controls live here too.

Re-sync and Eject

corral stack resync storefront     # re-derive a Cloudflare stack from current wrangler config
corral stack eject storefront      # fork a derived stack into an editable manual copy

Re-sync pulls a Cloudflare-derived stack back in line with its workers’ current wrangler config. Eject forks a derived stack into a manual one you can edit freely, leaving the original intact — the way to take manual control of membership that otherwise comes from config.

Deleting and renaming

corral stack rename storefront shop
corral stack delete storefront     # the stack is removed; its members are preserved

Deleting a stack never deletes its members — they go back to being ordinary standalone projects and services.

Beyond the CLI and app

Stacks are reachable wherever Corral is:

  • AI tools (MCP) — agents can stack_list and stack_info (free) and stack_start / stack_stop (Pro). See AI Tools (MCP).
  • Spotlight, Shortcuts & Siri — open or list stacks for free; start / stop / restart in a Shortcut or by asking Siri (“Start a Corral stack”). See Spotlight, Shortcuts & Siri.
  • Deep linkscorral://start?stack=storefront and friends. See Deep Links.

Free vs Pro

CapabilityFreePro
List stacks, inspect members & wiring
Open a stack, view its graph
Create, add / remove members, rename, delete
Start / stop / restart
Re-sync / eject a Cloudflare-derived stack

The daemon enforces this split — the same gate behind every surface (CLI, app, MCP, Shortcuts, deep links), so the boundary is identical no matter how you reach it. On the free tier, a Pro action returns a clean “Corral Pro required” prompt instead of failing cryptically.

// Last updated 2026-07-11