一键导入
voxclaw
Give your agent a voice. Send text to a Mac running VoxClaw and hear it spoken aloud with OpenAI neural voices or Apple TTS.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Give your agent a voice. Send text to a Mac running VoxClaw and hear it spoken aloud with OpenAI neural voices or Apple TTS.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Run an offline ASO audit on canonical App Store metadata under `./metadata` and surface keyword gaps using Astro MCP. Use after pulling metadata with `asc metadata pull`.
Guidance for using asc cli in this repo (flags, output formats, pagination, auth, and discovery). Use when asked to run or design asc commands or interact with App Store Connect via the CLI.
Automatically translate and sync App Store metadata (description, keywords, what's new, subtitle) to multiple languages using LLM translation and asc CLI. Use when asked to localize an app's App Store listing, translate app descriptions, or add new languages to App Store Connect.
Sync and validate App Store metadata and localizations with asc, including legacy metadata format migration. Use when updating metadata or translations.
Determine whether an app is ready to submit, then drive the App Store release flow with asc, including first-time submission fixes for availability, in-app purchases, subscriptions, Game Center, and App Privacy.
Resize and validate App Store screenshots for all device classes using macOS sips. Use when preparing or fixing screenshots for App Store Connect submission.
| name | voxclaw |
| description | Give your agent a voice. Send text to a Mac running VoxClaw and hear it spoken aloud with OpenAI neural voices or Apple TTS. |
| homepage | https://github.com/malpern/VoxClaw |
| metadata | {"clawdbot":{"emoji":"🦀","requires":{"bins":["curl"]}}} |
VoxClaw is a macOS app that speaks text aloud. It runs on the user's Mac as a menu bar app and listens for text over HTTP. Send text from any machine on the LAN and VoxClaw reads it using OpenAI neural voices or Apple's built-in TTS.
This is useful when your agent runs on a remote server or headless machine and you want voice output on the user's local Mac.
By default, agents should speak a short final summary after non-trivial work completes. Live progress narration should remain opt-in.
VoxClaw runs an HTTP listener (default port 4140) on the user's Mac. To speak text, POST to the /read endpoint. The user hears the text immediately through their Mac speakers with a teleprompter overlay showing synchronized word highlighting.
If the human shares a 🦞 VoxClaw setup pointer, use it directly. It includes:
https://voxclaw.com/)SKILL.md)Speak URL (/read)Health URL (/status)Agent Notify URL (/agent-notify)Prefer those provided URLs over guessed hostnames when both are available.
Never auto-switch to .local hostnames. Use numeric LAN IP URLs unless a human explicitly provides a .local target.
If health_url, speak_url, or agent_notify_url are present in the pointer, do not ask for LAN IP or run discovery first; call health_url immediately, then use the provided URLs.
Reliable connect order:
curl -sS http://localhost:4140/statuscurl -sS http://<lan-ip>:4140/status<lan-ip>:4140/read<lan-ip>:4140/agent-notifycurl -X POST http://<mac-ip>:4140/read \
-H 'Content-Type: application/json' \
-d '{"text": "Hello from your agent!"}'
Parameters (JSON body):
| Field | Type | Required | Description |
|---|---|---|---|
text | string | yes | The text to speak (max 50,000 characters) |
voice | string | no | Voice name for the active engine (e.g. OpenAI: alloy, echo, fable, onyx, nova, shimmer) |
rate | number | no | Speech rate multiplier (e.g. 1.5 for faster) |
instructions | string | no | Natural language speaking style (e.g. "Read warmly", "Sound excited"). Only works with OpenAI voices. |
engine | string | no | Override the engine for this read: apple, openai, or elevenlabs. Defaults to the app's configured engine. ElevenLabs gives the tightest word-highlight sync (server-side character timestamps). |
project_id | string | no | Stable identifier for the calling project (recommend the working directory). VoxClaw assigns a distinct voice per project and groups overlay indicators by it. |
agent_id | string | no | Stable identifier for the agent/session. Combined with project_id, gives each concurrent agent its own voice, and scopes "stop reading" so prompting one agent never cuts off another. |
Plain text also works:
curl -X POST http://<mac-ip>:4140/read -d 'Hello from your agent!'
Response:
{"status": "reading"}
Stop reading the response you previously sent — scoped to a single agent by
project_id + agent_id, so other agents keep speaking. Useful when the user
sends your agent a new prompt and the old spoken response is now stale.
curl -X POST http://<mac-ip>:4140/ack \
-H 'Content-Type: application/json' \
-d '{"project_id": "/path/to/repo", "agent_id": "session-123"}'
| Field | Type | Required | Description |
|---|---|---|---|
project_id | string | yes | Same identifier you passed to /read (a request without it returns 400) |
agent_id | string | no | Same identifier you passed to /read; scopes the stop to this one agent. Omit it to stop everything for the project |
The ack stops local playback and is relayed to your LAN peer speakers so it
stops there too. Response: {"status":"acknowledged"}.
Use agent notifications for task summaries, failures, and optional live progress updates.
curl -X POST http://<mac-ip>:4140/agent-notify \
-H 'Content-Type: application/json' \
-d '{"kind":"summary","text":"Task complete. I updated the parser and the focused tests passed."}'
Parameters (JSON body):
| Field | Type | Required | Description |
|---|---|---|---|
kind | string | yes | summary, progress, or failure |
text | string | yes | Spoken text |
source | string | no | Agent/source label |
voice | string | no | OpenAI voice override |
rate | number | no | Speech rate multiplier |
instructions | string | no | Natural-language speaking style |
Expected response:
{"status":"reading"}
or
{"status":"suppressed"}
curl http://<mac-ip>:4140/status
Response:
{
"status": "ok",
"service": "VoxClaw",
"reading": true,
"state": "playing",
"word_count": 42,
"website": "https://voxclaw.com/",
"skill_doc": "https://github.com/malpern/VoxClaw/blob/main/SKILL.md",
"discovery": "_voxclaw._tcp",
"speak_url": "http://192.168.1.50:4140/read",
"health_url": "http://192.168.1.50:4140/status",
"agent_notify_url": "http://192.168.1.50:4140/agent-notify",
"agent_speech_mode": "summary",
"agent_speech_verbosity": "brief"
}
States: idle, loading, playing, paused, finished.
agent_speech_mode controls what the app will actually speak:
off: speak nothingsummary: speak final summaries and failureslive: speak summaries, failures, and progress updatesThe user installs VoxClaw on their Mac:
voxclaw --listen)The listener binds to all interfaces on port 4140 by default. The port is configurable in Settings or via --port.
OpenAI API key is optional. Without a key, VoxClaw uses Apple's built-in voices. With a key, it uses OpenAI's neural voices (the user provides their own key during onboarding or in Settings).
VoxClaw advertises itself via Bonjour as _voxclaw._tcp on the local network. Agents can discover it without knowing the IP address.
| Status | Meaning |
|---|---|
| 200 | Text accepted, now reading |
| 200 | Agent notification accepted or suppressed |
| 400 | Missing or empty text, or text too long |
| 404 | Unknown endpoint (use POST /read, POST /agent-notify, POST /ack, or GET /status) |
| 413 | Request body too large (max 1 MB) |
Error responses are JSON: {"error": "description"}.
CORS: The HTTP API allows requests from http://localhost only. For cross-machine access, use curl or any HTTP client directly (CORS only applies to browsers).
Speak a summary after a task completes:
curl -X POST http://192.168.1.50:4140/agent-notify \
-H 'Content-Type: application/json' \
-d '{"kind":"summary","text":"Task complete. I deployed the new version and all tests passed."}'
Use a specific voice at faster speed:
curl -X POST http://192.168.1.50:4140/agent-notify \
-H 'Content-Type: application/json' \
-d '{"kind":"failure","text":"Heads up, the build failed on CI.","voice":"nova","rate":1.3}'
Control speaking style with instructions:
curl -X POST http://192.168.1.50:4140/read \
-H 'Content-Type: application/json' \
-d '{"text": "Welcome back! Your deploy succeeded.", "instructions": "Read warmly and conversationally"}'
Check if VoxClaw is available before sending:
curl -s http://192.168.1.50:4140/status | grep -q '"status":"ok"' && \
curl -X POST http://192.168.1.50:4140/agent-notify \
-H 'Content-Type: application/json' \
-d '{"kind":"summary","text":"Ready to go."}'