brovoice
Claude Code & Codex audio layer
Offline first · no account

Your coding agent, talking back in Malayalam.

Claude Code and Codex, out loud — the way a Kerala developer actually talks. Not the way a textbook does.

check_circleTwo commands, works offline, no account needed.

$pipx install brovoice && brovoice install-hooks
terminalclaude-code session
youfix the null check in auth
claudeI've fixed the null check in src/auth.ts.
brovoice 🔊spoken

auth.ts-ൽ null check fix ചെയ്തു.

[rule:fixed-in · 0 ms · no network]
41 rules76% handled without an LLM~26 chars spoken per turn
code_blocksTOKEN MASKING

Identifiers stay identifiers

Every Malayalam text-to-speech service will read you a sentence. None of them handle what developers actually say: Malayalam grammar wrapped around English technical words, with code left strictly alone.

useEffect stays useEffect. The moment a voice tries to pronounce it in Malayalam script, the whole thing becomes a party trick instead of a tool. brovoice masks every identifier, filename and command before translation and restores it after, so no layer can mangle it.

verifiedDETERMINISTIC · NO MODEL IN THE PATH

Filenames, camelCase and snake_case names, dotted paths, CLI flags and ALL_CAPS constants are masked by regex before anything reads them, and restored byte-for-byte after. A test asserts no placeholder ever reaches the speaker.

closeTransliteratedGeneric TTS
What it says:
“യൂസ്‌എഫക്ട് ഹുക്കിൽ...”

The identifier is spelled out phonetically in Malayalam script. You cannot map the sound back to the symbol in your editor.

checkMaskedbrovoice
What it says:
useEffect hook-ൽ fix ചെയ്തു.

The symbol is spoken in English, the grammar around it in Malayalam. You hear the name you would type.

translateREGISTER, NOT VOCABULARY

It says “test”, not “പരീക്ഷണം”

No Kerala developer says പരീക്ഷണം for test, or അനുവാദം for permission. For this vocabulary the English word is the Malayalam word. Formality is not a dial you can turn up on dev jargon — reach past it and you land in a textbook instead of a conversation.

The rule is enforced in code, not left to taste. Each language pack lists the nouns that stay English and the formal renderings that are banned; the test suite checks every shipped line, and the model tier drops its own output rather than caching a line that breaks it.

rulepacks/ml.toml — [vocab]
EnglishTextbook — bannedWhat brovoice says
testപരീക്ഷണംtest
permissionഅനുവാദംpermission
updatedപുതുക്കിupdate ചെയ്തു
refactoredപൊളിച്ചെഴുതിrefactor ചെയ്തു
45 nouns declared untranslatable · 15 textbook renderings banned · checked by the test suite
wifi_offOFFLINE FLOOR

Works on a plane

The local voice is free, offline, and honestly quite robotic. It exists so the tool works with no account, no key and no network. Add a key when you want it to sound human.

Your own Google key is free at any realistic volume, and brovoice picks it over the hosted voice automatically.

memoryLocal

espeak-ng. A formant synthesiser — it sounds like a robot, because it is one. Instant, private, free forever.

Network
none
Cost
free
Sounds human
no
graphic_eqNeural

Google or Sarvam neural Malayalam. Handles a Latin identifier mid-sentence without falling apart, which is the whole requirement.

Your own key
free tier
Hosted
₹500 / mo
Sounds human
yes
languageONE FILE PER LANGUAGE

More languages next

A language is one TOML file. Copy the Malayalam pack, translate the rule table, fill in which nouns stay English — no Python changes. You know your language's register better than we do, which is the entire reason this is open source.

packs/
ml.toml · shipping
ta.toml · wanted
hi.toml · wanted
te.toml · wanted

Give your terminal a voice that actually sounds like home.

$pipx install brovoice && brovoice install-hooks