[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74841":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":16,"starSnapshotCount":16,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},74841,"call-me","ZeframLou\u002Fcall-me","ZeframLou","Minimal plugin that lets Claude Code call you on the phone.","",null,"TypeScript",2594,253,18,10,0,9,57.11,false,"main",[],"2026-06-12 04:01:16","# CallMe\n\n**Minimal plugin that lets Claude Code call you on the phone.**\n\nStart a task, walk away. Your phone\u002Fwatch rings when Claude is done, stuck, or needs a decision.\n\n\u003Cimg src=\".\u002Fcall-me-comic-min.png\" width=\"800\" alt=\"CallMe comic strip\">\n\n- **Minimal plugin** - Does one thing: call you on the phone. No crazy setups.\n- **Multi-turn conversations** - Talk through decisions naturally.\n- **Works anywhere** - Smartphone, smartwatch, or even landline!\n- **Tool-use composable** - Claude can e.g. do a web search while on a call with you.\n\n---\n\n## Quick Start\n\n### 1. Get Required Accounts\n\nYou'll need:\n- **Phone provider**: [Telnyx](https:\u002F\u002Ftelnyx.com) or [Twilio](https:\u002F\u002Ftwilio.com)\n- **OpenAI API key**: For speech-to-text (and text-to-speech if not using Kokoro)\n- **ngrok account**: Free at [ngrok.com](https:\u002F\u002Fngrok.com) (for webhook tunneling)\n\n### 2. Set Up Phone Provider\n\nChoose **one** of the following:\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Option A: Telnyx (Recommended - 50% cheaper)\u003C\u002Fb>\u003C\u002Fsummary>\n\n1. Create account at [portal.telnyx.com](https:\u002F\u002Fportal.telnyx.com) and verify your identity\n2. [Buy a phone number](https:\u002F\u002Fportal.telnyx.com\u002F#\u002Fnumbers\u002Fbuy-numbers) (~$1\u002Fmonth)\n3. [Create a Voice API application](https:\u002F\u002Fportal.telnyx.com\u002F#\u002Fcall-control\u002Fapplications):\n   - Set webhook URL to `https:\u002F\u002Fyour-ngrok-url\u002Ftwiml` and API version to v2\n     - You can see your ngrok URL on the ngrok dashboard\n   - Note your **Application ID** and **API Key**\n4. [Verify the phone number](https:\u002F\u002Fportal.telnyx.com\u002F#\u002Fnumbers\u002Fverified-numbers) you want to receive calls at\n5. (Optional but recommended) Get your **Public Key** from Account Settings > Keys & Credentials for webhook signature verification\n\n**Environment variables for Telnyx:**\n```bash\nCALLME_PHONE_PROVIDER=telnyx\nCALLME_PHONE_ACCOUNT_SID=\u003CApplication ID>\nCALLME_PHONE_AUTH_TOKEN=\u003CAPI Key>\nCALLME_TELNYX_PUBLIC_KEY=\u003CPublic Key>  # Optional: enables webhook security\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Option B: Twilio (Not recommended - need to buy $20 of credits just to start and more expensive overall)\u003C\u002Fb>\u003C\u002Fsummary>\n\n1. Create account at [twilio.com\u002Fconsole](https:\u002F\u002Fwww.twilio.com\u002Fconsole)\n2. Use the free number your account comes with or [buy a new phone number](https:\u002F\u002Fwww.twilio.com\u002Fconsole\u002Fphone-numbers\u002Fincoming) (~$1.15\u002Fmonth)\n3. Find your **Account SID** and **Auth Token** on the [Console Dashboard](https:\u002F\u002Fwww.twilio.com\u002Fconsole)\n\n**Environment variables for Twilio:**\n```bash\nCALLME_PHONE_PROVIDER=twilio\nCALLME_PHONE_ACCOUNT_SID=\u003CAccount SID>\nCALLME_PHONE_AUTH_TOKEN=\u003CAuth Token>\n```\n\n\u003C\u002Fdetails>\n\n### 3. Set Environment Variables\n\nAdd these to `~\u002F.claude\u002Fsettings.json` (recommended) or export them in your shell:\n\n```json\n{\n  \"env\": {\n    \"CALLME_PHONE_PROVIDER\": \"telnyx\",\n    \"CALLME_PHONE_ACCOUNT_SID\": \"your-connection-id-or-account-sid\",\n    \"CALLME_PHONE_AUTH_TOKEN\": \"your-api-key-or-auth-token\",\n    \"CALLME_PHONE_NUMBER\": \"+15551234567\",\n    \"CALLME_USER_PHONE_NUMBER\": \"+15559876543\",\n    \"CALLME_OPENAI_API_KEY\": \"sk-...\",\n    \"CALLME_NGROK_AUTHTOKEN\": \"your-ngrok-token\"\n  }\n}\n```\n\n#### Required Variables\n\n| Variable | Description |\n|----------|-------------|\n| `CALLME_PHONE_PROVIDER` | `telnyx` (default) or `twilio` |\n| `CALLME_PHONE_ACCOUNT_SID` | Telnyx Connection ID or Twilio Account SID |\n| `CALLME_PHONE_AUTH_TOKEN` | Telnyx API Key or Twilio Auth Token |\n| `CALLME_PHONE_NUMBER` | Phone number Claude calls from (E.164 format) |\n| `CALLME_USER_PHONE_NUMBER` | Your phone number to receive calls |\n| `CALLME_OPENAI_API_KEY` | OpenAI API key (required for STT; also for TTS unless using Kokoro) |\n| `CALLME_NGROK_AUTHTOKEN` | ngrok auth token for webhook tunneling |\n\n#### Optional Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `CALLME_TTS_PROVIDER` | `openai` | TTS engine: `openai` or `kokoro` (free, local — see [Kokoro TTS](#kokoro-tts-free-local)) |\n| `CALLME_TTS_VOICE` | `onyx` \u002F `af_bella` | Voice name (default depends on TTS provider) |\n| `CALLME_KOKORO_URL` | - | URL of existing Kokoro instance (e.g. `http:\u002F\u002Flocalhost:8880\u002Fv1`). If unset, auto-starts Docker container |\n| `CALLME_PORT` | `0` (auto) | Local HTTP server port (0 = OS picks a free port) |\n| `CALLME_NGROK_DOMAIN` | - | Custom ngrok domain (paid feature) |\n| `CALLME_TRANSCRIPT_TIMEOUT_MS` | `180000` | Timeout for user speech (3 minutes) |\n| `CALLME_STT_SILENCE_DURATION_MS` | `800` | Silence duration to detect end of speech |\n| `CALLME_TELNYX_PUBLIC_KEY` | - | Telnyx public key for webhook signature verification (recommended) |\n\n### 4. Install Plugin\n\n```bash\n\u002Fplugin marketplace add ZeframLou\u002Fcall-me\n\u002Fplugin install callme@callme\n```\n\nRestart Claude Code. Done!\n\n---\n\n## How It Works\n\n```\nClaude Code                    CallMe MCP Server (local)\n    │                                    │\n    │  \"I finished the feature...\"       │\n    ▼                                    ▼\nPlugin ────stdio──────────────────► MCP Server\n                                         │\n                                         ├─► ngrok tunnel\n                                         │\n                                         ▼\n                                   Phone Provider (Telnyx\u002FTwilio)\n                                         │\n                                         ▼\n                                   Your Phone rings\n                                   You speak\n                                   Text returns to Claude\n```\n\nThe MCP server runs locally and automatically creates an ngrok tunnel for phone provider webhooks.\n\n---\n\n## Tools\n\n### `initiate_call`\nStart a phone call.\n\n```typescript\nconst { callId, response } = await initiate_call({\n  message: \"Hey! I finished the auth system. What should I work on next?\"\n});\n```\n\n### `continue_call`\nContinue with follow-up questions.\n\n```typescript\nconst response = await continue_call({\n  call_id: callId,\n  message: \"Got it. Should I add rate limiting too?\"\n});\n```\n\n### `speak_to_user`\nSpeak to the user without waiting for a response. Useful for acknowledging requests before time-consuming operations.\n\n```typescript\nawait speak_to_user({\n  call_id: callId,\n  message: \"Let me search for that information. Give me a moment...\"\n});\n\u002F\u002F Continue with your long-running task\nconst results = await performSearch();\n\u002F\u002F Then continue the conversation\nconst response = await continue_call({\n  call_id: callId,\n  message: `I found ${results.length} results...`\n});\n```\n\n### `end_call`\nEnd the call.\n\n```typescript\nawait end_call({\n  call_id: callId,\n  message: \"Perfect, I'll get started. Talk soon!\"\n});\n```\n\n---\n\n## Costs\n\n| Service | Telnyx | Twilio |\n|---------|--------|--------|\n| Outbound calls | ~$0.007\u002Fmin | ~$0.014\u002Fmin |\n| Phone number | ~$1\u002Fmonth | ~$1.15\u002Fmonth |\n\nPlus API costs (same for both phone providers):\n- **Speech-to-text**: ~$0.006\u002Fmin (OpenAI gpt-4o-transcribe)\n- **Text-to-speech**: ~$0.02\u002Fmin (OpenAI TTS) or **free** with Kokoro\n\n**Total**: ~$0.03-0.04\u002Fminute with OpenAI TTS, ~$0.01-0.02\u002Fminute with Kokoro\n\n---\n\n## Kokoro TTS (Free, Local)\n\n[Kokoro](https:\u002F\u002Fgithub.com\u002Fremsky\u002FKokoro-FastAPI) is a free, local text-to-speech engine that runs via Docker. No TTS API key needed — just set one env var (note: `CALLME_OPENAI_API_KEY` is still required if you use the OpenAI API for speech-to-text):\n\n```bash\nCALLME_TTS_PROVIDER=kokoro\n```\n\n**Auto-setup:** If Docker is installed and port 8880 is free, the plugin automatically pulls and starts the Kokoro container on first use.\n\n**Existing instance:** If you already have Kokoro running (or want a custom port), point to it:\n\n```bash\nCALLME_TTS_PROVIDER=kokoro\nCALLME_KOKORO_URL=http:\u002F\u002Flocalhost:8880\u002Fv1\n```\n\n**Voices:** Kokoro has different voices than OpenAI. Query available voices at `http:\u002F\u002Flocalhost:8880\u002Fv1\u002Faudio\u002Fvoices`. Popular choices: `af_bella`, `af_sky`, `am_adam`. Set with `CALLME_TTS_VOICE`.\n\n**Requirements:** Docker (for auto-setup) or an existing Kokoro instance.\n\n---\n\n## Troubleshooting\n\n### Claude doesn't use the tool\n1. Check all required environment variables are set (ideally in `~\u002F.claude\u002Fsettings.json`)\n2. Restart Claude Code after installing the plugin\n3. Try explicitly: \"Call me to discuss the next steps when you're done.\"\n\n### Call doesn't connect\n1. Check the MCP server logs (stderr) with `claude --debug`\n2. Verify your phone provider credentials are correct\n3. Make sure ngrok can create a tunnel\n\n### Audio issues\n1. Ensure your phone number is verified with your provider\n2. Check that the webhook URL in your provider dashboard matches your ngrok URL\n\n### ngrok errors\n1. Verify your `CALLME_NGROK_AUTHTOKEN` is correct\n2. Check if you've hit ngrok's free tier limits\n3. Try a different port with `CALLME_PORT=3334`\n\n---\n\n## Development\n\n```bash\ncd server\nbun install\nbun run dev\n```\n\n---\n\n## License\n\nMIT\n","CallMe 是一个简洁的插件，可以让 Claude Code 通过电话与你联系。其核心功能是当任务完成、遇到问题或需要决策时自动拨打电话通知用户，支持多轮对话，并且可以在智能手机、智能手表甚至固定电话上使用。该插件采用 TypeScript 编写，易于集成且不需要复杂的设置。适用于那些希望在远离电脑的情况下也能及时响应 AI 助手需求的场景，比如远程工作或者长时间离开办公桌的情况。此外，它还允许 Claude 在通话过程中执行如网络搜索等操作，增强了交互性。",2,"2026-06-11 03:51:03","high_star"]