noisy-coding
Talk to Claude Code while it works — Jarvis-style voice coding.It's your voice that's noisy, not your code.
Claude speaks short summaries aloud. An always-on listener turns yourspeech into messages Claude receives mid-task, without stopping it —no push-to-send, no copy-pasting transcripts. Step away from the keyboardand keep steering your agent.
Why you'll like it
- Interrupt-free flow — speak while Claude is working; your words landin the running session, not a text box.
- Hands-free reviews — Claude reads its findings aloud; you answerfrom across the room.
- Live "tactical HUD" dashboard — conversation log with replay/recall,real-time oscilloscope, mute buttons, costs and latencies at a glance.
- Per-agent character — voice, speed, and personality dials for everyagent, all from the dashboard.
- Nothing to configure in files — API key, devices, language,push-to-talk: everything lives in the UI and persists.
- Never talks over you — one voice at a time; speech you missed parksas UNHEARD and a CATCH UP button replays it.
Speech-to-text and text-to-speech run on theGrok (xAI) Voice API —extremely cheap in practice (a small one-time budget lasts months ofdaily use).
Install in 2 minutes
The backend ships as a hardware-free Docker image(noisy/noisy-coding):the dashboard browser tab is the microphone and the speaker. You needDocker and a browser — no Python, no git, no environment variables.
# terminal: marketplace + plugin in one line
claude plugin marketplace add noisy/noisy-coding && claude plugin install noisy-coding@noisy
# inside Claude Code (new session):
/noisy-coding:setup
The setup command starts the published image and walks you through firstcontact. Then finish in the browser at http://127.0.0.1:8765: pasteyour xAI API key (console.x.ai) and click the amber ENABLE TAB AUDIObanner — that one click makes the tab your microphone and speaker. Keepthe tab open and just talk.
Prefer staying inside Claude Code? Same thing, four commands:/plugin marketplace add noisy/noisy-coding →/plugin install noisy-coding@noisy → /reload-plugins →/noisy-coding:setup.
Other setups — plain Docker without the plugin, native install withhardware mic/speakers, remote hosts, all configuration knobs — live indocs/INSTALL.md.
How it works
All speech logic lives in one listener daemon — the single owner ofthe microphone, the playback queue and the speakers. The MCP server is athin messenger that forwards speak requests; Claude Code hooks deliveryour transcribed speech back into the session (seedocs/hooks.md).
mic (hardware or browser tab via WS :8766)
-> VAD -> Grok STT -> transcript queue -> HTTP :8765
^ polled by Claude Code hooks
speak (MCP, stdio or HTTP :8767) -> POST /speak -> daemon queue
-> Grok TTS -> speakers (hardware or browser tab)
Tools
| Tool | What it does |
|---|---|
speak(text, interrupt?) |
Queues text for speech and waits until it has played. Voice/speed/language come from the daemon (dashboard character), not the call. |
announce(text) |
Fire-and-forget variant: returns immediately, plays in the background. |
change_voice(voice_id) |
Deliberately switches this agent's voice (persists, shows on the dashboard). |
list_voices() |
Lists the built-in Grok voices (ara, eve, leo, rex, …). |
Docs
- docs/INSTALL.md — plain Docker, native install,remote hosts, environment variables, development commands
- docs/hooks.md — how Claude hears you
- docs/ports.md — what each port is for
- docs/local-development.md — hacking onnoisy-coding itself
License
MIT © Krzysztof Szumny