Skip to main content

Text-to-speech CLI, MCP server, and Claude Code plugin (ElevenLabs, AWS Polly, OpenAI)

Project description

punt-tts

Voice for your AI coding assistant.

License CI PyPI

When Claude Code finishes a task, hits an error, or needs your approval --- you hear it. No need to watch the terminal. Keep working; your agent will tell you what happened.

Platforms: macOS

Quick Start

curl -fsSL https://raw.githubusercontent.com/punt-labs/tts/main/install.sh | sh

Restart Claude Code, then:

/notify y     # hear when tasks complete or need input
/recap        # spoken summary of what just happened
Manual install (if you already have uv)
uv tool install punt-tts
tts install
tts doctor
Verify before running
curl -fsSL https://raw.githubusercontent.com/punt-labs/tts/main/install.sh -o install.sh
shasum -a 256 install.sh
cat install.sh
sh install.sh

Features

  • Notification layer --- spoken summaries when tasks finish, chimes when Claude needs input
  • Three providers --- ElevenLabs (natural voice), OpenAI (low latency), AWS Polly (cost-effective)
  • Opt-in only --- no audio until you enable it, no surprises
  • Voice or chime --- /speak n switches to audio tones, no TTS API calls
  • Graceful absence --- if punt-tts isn't installed, Claude Code works exactly as before
  • MCP-native --- runs as a Claude Code plugin with slash commands and hooks

What It Looks Like

Enable notifications

> /notify y

Notifications: enabled (voice)
You will hear spoken summaries when tasks complete and chimes when Claude needs input.

Get a recap

> /recap

Speaking: "I refactored the authentication module into three files, added
comprehensive tests for the token refresh flow, and fixed a race condition
in the session middleware. All 47 tests pass."

Switch to chime-only

> /speak n

Speak: off (chime only)
Notifications will use audio tones instead of voice.

Commands

Command Purpose
/notify y Speak on task completion and permission prompts
/notify c Continuous --- also speak milestone updates during long tasks
/notify n Off
/speak y Notifications are spoken (default when /notify is on)
/speak n Notifications are a chime --- no words
/recap Spoken summary of Claude's last response
/say "text" Speak arbitrary text aloud
/voice on | /voice off Enable/disable voice mode

Providers

punt-tts auto-detects the best available provider.

Provider API Key Default Voice Best For
ElevenLabs ELEVENLABS_API_KEY matilda Long-form summaries, natural voice
OpenAI OPENAI_API_KEY nova Fast notifications, low latency
AWS Polly AWS credentials joanna Cost-effective, no API key needed

Auto-detection order: ElevenLabs > OpenAI > Polly.

CLI

punt-tts is also a standalone TTS tool, independent of Claude Code.

tts synthesize "Hello world"                  # Synthesize with default provider
tts synthesize "Hello" --provider elevenlabs  # Use specific provider
tts doctor                                     # Check setup
tts install                                    # Install Claude Code plugin (marketplace)
tts uninstall                                  # Remove plugin and clean up
tts install-desktop                            # Register MCP server with Claude Desktop
tts serve                                      # Start MCP server (stdio)

Environment Variables

Variable Description Default
TTS_PROVIDER Force a specific provider auto-detect
TTS_MODEL Model override provider default
TTS_OUTPUT_DIR Output directory ~/tts-output

Roadmap

Shipped

  • Notification layer: /notify, /speak, /recap, Stop + Notification hooks
  • Multi-provider TTS engine: ElevenLabs, AWS Polly, OpenAI
  • Claude Code plugin: marketplace install, MCP server, slash commands
  • CLI: synthesize, batch, pair, pair-batch, doctor
  • Ephemeral output mode (.tts/ in cwd)
  • Two-channel display: panel summaries with voice/provider context
  • Natural notification phrasing: randomized phrases for permission and idle prompts

Next

Phase What Ships
Screen reader macOS VoiceOver and say fallback when no API key is configured
Streaming Real-time audio streaming for long summaries
Voice selection /voice pick command with preview and persistence

Documentation

Design Log | Changelog

Development

uv sync --all-extras                           # Install dependencies
uv run ruff check src/ tests/                  # Lint
uv run ruff format --check src/ tests/         # Format
uv run mypy src/ tests/                        # Type check (mypy)
uv run pyright src/ tests/                     # Type check (pyright)
uv run pytest tests/ -v                        # Test

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

punt_tts-0.3.2.tar.gz (30.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

punt_tts-0.3.2-py3-none-any.whl (38.2 kB view details)

Uploaded Python 3

File details

Details for the file punt_tts-0.3.2.tar.gz.

File metadata

  • Download URL: punt_tts-0.3.2.tar.gz
  • Upload date:
  • Size: 30.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for punt_tts-0.3.2.tar.gz
Algorithm Hash digest
SHA256 f7db2ec566f7e1452316f78c75ca346d72d61a61cfeeee9d7142c65f6176bb05
MD5 16dd9acf0ab46b7c1dbdec13db7b7dfd
BLAKE2b-256 76d7fcd429d98a75a0a34e16518d8ead482e8ff7387c1649929376bf3189206a

See more details on using hashes here.

File details

Details for the file punt_tts-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: punt_tts-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 38.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for punt_tts-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6c0d9bcd6ff16db0330d08be44780f4830bcdaaf4e5f2cf8284751855f1fe4d7
MD5 1950e541652f930fade5fc5600f681b8
BLAKE2b-256 8394282ac59ce8247a94f09b408ad73703bd5baf22f015440caf327b862578f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page