The monorepo ships a roster of specialist agents under .claude/agents/ — focused Claude Code subagents, each owning one component or cross-cutting concern. They're how work is delegated: the main session hands a scoped task to the agent that owns that surface, and that agent knows its component's conventions, deploy path, and contracts cold.
This is distinct from two other "agent" ideas in the project:
- BusyBro's specialist lens — the silent per-question persona BusyBro picks (shown in its
— BusyBro · {emoji} {label}signature). It mirrors most of this roster but is an answer-style, not a delegatable worker. - Per-service BusyBro agents — reusable
busybro_agentspersonas you link to a service group (Settings → Services → Agents) through theservice_group_agentsjoin. The group's primary agent tailors how BusyBro reasons about that service's traffic; see BusyBro specialist agents.
The agents below are the workers. Each maps to a Warp tab (component = tab = session) and keeps a running journal at notes/journal/<component>.md.
Component specialists
| Agent | Owns | Use it when |
|---|---|---|
| ios | ios/ — BusymateHelper (NEPacketTunnelProvider VPN + MITM capture, hand-rolled SupabaseClient, RealtimeSubscriber) | Swift/Xcode work, device install/launch, log diagnosis, a TestFlight ship |
| dashboard | web/dashboard/ — the Next.js + shadcn capture viewer (feed, workspace tabs, filters, Devices/Services/Domains panels, realtime, auth) | Any dashboard UI/state/realtime work; keeps MCP + docs + version in sync |
| proxy | web/proxy-server/ — the Node/TS Charles-style MITM proxy for non-iOS clients; owns the canonical TrafficLogEntry shape + the source enum + Realtime control | Capture, CA/leaf, ingest, or control-channel (breakpoint-continue, resend) work |
| supabase | supabase/ — the schema source of truth (migrations, RLS, Realtime triggers) and Edge Functions (ingest, device-pair, snapshot, push-notify, github-webhook, telegram-bot, busybro-bot, ask, mcp) | Any schema change (it fans out to every component) or Edge Function work |
| mcp | The MCP server (supabase/functions/mcp/index.ts) — the JSON-RPC tool surface that must mirror every dashboard read/write (full parity) | Adding/changing a tool, or when the dashboard gains a capability the MCP doesn't expose yet |
| docs | docs/ content tree (rendered at docs.busymate.net) + the web/docs site | Whenever a feature ships so the docs cover it, or to fix nav _meta.json |
| cdp | cli/cdp-connector/ — the bmc CLI (local Chrome DevTools Protocol capture that streams decrypted traffic into the same feed) | bmc commands/flags, Chrome launch, ingest, or connector releases |
Cross-cutting specialists
| Agent | Scope | Use it when |
|---|---|---|
| security | Threat monitoring + serious security fixes across the whole monorepo (auth/RLS gaps, service-role exposure, open-proxy / flood / DoS, SSRF, secret handling, MCP tool safety, ingest abuse). Owns security/ | Before a ship, after a feature lands, or on any "is this safe?" concern. Drives the fix in the owning component |
| performance | Project-wide UX + DB + network optimization (Core Web Vitals/INP/CLS, bundle size, re-render storms; Postgres slow queries/indexes/RLS-initplan/N+1; proxy throughput, pg-streamer buffer pressure, payload size, Realtime fan-out cost). Owns performance/ | Any "make it faster / why is this slow?" work. Golden rule: measure → fix → re-measure |
| component-sync | Verifies + restores cross-component sync — runs the contract audit, finds gaps between api/ws/mcp/dashboard/docs/proxy/cdp/iOS, and closes them | Before any ship, after a feature lands, or when asked "are the components in sync?" |
| ui-designer | Visual/UX design for the web surfaces (dashboard, docs, status) within the existing shadcn/ui + Tailwind language — design systems, typography/spacing/color, accessibility (WCAG AA), responsive layout, pixel polish | "Improve the UX / make this look better / design a component" |
See also
- BusyBro architecture — the specialist lens + per-service agents.
- Contracts — the cross-component chain the agents keep in sync.