Voice, dictation, and memory
Listen to agents, talk to them, and inspect what they remember.
Spoken replies
Voice is set per bot: open the bot's settings, choose Voice & alerts, pick a Voice engine and a voice, then use the speaker control on a response. Auto-speak can read new replies as they arrive. Five engines are available:
- ElevenLabs — cloud voices, needs an API key.
- Fish Audio — cloud voices from the Fish Audio library, needs its own API key.
- Grok (xAI) — uses the xAI API key saved in Settings → API keys, and detects the spoken language from the text.
- Built-in Mac voices — the voices already installed on macOS, no key.
- Chatterbox (local) — an open-source, MIT-licensed engine reached through an OpenAI-compatible server you configure. With a server on your own machine there is no cloud call; the address can also point at any HTTP(S) server you choose.
The harness rewrites code-heavy Markdown into speech-friendly text before synthesis. Keys remain on the harness and never reach the renderer.
Fish Audio
- Create a key in Fish Audio API Keys.
- In the bot's settings under Voice & alerts, choose Fish Audio, paste the key, and save it.
- Pick one of the voices returned by your Fish Audio account, then use Try before enabling spoken replies.
Fish Audio and ElevenLabs keys are stored separately, so switching engines does not replace the other provider's credential. The picker combines popular public voices with voices owned by your Fish Audio account. Only use a voice when you have permission to do so.
Chatterbox (local)
Brainwrite speaks through any OpenAI-compatible server that runs Chatterbox behind POST /v1/audio/speech — for example LocalAI with a Chatterbox model installed, or a small wrapper service around pip install chatterbox-tts.
- Start your Chatterbox server locally and note its address, for example
http://127.0.0.1:4123. - In the bot's settings under Voice & alerts, pick Chatterbox (local) as the voice engine, paste the server address, and set the model id your server expects (the default is
chatterbox-turbo). - Pick a voice. Voice ids come from the server's
/v1/modelslisting when it has one, or/v1/audio/voiceswhen it doesn't; otherwise a Default entry uses the server's built-in voice.
There is no API key. Brainwrite sends the text to the configured server address, so synthesis stays on your machine only when that server is local. Per-agent voice overrides work the same as with the other engines, and a dead or unreachable server is reported as a clear error instead of a hang.
Voice notes
An agent can send a voice note: a short spoken message it writes itself, synthesized with the configured voice engine and attached to its reply when the turn ends. The same text becomes the note's visible caption and transcript, so the conversation stays readable — and searchable — without playing anything. Notes are limited to 1000 characters, and the same limit is enforced again at synthesis.
A note posted to a shared room works the same way: the agent records the note, then attaches it to its room post, where the room members can play it inline.
Voice notes can be turned off per agent. The switch sits under Voice & alerts in the bot's settings; while it is off, the agent is not offered the voice-note tool at all, even with a voice configured.
The audio itself is an mp3 file, or a WAV file for the built-in Mac voices and Chatterbox, in the attachments directory on your computer, with a generated name and owner-only permissions. It counts against the same 512 MiB attachment quota as images and documents.
Calls
Start a call with the call button in the composer. In a chat with one bot, the arrow beside it opens Call mode, with two choices. Group calls always take turns.
Take turns
You talk, then the bot answers in its own voice. On macOS, it combines native on-device speech recognition with the configured voice, so listening stays on your computer. It is deliberately half-duplex: the microphone pauses while the bot speaks to prevent the app from transcribing its own audio.
Tool progress and approval requests can be narrated during a call so long-running work does not sound disconnected.
Live calls
Talk naturally and interrupt any time; the bot still does the work. Live calls use OpenAI GPT-Live:
- Live calls are free for everyone, from the desktop app or your phone; no plan is needed.
- They use your own OpenAI API key, from a project with GPT-Live access: the OpenAI key in Settings → API keys, or a separate OpenAI API key for Live calls that the first call asks for, which wins when both are saved. Without a key, the Live button says "Live calls use your own OpenAI key. Add it in Settings → API keys." The key stays where you saved it: on your computer, or on My Cloud. Phones never receive it.
- OpenAI bills about $0.05 per minute of call. The bot's own work is billed as usual.
- A Live call sends your voice to OpenAI, along with the chat's recent messages, the bot's answers and the details of any approval it asks for.
Call settings in a Live call lets you pick the voice (a new voice starts with the next call), choose whether messages you type during the call are read out, set how many minutes of silence end the call, and change or remove the key. With Read replies to typed messages off, what you type during the call and the bot's answers to it are not sent to OpenAI.
A Live call ends when you hang up, after the chosen silence, or when it reaches OpenAI's time limit.
When a call that connected ends, the chat keeps one record of it: a small row reading "Call with" and the bot's name, with the call's length and what the bot did for the requests you spoke, its steps by name and the permission requests it raised, with how each was decided. The record holds no speech: the voice's own words are still not saved. A call that never connected leaves no record.
On the desktop, select the record to open the call: what you asked, the bot's answers, and its steps and approvals, grouped by request. Nothing else said on the call is kept. If part of the call is in earlier messages that are not loaded yet, the call says so; load earlier messages to see all of it.
Calls and dictation on My Cloud
In the desktop app on your Mac, calls and dictation also work while the window shows My Cloud. Your voice is recognised on your Mac with Apple's on-device speech recognition; only the text goes to your bot on your Cloud. The app allows this only for your own Cloud.
Dictation
The composer microphone uses Apple's on-device speech recognition, so dictation never leaves your Mac.
Memory
Each bot can keep plain-text memory that you can inspect, correct, or delete. Memory is not a hidden remote profile; it lives with the local Brainwrite data.