Speech works on audio files: the voice_output tool (tool_voice_output.go) writes speech to a file in the workspace, and the voice_input tool (tool_voice_input.go) transcribes one, with the provider set by voice.tts_provider / voice.stt_provider (OpenAI, Gemini or Chimege). The same transcriber, registered in cmd/gateway/main.go, turns voice notes that arrive on a channel (Teams audio attachments, for example) into text. What stays disabled, because Windows Defender flagged it, is local microphone recording and speaker playback (voice.go) and desktop control (desktop.go).
| # | Feature | Status | Notes |
|---|---|---|---|
| 14.1 | TTS (text-to-speech) | Done | voice_output tool, writes an audio file. Local playback (voice.go) disabled — Windows Defender |
| 14.2 | STT (speech-to-text) | Done | voice_input tool and channel voice notes. Local microphone recording (voice.go) disabled — Windows Defender |
| 14.3 | Desktop screenshot | Disabled | desktop.go — Windows Defender |
| 14.4 | Mouse/keyboard control | Disabled | desktop.go — Windows Defender |
OpenClaw has full native iOS and Android apps (~140 files each) that act as both companion UIs and remote execution nodes.
| # | Feature | OpenClaw | GoClaw | Status |
|---|---|---|---|---|
| 15.0 | API for a company's own mobile app | — | app_api channel: POST /api/app/chat (JSON or SSE), GET /api/app/events for agent-initiated messages. See App API |
Done |
| 15.1 | iOS app | SwiftUI — Screen, Voice, Settings tabs | — | TODO |
| 15.2 | Android app | Kotlin/Compose — gateway pairing, voice, node | — | TODO |
| 15.3 | Gateway pairing | QR scan or manual host/port/token | — | TODO |
| 15.4 | Voice Wake (wake word) | Background listening → trigger agent | — | TODO |
| 15.5 | Talk Mode (voice I/O) | STT → agent → TTS, continuous conversation | — | TODO |
| 15.6 | Camera node capability | Take photos on request from agent | — | TODO |
| 15.7 | Screen capture | Share/record screen for agent | — | TODO |
| 15.8 | SMS / Contacts / Calendar | Access on behalf of agent (Android) | — | TODO |
| 15.9 | Apple Watch extension | Quick voice/text from wrist | — | TODO |
| 15.10 | Share extension (iOS) | Share content to agent from any app | — | TODO |
| 15.11 | Foreground service (Android) | Keep node alive for background execution | — | TODO |
GoClaw approach: A company's own app can already reach agents through the app_api channel, usually through its backend (Flutter + Django guide). For a GoClaw app of its own, consider a cross-platform mobile app (Flutter / Go Mobile) or defer — mobile is the most complex area of OpenClaw.
OpenClaw has a full macOS menubar app (~359 files, SwiftUI) that hosts the gateway and provides quick access.
| # | Feature | OpenClaw | GoClaw | Status |
|---|---|---|---|---|
| 16.1 | Menubar icon + status | NSStatusItem with status indicator | — | TODO |
| 16.2 | Hover HUD | Quick chat panel on hover | — | TODO |
| 16.3 | Web Chat panel | Embedded web view for Control UI | — | TODO |
| 16.4 | Voice Wake overlay | Full-screen overlay for voice | — | TODO |
| 16.5 | Push-to-talk | Hold key to speak | — | TODO |
| 16.6 | Exec approval prompts | Allow once / Always allow / Deny dialog | — | TODO |
| 16.7 | Node pairing approval | Approve new mobile devices | — | TODO |
| 16.8 | Gateway process management | Start/stop/restart gateway from menu | — | TODO |
| 16.9 | Sparkle auto-update | Signed update via appcast.xml | — | TODO |
| 16.10 | Onboarding wizard | First-run guided setup | — | TODO |
GoClaw approach: Consider systray (Go) for cross-platform tray icon, or Wails/Tauri for a desktop wrapper. GoClaw's strength is running as a headless binary — desktop app may be lower priority.
Coverage: 0%