{"id":34039510,"url":"https://github.com/robdmac/talkito","last_synced_at":"2026-03-09T08:31:21.152Z","repository":{"id":301042577,"uuid":"1005379340","full_name":"robdmac/talkito","owner":"robdmac","description":"TalkiTo lets developers interact with AI systems through speech across multiple channels (terminal, API, phone). It can be used as both a command-line tool and a Python library.","archived":false,"fork":false,"pushed_at":"2026-01-29T18:45:01.000Z","size":3942,"stargazers_count":52,"open_issues_count":3,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-30T04:48:55.581Z","etag":null,"topics":["bolt-new","claude","claude-ai","claude-code","claude-code-communication","claude-code-mcp","codex-cli","mcp-server","openai-codex","openai-codex-cli","voice-ai","whispercpp"],"latest_commit_sha":null,"homepage":"http://talkito.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robdmac.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-20T06:21:54.000Z","updated_at":"2026-01-30T02:30:44.000Z","dependencies_parsed_at":"2025-06-24T22:19:26.335Z","dependency_job_id":"f03eff00-5ba3-446c-8845-77290a8cf6f8","html_url":"https://github.com/robdmac/talkito","commit_stats":null,"previous_names":["robdmac/talkito"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/robdmac/talkito","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robdmac%2Ftalkito","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robdmac%2Ftalkito/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robdmac%2Ftalkito/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robdmac%2Ftalkito/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robdmac","download_url":"https://codeload.github.com/robdmac/talkito/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robdmac%2Ftalkito/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30287810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bolt-new","claude","claude-ai","claude-code","claude-code-communication","claude-code-mcp","codex-cli","mcp-server","openai-codex","openai-codex-cli","voice-ai","whispercpp"],"created_at":"2025-12-13T21:41:13.819Z","updated_at":"2026-03-09T08:31:21.142Z","avatar_url":"https://github.com/robdmac.png","language":"Python","readme":"# TalkiTo\n\n\u003cdiv align=\"center\"\u003e\n\n[![GitHub Stars](https://img.shields.io/github/stars/robdmac/talkito?style=social)](https://github.com/robdmac/talkito/stargazers)\n[![GitHub Forks](https://img.shields.io/github/forks/robdmac/talkito?style=social)](https://github.com/robdmac/talkito/network/members)\n[![License](https://img.shields.io/badge/License-AGPL%20v3-blue.svg?style=flat-square)](https://github.com/robdmac/talkito/blob/main/LICENSE)\n[![Discord](https://img.shields.io/discord/1420523410513072198?style=flat-square\u0026logo=discord\u0026logoColor=white)](https://discord.gg/WbP58Tym)\n\n\u003c/div\u003e\n\nTalkiTo lets developers talk, slack and whatsapp with Claude Code and OpenAI Codex. It can be used as a command-line tool, a web extension, and as a Python library.\n\n## 🚀 Quick Install\n\n### Option 1: One-liner Install Script (Recommended)\n```bash\ncurl -sSL https://raw.githubusercontent.com/robdmac/talkito/main/install.sh | bash\n```\n\n### Option 2: PyPI\n```bash\npip install talkito\n```\n\nThen just run:\n```bash\ntalkito claude\n```\n\n## Install for End Users\n\n### From Source (Stable)\n```bash\n# Clone the repository\ngit clone https://github.com/robdmac/talkito.git\ncd talkito\n\n# Create and activate virtual environment (recommended)\npython3 -m venv venv\nsource venv/bin/activate\n\n# Install system dependencies (macOS)\nbrew install portaudio\n\n# Install package (normal install - gets updates via git pull)\npip install .\n\n# Run this in a directory you want to use claude with\ntalkito claude\n```\n\n## Install for Developers\n\n### Editable Install (Development)\n```bash\n# Clone the repository\ngit clone https://github.com/robdmac/talkito.git\ncd talkito\n\n# Create and activate virtual environment (recommended)\npython3 -m venv venv\nsource venv/bin/activate\n\n# Install system dependencies (macOS)\nbrew install portaudio\n\n# Install in development mode (editable install)\npip install -e .\n\n# Run this in a directory you want to use claude with\ntalkito claude\n```\n\nor for the web extension run as\n```commandline\ntalkito --mcp-sse-server\n```\nthen go to chrome://extensions/ and load unpacked the extensions/chrome/ dir\n\n## Demo Video\n\n[![TalkiTo Demo](https://img.youtube.com/vi/dliBN7pNAuw/0.jpg)](https://youtu.be/dliBN7pNAuw)\n\n## AI Assistant Compatibility\n\n| AI Assistant    | Method        | Status              |\n|-----------------|---------------|---------------------|\n| **Claude Code** | Terminal      | **Fully Supported** |\n| **Codex Cli**   | Terminal      | **Fully Supported** |\n| bolt.new        | Web Extension | Output Only         |\n| v0.dev          | Web Extension | Output Only         |\n| replit.com      | Web Extension | Output Only         |\n| Other agents    | Terminal      | In Progress         |\n\n\n\n### Run with Claude Code\n\nrun `talkito claude`\n\n### Run with Codex Cli\n\nrun `talkito codex`\n\n### Run as an MCP server\n\nrun `talkito --mcp-server`\n\n### Run the TalkiTo configuration menu\n\nrun `talkito`\n\n#### Advanced Options\n\n```bash\n# Disable auto-skip to newer content (auto-skip is on by default)\ntalkito --dont-auto-skip-tts claude\n\n# Use different TTS providers\ntalkito --tts-provider polly --tts-voice Matthew --tts-region us-west-2 echo \"Hello with AWS\"\ntalkito --tts-provider azure --tts-voice en-US-JennyNeural echo \"Hello with Azure\"\ntalkito --tts-provider gcloud --tts-voice en-US-Journey-F echo \"Hello with Google\"\ntalkito --tts-provider kittentts --tts-voice expr-voice-3-f echo \"Hello with KittenTTS\"\ntalkito --tts-provider kokoro --tts-voice af_heart echo \"Hello with Kokoro (local)\"\n\n# Use different ASR providers\ntalkito --asr-provider gcloud --asr-language en-US claude\nAZURE_SPEECH_KEY=... AZURE_SPEECH_REGION=eastus talkito --asr-provider azure claude\nWHISPER_MODEL=small WHISPER_COMPUTE_TYPE=int8 talkito --asr-provider local_whisper claude\ntalkito --asr-language es-ES echo \"Hola mundo\"  # Spanish recognition\n\n# Enable remote communication (configure via environment variables)\ntalkito --slack-channel '#alerts' python manage.py runserver\ntalkito --whatsapp-recipients +1234567890 long-running-command\ntalkito --sms-recipients +1234567890,+0987654321 server-monitor.sh\n```\n\n### Using tts.py (Standalone TTS)\n\nThe TTS module can be used independently for text-to-speech operations:\n\n```python\n#!/usr/bin/env python3\nimport tts\n\n# Initialize TTS\nengine = tts.detect_tts_engine()\ntts.start_tts_worker(engine)\n\n# Speak text\ntts.queue_for_speech(\"Hello from the TTS module!\")\n\n# Wait and cleanup\nimport time\ntime.sleep(2)\ntts.shutdown_tts()\n```\n\n### Using asr.py (Standalone ASR)\n\nThe ASR module can be used independently for speech recognition:\n\n```python\n#!/usr/bin/env python3\nimport asr\n\n# Define callback for recognized text\ndef handle_text(text):\n    print(f\"You said: {text}\")\n\n# Start dictation\nasr.start_dictation(handle_text)\n\n# Keep running (press Ctrl+C to stop)\ntry:\n    import time\n    while True:\n        time.sleep(1)\nexcept KeyboardInterrupt:\n    asr.stop_dictation()\n```\n\n## Provider Configuration\n\n### Text-to-Speech (TTS) Providers\n\n#### System TTS (Default)\n- **macOS**: Uses built-in `say` command\n- **Linux**: Uses `espeak`, `festival`, or `flite` (install via package manager)\n- **Setup**: No API key needed\n\n#### OpenAI TTS\n- **Get API Key**: https://platform.openai.com/api-keys\n- **Voices**: alloy, echo, fable, onyx, nova, shimmer\n- **Usage**: `--tts-provider openai --tts-voice nova`\n\n#### AWS Polly\n- **Get Credentials**: https://aws.amazon.com/polly/getting-started/\n- **Setup**: Set `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`\n- **Voices**: Joanna, Matthew, Amy, Brian, and more\n- **Usage**: `--tts-provider polly --tts-voice Matthew`\n\n#### Azure Speech Services\n- **Get API Key**: https://azure.microsoft.com/en-us/services/cognitive-services/speech-services/\n- **Setup**: Set `AZURE_SPEECH_KEY` and `AZURE_REGION`\n- **Voices**: en-US-JennyNeural, en-US-AriaNeural, and many more\n- **Usage**: `--tts-provider azure --tts-voice en-US-JennyNeural`\n\n#### Google Cloud Text-to-Speech\n- **Get Credentials**: https://cloud.google.com/text-to-speech/docs/quickstart\n- **Setup**: Set `GOOGLE_APPLICATION_CREDENTIALS` to service account JSON path\n- **Voices**: en-US-Journey-F, en-US-News-N, and more\n- **Usage**: `--tts-provider gcloud --tts-voice en-US-Journey-F`\n\n#### ElevenLabs\n- **Get API Key**: https://elevenlabs.io/\n- **Setup**: Set `ELEVENLABS_API_KEY`\n- **Voices**: Various voice IDs available\n- **Usage**: Configure in code or .env file\n\n#### Deepgram\n- **Get API Key**: https://deepgram.com/\n- **Setup**: Set `DEEPGRAM_API_KEY`\n- **Voices**: aura-asteria-en, aura-luna-en, aura-stella-en, and more\n- **Usage**: `--tts-provider deepgram --tts-voice aura-asteria-en`\n\n#### KittenTTS (Local / Offline)\n- **Install**: `pip install https://github.com/KittenML/KittenTTS/releases/download/0.1/kittentts-0.1.0-py3-none-any.whl soundfile phonemizer`\n- **Setup**: No API key required. First run prompts to download the selected model (default `kitten-tts-nano-0.2`) into the Hugging Face cache. Configure `KITTENTTS_MODEL` and `KITTENTTS_VOICE` to pick different quality/voice options.\n- **Best for**: Ultra-lightweight CPU-only voices that stay on-device.\n- **Usage**: `KITTENTTS_MODEL=kitten-tts-nano-0.2 talkito --tts-provider kittentts --tts-voice expr-voice-3-f`\n\n#### Kokoro (Local / Offline)\n- **Install**: `pip install 'kokoro\u003e=0.9.4' soundfile phonemizer`\n- **Setup**: No API key required. TalkiTo will download Kokoro weights the first time you run it (set `KOKORO_LANGUAGE`, `KOKORO_VOICE`, `KOKORO_SPEED` to control defaults).\n- **Best for**: High-quality multilingual voices without sending audio to a cloud provider.\n- **Usage**: `talkito --tts-provider kokoro --tts-voice af_heart --tts-language en-US`\n\n### Automatic Speech Recognition (ASR) Providers\n\n#### Google Speech Recognition (Default)\n- **Free**: No API key required\n- **Limitations**: Best for short utterances, requires internet\n- **Usage**: Default when no provider specified\n\n#### Google Cloud Speech-to-Text\n- **Get Credentials**: https://cloud.google.com/speech-to-text/docs/quickstart\n- **Setup**: Set `GOOGLE_APPLICATION_CREDENTIALS`\n- **Features**: Better accuracy, streaming support\n- **Usage**: `--asr-provider gcloud`\n\n#### AssemblyAI\n- **Get API Key**: https://www.assemblyai.com/\n- **Setup**: Set `ASSEMBLYAI_API_KEY`\n- **Features**: Real-time transcription, speaker detection\n- **Usage**: Configure in code or .env file\n\n#### Deepgram\n- **Get API Key**: https://deepgram.com/\n- **Setup**: Set `DEEPGRAM_API_KEY`\n- **Features**: Fast, accurate real-time transcription\n- **Usage**: Configure in code or .env file\n\n#### Houndify\n- **Get Credentials**: https://www.houndify.com/\n- **Setup**: Set `HOUNDIFY_CLIENT_ID` and `HOUNDIFY_CLIENT_KEY`\n- **Features**: Natural language understanding\n- **Usage**: `--asr-provider houndify`\n\n#### AWS Transcribe\n- **Get Credentials**: https://aws.amazon.com/transcribe/\n- **Setup**: Set AWS credentials\n- **Features**: Streaming transcription\n- **Usage**: `--asr-provider aws --aws-region us-west-2`\n\n#### Azure Speech Services\n- **Get API Key**: https://azure.microsoft.com/en-us/services/cognitive-services/speech-services/\n- **Setup**: Set `AZURE_SPEECH_KEY` and `AZURE_SPEECH_REGION`, then `pip install azure-cognitiveservices-speech`\n- **Features**: Low-latency streaming dictation with automatic punctuation\n- **Usage**: `AZURE_SPEECH_KEY=... AZURE_SPEECH_REGION=eastus talkito --asr-provider azure`\n\n#### Local Whisper (On-Device)\n- **Install**: `pip install faster-whisper` (default) or `WHISPER_COREML=1 pip install pywhispercpp` for Apple Silicon/CoreML acceleration\n- **Setup**: No API key required. Configure `WHISPER_MODEL` (e.g., `small`, `medium`), `WHISPER_DEVICE` (`cpu`, `cuda`, or `mps`), and `WHISPER_COMPUTE_TYPE` (`int8`, `int8_float16`, etc.). Models are cached locally and TalkiTo will prompt before downloading unless `TALKITO_AUTO_APPROVE_DOWNLOADS=1`.\n- **Usage**: `WHISPER_MODEL=small WHISPER_COMPUTE_TYPE=int8 talkito --asr-provider local_whisper`\n\n### Communication Providers (Remote Interaction)\n\n#### Twilio SMS\n- **Get Account**: https://www.twilio.com/try-twilio\n- **Setup**: Set `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`, `TWILIO_PHONE_NUMBER` you will need to a verified number to avoid being filtered.\n- **Features**: Send command output via SMS, receive input via SMS\n- **Usage**: `--sms-recipients +1234567890`\n\n#### Twilio WhatsApp\n- **Get Started**: https://www.twilio.com/whatsapp\n- **Setup Instructions**: Run `talkito --setup-whatsapp` for detailed setup guide\n- **Required Environment Variables**:\n  - `TWILIO_ACCOUNT_SID`: Your Twilio account SID\n  - `TWILIO_AUTH_TOKEN`: Your Twilio auth token\n  - `TWILIO_WHATSAPP_NUMBER`: Twilio's WhatsApp number (usually +14155238886)\n  - `WHATSAPP_RECIPIENTS`: Your WhatsApp number\n  - `ZROK_RESERVED_TOKEN`: Your zrok reserved share token\n- **Quick Setup**:\n  - Join Twilio WhatsApp Sandbox at https://www.twilio.com/console/sms/whatsapp/sandbox\n  - Send the join code via WhatsApp to +1 415 523 8886\n  - Install zrok and create a reserved share: `zrok reserve public http://localhost:8080`\n  - Set webhook URL in Twilio Console to: `https://YOUR-TOKEN.share.zrok.io/whatsapp`\n- **Usage**: `--whatsapp-recipients +1234567890`\n\n#### Slack\n- **Create App**: https://api.slack.com/apps\n- **Setup**: Set `SLACK_BOT_TOKEN` and optionally `SLACK_APP_TOKEN`\n- **Features**: Send output to channels, receive commands\n- **Usage**: `--slack-channel '#channel-name'`\n\n### Environment Configuration\n\nTalkito supports two environment files:\n- `.env` - Primary configuration (takes precedence)\n- `.talkito.env` - Secondary configuration (won't override `.env`)\n\nCopy `.env.example` to `.env` and add your API keys:\n\n```bash\ncp .env.example .env\n# Edit .env with your API keys\n```\n\nFor WhatsApp setup with zrok tunneling:\n- `ZROK_RESERVED_TOKEN`: Your zrok reserved share token for webhook tunneling\n\n## Requirements\n\n- Python 3.10+\n- macOS (with `say` command) or Linux (with `espeak`, `festival`, or `flite`)\n- Optional: `SpeechRecognition` and `pyaudio` for ASR support\n- Optional: Provider-specific Python packages (installed as needed)\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for details on our code of conduct and the process for submitting pull requests.\n\n## License\n\nThis project is licensed under the GNU Affero General Public License v3.0 or later - see the [LICENSE](LICENSE) file for details.\n\nCopyright (C) 2025 Robert Macrae\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobdmac%2Ftalkito","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobdmac%2Ftalkito","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobdmac%2Ftalkito/lists"}