~/docs/features/deep-links
╭─ § 03.09 ─╮

Deep Links

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

Corral registers the corral:// URL scheme, so a link anywhere on your Mac — in your browser, a Finder window, your editor, Raycast, or a message in Slack, Notion, or email — can open a Corral surface or drive a project without you hunting for the app first.

It’s the same idea as mailto: or slack://: click a corral://… link (or run open 'corral://…' in a terminal) and Corral handles it on the machine it’s running on.

Prefer to skip the link entirely? Spotlight, Shortcuts & Siri drive the same project, service, and stack actions through macOS App Intents — type a project name into Spotlight, ask Siri, or build a Shortcut.

LinkWhat it does
corral://Bring Corral to the front.
corral://open?project=myappOpen the myapp project’s page.
corral://open?project=myapp&tab=logsOpen myapp with a specific tab active.
corral://start?project=myappStart myapp.
corral://stop?project=myappStop myapp.
corral://restart?project=myappRestart myapp.
corral://share?project=myappStart a public tunnel for myapp.
corral://service?id=postgresOpen the postgres service.
corral://service/start?id=postgresStart the postgres service.
corral://open?stack=storefrontOpen the storefront stack (Graph tab).
corral://open?stack=storefront&tab=logsOpen storefront on a specific tab.
corral://start?stack=storefrontStart the storefront stack. Pro.
corral://stop?stack=storefrontStop the storefront stack. Pro.
corral://restart?stack=storefrontRestart the storefront stack. Pro.
corral://settingsOpen Settings.
corral://settings/licenseOpen the Subscription page.
corral://onboardOpen the first-run setup walkthrough.

An unrecognized verb, or a link missing its project=, does nothing — no stray error window pops up.

Naming a project

project= accepts either the project name or its UUID:

  • Name is friendly for links you write by hand or share with a teammate: corral://open?project=myapp. Matching is exact and case-insensitive — Corral never fuzzy-matches a partial name onto a destructive action like stop.
  • UUID is stable across renames, and is what Corral uses for links it generates itself.

If two projects happen to share a name, Corral asks which one you meant rather than guessing.

stack= names a stack the same way — its name or UUID, matched exactly and case-insensitively. A stack has no working directory, so there’s no path= form for stacks.

Choosing a tab

corral://open and corral://service take an optional tab= token to land on a specific tab:

  • Projects: overview, dependencies, network, logs, failure-history, settings
  • Services: overview, logs, failure-history, settings
  • Stacks: graph, logs, failures, settings

For example, corral://open?project=myapp&tab=network jumps straight to the Browser & Network tab.

Navigation links (open, service, settings, onboard) simply bring Corral forward on the right screen.

Action links (start, stop, restart, share, service/start) run in the background and confirm when they finish — “Started myapp”, “Stopped myapp”, and so on. Because a corral:// link comes from outside Corral — you’re in another app when you click it — Corral always tells you what it did:

  • While Corral is in the background, the confirmation is a system notification.
  • While Corral is in the foreground, it’s a small in-app banner.

A stop confirmation includes an Undo button that brings the project back — your safety net if a link stopped the wrong thing.

These confirmations are on by default. You can turn them off under Settings → Notifications → Actions (see Settings).

Is this safe?

Any app can put a corral:// link in front of you, so the model is simple: the click is the consent, exactly like clicking a link that opens any other app on your Mac.

  • Action links only act on projects you already have — they can’t create or reconfigure anything.
  • Destructive actions (stop, restart) always confirm, and stop offers Undo.
  • Pro actions stay gated by your license no matter how they’re triggered.

Trying it from the terminal

Every corral:// link works with macOS’s built-in open command — handy for testing, or for wiring Corral into your own scripts and shortcuts:

open 'corral://open?project=myapp&tab=logs'
open 'corral://restart?project=myapp'

Quote the URL so your shell doesn’t treat ? and & as special characters.

// Last updated 2026-07-11