~/case-studies/flowcode

flowcode

Hlas pro Claude Code. Nativní macOS aplikace, která čte odpovědi nahlas a přijímá diktát, kompletně na zařízení.

Sólo — koncept, architektura, Swift + Python, design2026Open source (MIT) · veřejná beta
Swift 6macOSMetalKokoro TTSWhisper STTCore AudioAccessibility API

flowcode je drobná nativní macOS aplikace v menu baru, která dává Claude Code hlas. Jakmile dorazí nová odpověď, přečte ji nahlas lokálním text-to-speech enginem. Slyšíš tak, kdy Claude skončil, kdy se ptá nebo kdy čeká na tvoje rozhodnutí, a nemusíš přitom hlídat terminál.

Když jsi na řadě ty, podržíš pravý Option (⌥) a mluvíš. Tvoje slova se lokálně přepíšou a vloží do aktivní aplikace. Enter zmáčkneš ty. Umí číst i desktopovou appku Claude (Chat, Cowork, Code). Všechno běží na zařízení: žádný účet, žádný cloud, žádná telemetrie.

diktát podržením klávesy
MIT
open source, veřejná beta

problém

Dlouhá session v Claude Code znamená dva druhy čekání. Hlídáš terminál, jestli už odpověď doběhla, a píšeš další prompt ve chvíli, kdy máš plné ruce nebo zaměstnané oči. Hlas pro coding agenty vznikl už mnohokrát, ale většinou působí kostrbatě a striktně turn-based, jako smyčka přilepená k terminálu, ne jako hotový produkt.

Chtěl jsem něco ambientního. Claude prostě promluví, když má co říct, a já odpovím nahlas bez ztráty flow. Celé soukromě a tak, aby hlasový příkaz nikdy sám neprovedl nic nevratného.

jak to funguje

flowcode se nikdy nedotýká vnitřností Claude Code. Claude Code si na disk průběžně píše JSONL přepis každé session. flowcode ten soubor jen sleduje, vytáhne každou novou zprávu asistenta, odstraní popisy volání nástrojů a bloky kódu, aby zůstal čistý text, a pošle ho lokální TTS službě Kokoro. Desktopová appka Claude žádný přepis nemá, takže z ní flowcode čte text přímo z obrazovky přes macOS Accessibility strom.

Diktát funguje zrcadlově. Podržení ⌥ zachytí mikrofon, lokální Whisper ho přepíše a text se vloží do aktivní aplikace. Jakmile klávesu pustíš, mikrofon se uvolní. Oba enginy běží jako localhost služby, takže nic nikdy neopustí Mac.

$data-flow
Claude Code JSONL ─tail─┐
                        ├─▶ flowcode ─HTTP─▶ Kokoro :8880 ─▶ 🔊 + orb
Claude Desktop  AX ─────┘
        ⌥ hold ──▶ mic ──HTTP──▶ Whisper :2022 ──paste──▶ focused app

klíčová rozhodnutí

Produkt má dvě úrovně. Model B je to, co se vydává teď: čtení nahlas plus diktát, celé napsané ve Swiftu, bez Python jádra a bez socketu. Rychlý, malý, s minimem závislostí. Model A je experimentální real-time vrstva (barge-in, streamované TTS, sémantický endpointing), postavená na forku voicemode v Pythonu. Je zapojená, ale defaultně vypnutá.

  • Audio-reaktivní orb se vykresluje živě za běhu kompilovaným Metal shaderem, ne z bitmapy. Má fallbacky pro Reduce Motion a Reduce Transparency.
  • Dělení na věty rozseká dlouhé odpovědi a další větu syntetizuje, zatímco se přehrává ta aktuální. První věta se tak ozve dřív, bez čekání na celou odpověď.
  • Barge-in řešený jako čistý stavový automat (WebRTC VAD plus energetická brána naladěná na vlastní TTS asistenta). Můžeš do něj mluvit s latencí kolem 100 až 150 ms, bez hardwarového potlačení ozvěny.
  • Podpora Claude Desktopu přes Accessibility strom, s kotvením na nadpisy jednotlivých tahů a deduplikací přeskládaného textu, aby se nic nepřečetlo dvakrát.
  • Fork přátelský k upstreamu: každá změna voicemode je schovaná za feature flagem. Čistě se tak rebasuje na originál a ve vypnutém stavu je byte po bytu identický.

soukromí a bezpečnost

Dvě zásady jsou nedotknutelné. První: všechno je lokální. TTS i STT běží jako localhost služby, žádný účet ani síťový round-trip. Druhá: hlas může jen navrhovat, nikdy potvrzovat. flowcode za tebe nikdy nezmáčkne Enter. Rizikovější akce procházejí potvrzovací branou, která vyžaduje skutečné, nehlasové gesto: klik, klávesovou zkratku nebo Touch ID. Okolní zvuk, hlas kolegy ani vlastní TTS appky tak nikdy nic nespustí. Timeout navíc vždy defaultně odmítá.

stav a co dál

flowcode je open source pod licencí MIT a ve veřejné betě (v0.3.0). Instaluje se netradičně, agentem: nasměruješ na něj Claude Code a celý setup proběhne sám, od hlasových služeb přes build a podpis až po oprávnění. Dalším velkým krokem je notarizovaný download na jeden klik. Ten by flowcode posunul od pár stovek lidí, co si ho buildí ze zdrojáku, k širokému publiku.