BusyBro is a multi-session chat, like Claude or ChatGPT: keep as many separate conversations as you like, switch between them from a sidebar, and pick up any one right where you left off. Sessions live on the server, so the same conversation is there whether you open BusyBro in the dashboard, on your iPhone, or over the bmc CLI.
Many conversations, a session sidebar
Open BusyBro and you can start a New chat any time — each is its own thread with its own history. A toggleable session sidebar lists your conversations newest-active-first; from it you can:
- Select a session to switch to it (its history loads back in).
- New chat to start a fresh one.
- Rename a session to something memorable.
- Delete a session you're done with (confirmed first).
The sidebar collapses to keep the chat compact and expands when you want to browse or search your sessions by title. It works the same way in the dashboard chat panel and in the iOS app's chat sheet.
Sessions follow you across surfaces
A session is one conversation stored once on the server, not a per-device or per-tab copy. So a chat you start in the dashboard is the same chat you can reopen on your iPhone, and vice versa — the history is one shared thread. The client only remembers which session was last active; the messages themselves always come from the server.
- In the dashboard, the last session you used is restored when you reopen the panel.
- On iOS, the app restores the last active session when you reopen the chat. If a session was deleted elsewhere, it falls back gracefully to a fresh, empty chat.
Context-aware sessions in the dashboard
The dashboard goes one step further: when you open BusyBro while focused on something specific, it finds or creates a session bound to that context — so the conversation you have about a device stays with that device.
The binding is by entity, most-specific first:
| What you're focused on | Session it opens | Friendly name |
|---|---|---|
| Exactly one device selected | The session for that device | Device — <name> |
| Exactly one service group filtered | The session for that service | Service — <name> |
| A single request open | The session for that request | Request — <host/path> |
| A particular section (no single entity) | The section's session | the section's label |
| The home / a mixed selection | A manual session (or pick one) | — |
Open the chat while looking at device bmh2 and you get the "Device — bmh2" session; come back to bmh2 later and BusyBro resumes that same session rather than starting over. If you're on a broad or mixed view, it just opens your last conversation and lets you pick from the sidebar.
Note: A context-aware session is matched by the entity's id (a device or service UUID, or a request key), never its name — so renaming a device doesn't lose its conversation.
Deep-link straight to a session
A deep link can open BusyBro at a specific session: a …/app/busybro?thread=<id> link opens the iOS chat and resumes that conversation. If the id isn't one of yours, it simply opens a fresh chat — a link can't reveal someone else's session.
Manage sessions over MCP too
Sessions are part of the MCP tool surface, so an external agent (or BusyBro itself) can manage your conversations:
list_busybro_sessions— your sessions, newest-active first.get_busybro_session— one session's title and turns.create_busybro_session— start a new one (optionally seeded with a name or a context key; confirmed).rename_busybro_session— rename one (confirmed).delete_busybro_session— delete one (confirmed).
These are owner-scoped — each is checked against your account and gated by your role (read with users:view, change with users:edit). A session id you don't own returns not-found; it never exposes another account's conversation.
See also
- In the dashboard — the chat panel the sidebar lives in.
- On iOS and the iOS app — the same sessions on your phone.
- Deep links — open the app at a specific session.
- MCP tools — the session-management tools.