Specialist agents

Link reusable BusyBro agents to a service group — one primary lens plus extra delegation candidates — and meet the built-in Performance specialist.

BusyBro doesn't answer every question the same way — it picks the best-fit specialist lens first, and you can give any of your own service groups its own expert persona.

How specialist lenses work

For each question, BusyBro silently chooses the single best-fit specialist and answers through that lens — it shapes the focus and expertise, not the voice (it's always BusyBro). You don't invoke one explicitly; the choice shows up in the small signature line at the end of an answer, like:

— BusyBro · 📱 iOS specialist

The built-in roster covers the components of the project:

  • 📱 iOS — the BusymateHelper app (VPN + MITM capture, device JWTs).
  • 🖥️ Dashboard — the Next.js capture viewer, Realtime, auth.
  • 🔌 Proxy-server — the Node MITM proxy and its control channel.
  • 🗄️ Supabase — Postgres, RLS, Realtime triggers, Edge Functions, the MCP server.
  • 🌐 CDP-connector — the bmc CLI and Chrome DevTools Protocol capture.
  • 📚 Docs — the documentation tree and docs site.
  • 🛡️ Security — auth, secrets, proxy exposure, MCP tool safety.
  • Performance — see below.
  • 🧭 Architecture guide — cross-cutting or overview questions.

Tip: Ask "what specialists are there?" and BusyBro will summarize the roster.

The built-in ⚡ Performance specialist

The Performance specialist is the lens for anything about how fast things are: Core Web Vitals and bundle or re-render cost, Postgres slow queries and indexes, proxy throughput, payload size, and Realtime fan-out cost. Its discipline is measure → fix → re-measure — so when you ask a perf question, BusyBro leans on real numbers rather than hand-waving.

Give a service its own specialist

Separate from the built-in roster, each service group can link one or more of your BusyBro specialist agents — reusable expert personas defined once in BusyBro → Agents. When a conversation touches that service's traffic, BusyBro adopts the group's primary agent's instructions as its lens; the rest become extra delegation candidates for the brain's run_task.

Agents are no longer redefined inline per service. You author each agent once in the BusyBro → Agents registry (the busybro_agents table), then link the ones a service needs. The same DoorDash token-refresh agent can be the lens for the DoorDash group and a delegation candidate elsewhere — one definition, reused everywhere.

Manage a service's agents in the dashboard

Open Settings → Services, select a group, and go to its Agents tab:

  • Link / unlink — multi-select from the agents you've defined in BusyBro → Agents. Linking adds an agent to this group; unlinking removes the link (the agent definition itself is untouched, so it stays available to other groups).
  • Set primary — the star marks the one primary agent. There is always exactly one: starring a new agent unstars the old one, and the first agent you link is auto-primary. The primary is the service's lens and the default target run_task delegates to.
  • Reorder — the up / down controls set the agents' explicit order; the brain considers them in that order.
  • Clear all — unlink every agent from the group in one move.
Service group "DoorDash"★ DoorDash API specialist — primary (the lens)Anti-bot / PerimeterX — extra candidateGraphQL error triage — extra candidate

How primary and order work

  • The primary agent is what BusyBro adopts as its lens when you ask about that service or work with its captured traffic — so reverse-engineering DoorDash traffic reasons with a DoorDash-tuned specialist.
  • The non-primary agents are extra delegation candidates: when the brain delegates a sub-task with run_task, the group's linked agents (primary first, then by order) are the pool it can hand work to.
  • A group with no linked agents simply has no per-service lens — BusyBro falls back to the best-fit built-in component specialist.

Manage them by asking BusyBro

If your role has services edit permission you can also do all of this in plain language — for example, "link the DoorDash API specialist and the anti-bot agent to the DoorDash service group, and make the API one primary." Under the hood that calls the set_service_group_agents MCP tool, which fully replaces a group's linked-agent set in one write: you describe the complete desired set, exactly one is primary, and an empty set clears the group. list_service_groups and get_service_group return each group's primary_agent plus its ordered agents[].

Note: Ask "what agents does the DoorDash service use?" and BusyBro reads the group's linked agents and their primary.

Removed: the older single inline service_groups.ai_agent field ({enabled, name, instructions}) and the deprecated service_groups.agent_id FK have been dropped — the service_group_agents join is the single source of truth. Manage agents through the Agents tab and the registry.

See also