Threads, groups, and collaboration
Organize agents like contacts and let them collaborate without losing control of each task.
Bots and threads
A bot is a durable agent identity. A thread is one conversation with that bot and has its own transcript, provider session, approvals, costs, and running state. It runs on the bot's model unless you pick another model in that thread. Optional folders organize related threads without duplicating the bot's memory or skills.
Use separate threads when you want fresh context or independent work without duplicating the bot. Messages sent to a busy thread are queued, and supported providers can be steered while they work. Other threads can continue independently. See Bots, folders, and threads for limits and shared-resource behavior.
Cards in a chat
In a one-to-one chat, a bot can show you a card instead of plain text: a summary with buttons, a list to pick one item from, a short form, a table, a chart, or a progress bar. Forms can hold text boxes, checkboxes, choices, and pickers for a date, a time, or days of the week (with Every day, Weekdays, and Weekends).
- Pressing a button sends your choice, with what you filled in, as your next message. If the bot is still working, it waits in the queue like any other message; remove it from the queue and the card can be answered again.
- A field the bot marked as required must be filled before you confirm or submit.
- A button can also open a web page. That opens on your device and sends nothing to the bot.
- When you confirm, cancel, or submit, the card folds to one line with your answer. Details shows the card as you answered it.
- Until you answer, the bot can update a card it already showed, for example to show the progress of its work.
Images in a card show External image hidden for privacy until you press Load image, so showing the card does not contact the image's address. Images must use an https:// address.
Cards are not shown in group chats yet: there, the bot answers in text. The Brainwrite Mobile app shows interactive cards too: buttons, lists, forms and an Other answer where the bot allows one.
Quote part of a reply
On the desktop, select text in a bot's reply and choose Add to prompt, or press ⌘L (Ctrl+L on Windows and Linux). The quote appears as a small chip at the start of the message box and is sent with your next message. Press Backspace at the start of the box, or Esc, to remove it. A very long selection shows Shorten selection instead.
Token usage
Hover over the usage chip in a bot's chat header to see the totals and the latest message's usage. Input and output are separate:
- Uncached input is input the provider did not report as served from its prompt cache.
- Cached input is input the provider reported as served from its prompt cache.
- Output is the generated token count reported by the provider.
Uncached input plus cached input equals total input. If the provider does not report a cache split, the tooltip shows total input and output instead. A missing cache count is not treated as zero.
The compact chip shows cost when the provider reports it. Otherwise, it shows uncached input when known, or total input. Generated output is listed separately in the tooltip and is not added to either input figure.
Groups
Groups bring several bots into one conversation. Each participant keeps its own provider state. Group timeouts prevent a participant from blocking the whole group indefinitely. Existing channels and their thread histories remain intact; the new label does not change turn-taking or delegation.
When a bot sends the same request to several group members, the group shows one shared message addressed to those members. Each member runs with its own model and permissions and can reply in that conversation. Different assignments remain separate.
When a bot needs you
In a group, a bot can tag you with @you, or with your profile name, to get your attention or ask you something it can't continue without. The tag is highlighted, and you get a notification that the bot mentioned you, with the line around the tag. One-to-one chats don't send this notification.
Waiting turns
When several members of a group have work queued in the open thread, the group lists each one that is waiting, for example Nova: Queued · waiting for Atlas (2 of 3). The sidebar preview shows how many are queued, for example Atlas is working… · 2 queued.
Fast decisions: who answers
A decision model is a fast model that makes small choices for your bots; the bots still do the work. Set it up in Settings → Decision model. Today it makes one choice, Who answers in rooms: in a group set to Auto, it picks the bot that fits each message nobody @mentioned. When it is unsure or cannot be reached, the group's lead answers.
Under Provider, choose TypeSafe Jev or OpenRouter:
- TypeSafe Jev uses your own Jev API key. On a Brainwrite Cloud computer, decisions through Jev are included in the plan and the key field says Included with your Cloud plan; your own key, if you save one, is used instead.
- OpenRouter uses your own OpenRouter API key, saved on this page, and the Model you choose. The model list comes from OpenRouter; if it cannot be loaded, Brainwrite shows a built-in list. Decisions through OpenRouter are never the ones included with Brainwrite Cloud: they always use your key and are billed to your OpenRouter credits.
Saving a key turns decisions on; Use Jev for fast decisions or Use OpenRouter for fast decisions turns them off and on again. Test reports how fast the provider answered. A group gives a decision 1.5 seconds; with a slower model, the group falls back to its lead, so pick a faster one.
Group token usage
After a group participant finishes a turn, the group header shows the current thread's reported cost, or input tokens when no cost is reported. Hover over the compact badge for uncached input, cached input, and output, plus the latest participant's turn. Switching threads switches these figures too; other group threads and private chats are excluded.
The figures come from the existing usage ledger and survive restarting the app. A missing cache figure is shown as an unknown split, not zero cached input. If some turns omit cost, the dollar amount sums only reported costs.
Renaming teams
Right-click a named team heading in the sidebar and choose Rename team, or use the team's menu on the Team map. Enter the new name and save. Bots (including archived bots), group chats, shared instructions, and an assigned team computer stay together. Existing management access to a populated team follows its new name; an existing team's name cannot be used to merge teams. Finish active work before renaming.
Deleting a team
To delete a team, right-click its name in the sidebar and choose Delete team, or use its Manage menu in Team map. The confirmation explains that bots (including archived bots) and group chats move to General with their conversations intact. The team's shared instructions are removed; General's instructions stay unchanged. Stop active work and unassign any team computer first. If moving the team's Chief would conflict with General's Chief, move or change one of those Chiefs before deleting the team.
Team membership
Every named team keeps an Add bots button in the sidebar. Once it has members, the button reads Add or remove bots. The dialog lists current members as checked alongside other available bots. Check a bot to move it into the team; uncheck one to move it to General, then save. Conversations stay with the bots. A move that would put two Chiefs of Staff in the same team is refused.
Choose New bot inside this dialog to open bot creation for that team. The new bot is created directly in the selected team and appears checked when you return to the membership list. Creating it does not discard your other unsaved checkbox edits.
Team memory
A team's memory holds the people, places, decisions and terms every bot in the team shares. Open it with Team memory in the team's menu on the Team map, which is shown in Advanced mode.
- The top says how many of the accepted notes load automatically into each conversation; the others stay searchable by the bots. Each note shows Loaded or Searchable. Pin the essential ones to load them first.
- An edited note keeps its Previous versions; Restore text puts an earlier one back.
- If someone else changed a note while you were editing it, your change is not saved over theirs. Brainwrite says so and shows your unsaved draft; choose Reload latest and edit again.
- Renaming a team keeps its notes.
Your inbox on a team's Cloud
On a team's Cloud, everything for you arrives in one place: your chat with your own Chief of Staff, or with your own Brainwrite if you have no Chief. Nothing to set up. Each line says who it is from and where it came from, with a link back when you can open that conversation, and you get one notification for it, on your computer and your phone.
- A bot's "Tell Marco that…" (the
message_persontool), from any bot or chat. - @Marco written by a teammate anywhere, or by a bot in a chat Marco can see.
- Questions and approvals for you (from the bots that report to you), with the same Approve and Deny buttons as in the chat they came from. Answering here answers there.
- Work handed between bots that waits on you, failures, and your routines' results.
Answering is replying. Use Reply on a line, give it a 👍 or 👎, or just tell your Chief ("tell Philipp Friday works"). The answer goes back where the line came from: to the bot that asked, which carries on, or to the teammate's own inbox. Only your answer goes, nothing else from your chat.
Everyone has an Inbox. It opens from Inbox at the top right of the window, just before the notifications bell, with no team and no account too: questions and approvals your bots wait on, what they sent you, and routine reports, each labelled with who it is from. Answer there and the bot carries on. Each place keeps its own: This computer and My Cloud each have theirs.
Your inbox at a glance. In your chat with your Chief, one card keeps what needs you in view: how many things need you and how many are just for your information, the newest few with their answer buttons right there, and Open inbox. The whole inbox opens on the right, in three tabs: Needs you (questions and approvals), For your info (reports, mentions and messages) and Done. Click a line to read it in full and answer or reply; mark news done when you need nothing more from it. On a phone it opens as a sheet.
What waits on you is counted. Your own row under People shows how many questions and approvals wait on you in your inbox, and the same number is added to the count on the app's icon and in the browser tab. It drops as soon as you settle one, wherever you do it: in your inbox, in the chat it came from, or on your phone. A message you answer in the chat it came from leaves Needs you too.
Your assistant answers simple facts for you. When a teammate asks something your shared facts answer, your Chief answers by itself and says it was "Marco's assistant". It only knows when you are busy (from your own Google Calendar, when you connected it: times only, never what the meetings are), the shared notes of your bots, and how their work stands. It never decides, approves, promises or agrees to anything for you, never sends anything outside the team, and never reads your private chats or About you: those questions wait for you. You see every question and every answer it gave in your inbox, and replying corrects it.
People in the sidebar. The team's people are listed with their pictures, and they are in the @ list next to the bots. Click yourself to open your inbox; click a teammate to start a message with @their name in the chat you have open. Everyone in the team sees each teammate's name and picture; your About you and everything else stay private.
Someone who has left the team can't be reached, and the bot says so. One conversation can pass at most 10 messages an hour.
Off a team, nothing changes: the @ list shows bots, and @you still means you.
People come first in @. When a teammate and a bot share a name, @ that name reaches the person, never the bot. A bot made or renamed with a teammate's name, or your own, says so once in its chat, for example Atlas is also a person here, so "@Atlas" reaches Atlas, not this bot. Rename the bot to keep them apart. Nothing is refused: you may keep the name.
Who can use a team bot
On a Team Cloud, each bot is shared like a document. Choose Share in the chat's header, or at the top of the bot's settings, to open Share with the bot's name:
- People with access lists the bot's owner first, then each person added, each with a level. Add people by name or email; Remove access takes someone off.
- General access is either Only people added, or Everyone in the team with one level for all.
A change applies at once and offers Undo for a few seconds. Admins and the bot's owner can always edit every bot.
| Level | What the person can do |
|---|---|
| No access | The bot isn't in their list. |
| Can view | Find the bot and read the conversations shared with them, but not chat with it or write in its rooms. |
| Can chat | Chat with the bot and start their own conversations with it. |
| Can edit | Chat with the bot and change it: its instructions, its apps and who has access. Its approval level, computer and working folder stay with admins and its owner. |
Someone who can't edit sees only their own level: people who can edit choose who has access. Bots made before these levels keep exactly who could use them.
Delegation
Bots can hand work to other bots. Delegated runs carry explicit status back into the parent conversation, including completion, failure, and cancellation.
A second opinion from another model
A bot doesn't need a teammate to get work done on another model. It can open a thread of its own on any model you have connected, from another provider too, and have the result come back to it: for example three reviews of one change, each on a different model, with no review bots to set up. The bot reads the models it can use with list_models and opens each thread with start_thread, a model_selection and report_back. list_models gives a short list per provider, with the model the bot is on first, and finds any other model by name, so a provider with hundreds of models doesn't flood the conversation. You see "Opened thread #Review: GPT" where it went out and "#Review: GPT replied" when the answer comes back, and the bot then carries on with every result in hand. The thread is a row under the bot like any other, so you can open it and read the whole review.
A provider that is signed out or unavailable shows in list_models with the reason, and a thread on it is refused when it is opened, so a second opinion never quietly comes from the bot's own model. These threads can't be opened from a group chat, and a thread opened this way can't open more of its own.
Creating a specialist with a chosen model
A Chief of Staff can create a specialist in its own team with create_bot. Ask for a particular engine, model and reasoning effort if you want to choose them. The Chief can look up exact available choices with list_team_setup and pass modelSelection with instanceId, model, and optionally effort or a supported variant (not both).
When no model selection is supplied, the new bot uses the workspace's default model selection, including its reasoning effort; it does not copy the Chief's model. An invalid explicit choice is rejected rather than silently replaced. The new bot starts with connected apps disabled and at Full access, like any new bot, and existing bots keep their models. Combined team changes still use the reviewed team-setup flow.
Rewind and branches
Editing an earlier message creates a new conversation path. Brainwrite avoids resuming stale provider sessions after a rewind, so the next turn follows the visible branch rather than hidden abandoned state.
Memory and working folders
Bot memory is visible and editable. A bot may also have a dedicated working folder; groups can use a shared working folder. Cloud workspaces use a stable default so generated files remain discoverable across threads. A sidebar folder is only organization, not a working directory or a permission boundary.