{"slug": "show-hn-gingerpaw-a-voice-dictation-and-agent-workspace-app", "title": "Show HN: Gingerpaw : A voice dictation and agent workspace app", "summary": "Gingerpaw, a new macOS app, launches a multi-agent coding workspace with on-device voice dictation and a talking ginger cat notification system. The app runs multiple coding agents like Claude Code and Codex in parallel within isolated git worktrees, with all processing staying local on the user's Mac. It targets developers seeking a private, parallel agent workflow without cloud dependencies.", "body_md": "**A multi-agent coding workspace for macOS — with on-device voice. Fully local.**\n\nRun a whole team of coding agents in parallel — Claude Code, Codex, Gemini CLI, Cursor — each in its own git worktree. Agents can even spawn their own workspaces and launch other agents. Plus push-to-talk dictation and a talking ginger cat that speaks (in a neural voice) when an agent finishes. Nothing ever leaves your Mac.\n\nRun multiple coding-agent CLIs side by side, each isolated:\n\n**A tab per agent**— Claude Code, Codex, Gemini CLI, Cursor — real interactive terminals (SwiftTerm PTYs) running in-app.** Git worktrees**— every workspace is a worktree on its own branch under`~/.gingerpaw/worktrees`\n\n, so agents work in parallel with zero collisions.**Live diff panel**— Files / Changes / Review with`+/−`\n\ncounts, one-click**Commit**, and** Create PR**(via`gh`\n\n).**Ports + branch status**— detected dev-server ports and ahead/behind, right in the status bar.- Agents launch with auto-approve flags — safe, because each is sandboxed to its own worktree.\n\nGingerPaw runs an MCP server, so an agent running *inside* a workspace can drive the cockpit:\n**create new workspaces, launch other agents with a task, and read their diffs back.** Ask one\nagent for something and a whole team shows up in your sidebar, working in parallel — all visible\nand steerable. A `.mcp.json`\n\nis auto-wired into every worktree (Claude Code) and `~/.codex/config.toml`\n\n(Codex).\n\n**Push-to-talk dictation**— hold** Fn or Right Option**, speak, release; transcribed on-device with[WhisperKit](https://github.com/argmaxinc/WhisperKit)and pasted into any app.**Talking-cat notifications**— when a coding agent finishes, a ginger cat pops up and speaks a summary in a natural** Kokoro (82M) neural TTS**voice (or macOS`say`\n\n). Walk away and still know when it's done.\n\nAll on-device. No cloud, no account.\n\n- macOS 14+ (Apple Silicon)\n- Xcode 16+ with the Metal Toolchain (\n`xcodebuild -downloadComponent MetalToolchain`\n\n) — required to compile MLX's GPU shaders. [XcodeGen](https://github.com/yonaskolb/XcodeGen)(`brew install xcodegen`\n\n)- The agent CLIs you want to use (\n`claude`\n\n,`codex`\n\n,`gemini`\n\n,`cursor-agent`\n\n) on your`PATH`\n\n. `gh`\n\n(optional) for Create PR. Kokoro TTS (optional) for the neural voice.\n\n``` php\nxcodegen generate                                    # project.yml -> GingerPaw.xcodeproj\nxcodebuild -project GingerPaw.xcodeproj -scheme GingerPaw \\\n  -configuration Debug -derivedDataPath ./dd build\n```\n\nMLX requires Xcode's build system to compile the Metal kernels — a plain\n\n`swift build`\n\nwill not produce the metallib. Use`xcodebuild`\n\n(or open the project in Xcode).\n\nThe build is self-contained: a build phase also compiles and bundles `gingerpaw-cli`\n\n(the voice + MCP helper) into the `.app`\n\n, so a fresh clone builds a complete, runnable app —\nno extra steps. First launch downloads the WhisperKit model once; grant the three permissions\nbelow. Install the agent CLIs you want (`claude`\n\n, `codex`\n\n, `gemini`\n\n, `cursor-agent`\n\n) to use the\nAgent Workspace.\n\nRun `swift test`\n\ninside `Packages/FlowKit`\n\nfor the unit tests.\n\nGingerPaw needs three macOS grants (surfaced in the in-app **Permissions** tab):\n\n| Grant | Why |\n|---|---|\n| Microphone | Record your voice for transcription |\n| Input Monitoring | Detect the push-to-talk hotkey globally |\n| Accessibility | Paste text into the focused app |\n\nA thin SwiftUI app shell (`App/`\n\n) over **FlowKit** (`Packages/FlowKit`\n\n), a SwiftPM package of focused libraries:\n\n`AgentWorkspace`\n\n— the multi-agent window: SwiftTerm terminals, git worktrees, the diff panel, ports/PR, and the**MCP bridge**(`MCPBridgeServer`\n\n) that lets agents drive the app over a loopback socket.`AgentMCP`\n\n— shared Codable types for the MCP bridge (kept dependency-light so the`gingerpaw-cli`\n\nMCP binary stays small).`AgentNotifications`\n\n— the`<say>`\n\ntranscript parser + speech service shared by the app and the`gingerpaw-cli`\n\nhook binary.`Dictation`\n\n— the`DictationCoordinator`\n\nstate machine ·`Audio`\n\n·`Transcription`\n\n(WhisperKit) ·`TextInsertion`\n\n.`TextProcessing`\n\n— MLX/Qwen formatter (experimental) ·`Hotkeys`\n\n(global`CGEventTap`\n\n) ·`Permissions`\n\n(TCC) ·`Overlay`\n\n·`Settings`\n\n.`AppCore`\n\n— composition + UI: the Agent Workspace, Dictate / Voice / Permissions / Settings, and the talking cat.\n\n`gingerpaw-cli`\n\nis the bundled helper binary: `notify`\n\n(the Claude Code voice hook) and `mcp`\n\n(the MCP server agents connect to).\n\nMIT", "url": "https://wpnews.pro/news/show-hn-gingerpaw-a-voice-dictation-and-agent-workspace-app", "canonical_source": "https://github.com/Vikrant-Khedkar/gingerpaw", "published_at": "2026-06-22 08:22:27+00:00", "updated_at": "2026-06-22 08:40:38.702651+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-tools", "natural-language-processing", "ai-infrastructure"], "entities": ["Gingerpaw", "Claude Code", "Codex", "Gemini CLI", "Cursor", "WhisperKit", "Kokoro", "MLX"], "alternates": {"html": "https://wpnews.pro/news/show-hn-gingerpaw-a-voice-dictation-and-agent-workspace-app", "markdown": "https://wpnews.pro/news/show-hn-gingerpaw-a-voice-dictation-and-agent-workspace-app.md", "text": "https://wpnews.pro/news/show-hn-gingerpaw-a-voice-dictation-and-agent-workspace-app.txt", "jsonld": "https://wpnews.pro/news/show-hn-gingerpaw-a-voice-dictation-and-agent-workspace-app.jsonld"}}