Open Source, Free Tier Capable Whispr Using Cloudflare AI VoiceBox, an open-source voice-to-text tool using Cloudflare AI, captures speech via Whisper transcription and formats output with an LLM, auto-pasting the result into the user's active application. The tool is built with Go, React, and Cloudflare Workers, and is available for macOS with a free tier. It demonstrates a practical integration of AI speech recognition and language models for productivity. Voice-to-text tool that captures speech, transcribes it via Whisper, and formats the output with an LLM. Press a hotkey, speak, release — formatted text lands in your clipboard and is auto-pasted into whatever you were typing in. ┌──────────────────────┐ PCM chunks ┌──────────────────────────────────┐ formatted │ Wails Desktop App │ ──WebSocket──▶ │ Cloudflare Worker Durable Obj │ ──text────▶ Clipboard → Auto-paste │ Go + React WebView │ ◀─────────────│ Whisper STT → LLM Formatter │ └──────────────────────┘ └──────────────────────────────────┘ - Hold Ctrl+Cmd — focus context is captured, recording starts, overlay appears at top-center - Speak into your microphone voice level meter shows input - Release Ctrl+Cmd — audio streams to the cloud - Whisper transcribes, LLM formats, result is copied to clipboard and auto-pasted into the originating app voicebox/ ├── main.go Wails entrypoint, app menu ├── app.go App lifecycle, hotkey handlers, pipeline orchestration ├── window darwin.go macOS window management overlay, settings, dock click ├── window other.go Stub for non-macOS builds ├── internal/ │ ├── audio/ PCM audio capture malgo/miniaudio , RMS level │ ├── pipeline/ WebSocket client, streams audio + focus context to worker │ ├── accessibility/ macOS AX API: focused element context + auto-paste Cmd+V │ ├── config/ TOML config loading and saving │ ├── hotkey/ Global hotkey registration │ ├── stt/ STT provider interface stubs │ └── formatter/ LLM formatting provider interface stubs ├── frontend/ React + Tailwind overlay UI Vite │ └── src/ │ ├── App.tsx Routes between settings mode and overlay mode │ ├── components/ │ │ ├── settings-form.tsx Config editor react-hook-form + zod │ │ └── title-bar.tsx Frameless title bar with drag region │ └── hooks/ │ ├── use-voicebox.ts voicebox:state / voicebox:mode / voicebox:level events │ └── use-config.ts GetConfig / SaveConfig / GetConfigPath bindings ├── worker/ Cloudflare Worker TypeScript │ ├── src/ │ │ ├── index.ts Router: /ws WebSocket , /health │ │ ├── session.ts Durable Object: audio accumulation + AI pipeline │ │ ├── prompt.ts System prompt + user message builder │ │ ├── wav.ts PCM-to-WAV wrapper │ │ └── types.ts Shared types │ ├── test/ Vitest tests │ └── wrangler.jsonc Worker configuration ├── go.mod └── voicebox.toml User config gitignored - Go 1.24+ - Node.js + pnpm Wails v2 https://wails.io/ CLI- A Cloudflare account with Workers AI access - macOS accessibility permission required for auto-paste cd worker pnpm install wrangler secret put VOICEBOX TOKEN set a shared secret pnpm deploy On first launch, VoiceBox opens a settings window. You can also create the config manually at ~/.config/voicebox/voicebox.toml : provider mode = "cloud" cloud worker url = "https://voicebox.