Menubar App
Native macOS menubar app for monitoring your dev servers at a glance.
Overview
The Switchyard menubar app puts Ward in your menubar — a native macOS app that shows all your running dev servers, their health, and lets you manage them without touching the terminal.
Requires macOS 14+ (Sonoma).
Build & Run
cd app
xcodegen generate
open Switchyard.xcodeproj
# Build and Run (⌘R)The Ward owl icon appears in your menubar. Click it to open the control panel.
Features
Live process monitoring
Shows both registered processes (from sy register or sy run) and unregistered node processes detected via ps/lsof. Registered processes show their label; unregistered ones show as "untracked" with the package name derived from their working directory.
Refreshes every 5 seconds by default (configurable in Settings).
Health indicators
Each process shows a status dot:
- Green — online, port listening, memory normal
- Amber — degraded (expected port not listening, or memory > 500MB)
- Red — dead (PID no longer exists)
Quick actions
Hover over a process to reveal kill and restart buttons.
Right-click any process for the full context menu:
- Kill Process
- Restart (if command is stored)
- View Logs (opens log file)
- Copy Port
- Copy PID
- Copy Path
Search & filter
When you have 4+ processes, a search bar appears automatically. Filter by label, port number, or PID.
Process groups
Groups defined via sy group create appear as collapsible sections. Each group shows member count and supports bulk kill/restart.
# Set up groups from the CLI
sy group create fullstack
sy group add fullstack frontend
sy group add fullstack apiNotifications
Switchyard fires macOS notifications when:
- A tracked process dies unexpectedly ("Something derailed")
- A port conflict is detected
Settings
Click the gear icon in the action bar to access:
- Refresh interval — 2s, 5s, 10s, or 30s
- Launch at login — auto-start via macOS Login Items
- Appearance — system, dark, or light
How it works
The menubar app reads the same data files as the CLI:
~/.switchyard/registry.json— registered processes~/.switchyard/groups.json— process groups
It also runs its own process detection (same ps/lsof scanning as the CLI) to find unregistered node processes. No daemon or background service is required — the app handles everything in-process.
App icon
The Ward owl: gauge-ring eyes, Y-track beak (railroad switch), signal antenna ear tufts. Renders as a template image in the menubar, adapting to light and dark mode automatically.