clara-phone
Use when setting up, deploying, or debugging Clara's Twilio-based channels: voice (phone), SMS, and WhatsApp.
Skill by DevChiniwala
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/devchiniwala-clara-phone
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/clara-phone
What's inside
- Skill name
clara-phone- Description
- Use when setting up, deploying, or debugging Clara's Twilio-based channels: voice (phone), SMS, and WhatsApp. All three share one Twilio number, one webhook server, and one set of credentials under channels.twilio. Covers config schema, cloudflared named-tunnel setup, Twilio Console webhook wiring, `clara phone` CLI, `place_call` / `send_message` MCP tools, the WhatsApp Sandbox 24h customer-service window, and the shared TwilioWebhookServer's dedup + rate-limit middleware. Trigger on mentions of "phone", "call", "voice", "sms", "whatsapp", "twilio", "realtime", "media stream", "cloudflared", or when deploying Clara to a new machine and a Twilio surface needs to come up.
- License
- MIT
- Instructions
- 288 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (1)
- SKILL.md
SKILL.md (first lines)
## Overview
Three Twilio-based channels share one phone number, one webhook server,
and one set of credentials:
- **Phone** (`src/channels/phone/`) — voice via Twilio Programmable
Voice + OpenAI Realtime. Inbound (caller dials) and outbound
(`place_call` MCP tool / `clara phone call` CLI).
- **SMS** (`src/channels/sms.ts`) — Twilio Messaging on the same number.
Inbound webhook → chat engine → REST reply. The reachability
fallback when data is unavailable but cellular works.
- **WhatsApp** (`src/channels/whatsapp.ts`) — Twilio WhatsApp Sandbox
by default; production WABA when policy permits. Enforces Meta's
24-hour customer-service window — outside it, free-form replies are
dropped (Twilio rejects without an approved template).
All three register routes on the shared `TwilioWebhookServer`
(`src/channels/twilio/server.ts`), which centralizes:
- `X-Twilio-Signature` HMAC-SHA1 validation
- `MessageSid` / `CallSid` deduplication (Twilio retries on 5xx/timeouts)
- Per-remote-number rate limiting (30/min default; owner exempt)
- `/healthz` and `/twilio/health` endpoints
Transcripts persist to the `messages` table with `channel='phone'`,
`'sms'`, or `'whatsapp'` and `room=<channel>-<callSid|E164>`.
## Configuration
Twilio creds + identity are shared across all three channels under
`channels.twilio`. Each channel has its own enable flag and channel-specific
config under `channels.{phone,sms,whatsapp}`.
```yaml
# ~/.heyclara/config.yaml
channels:
twilio:
sid: AC... # Account SID (or API Key SID SK…; Twilio resolves both)
secret: ... # Auth Token if sid is AC…, API Key Secret if SK…
auth_token: ... # Required when sid is SK… (signs webhooks). Omit if secret is the Auth Token.
owner_number: "+91..." # Highest-trust caller/messenger
allowlist: ["+12025550100"] # Extra allowed senders/callers (E.164)
public_base_url: https://clara.example.com # No trailing slash
port: 7079 # Local port the shared webhook server binds to
phone:
enabled: true
from_number: "+13025480697" # Twilio number for voice
openai_api_key: sk-proj-... # For the Realtime voice loop
realtime_model: gpt-realtime
voice: marin # marin | cedar | shimmer | coral | alloy | ash | …
sms:
enabled: true
from_number: "+13025480697" # Defaults to phone.from_number if omitted
whatsapp:
enabled: true
from_number: "+14155238886" # Twilio Sandbox shared number; replace once WABA is approved
```
Env overrides (use these if you'd rather keep secrets in `.env`):
```
TWILIO_SID, TWILIO_SECRET, TWILIO_AUTH_TOKEN
PRIMARY_PHONE_USER (owner), PHONE_ALLOWLIST (comma-separated)
PUBLIC_BASE_URL, PHONE_PORT
PHONE_FROM_NUMBER, OPENAI_API_KEY, PHONE_VOICE, PHONE_REALTIME_MODEL
SMS_FROM_NUMBER, WHATSAPP_FROM_NUMBER
```
**Backward compat:** the previous `channels.phone.{twilio_sid, twilio_secret,
twilio_auth_token, owner_number, allowlist, public_base_url, port}` shape
is still read as a fallback for one release cycle. Migrate when convenient.
`clara phone status` prints which fields are set across all three channels.
## Cloudflared named tunnel (production)
The ephemeral `trycloudflare.com` URL is fine for testing but dies on
restart. For a persistent deploy:
```bash
brew install cloudflared
cloudflared tunnel login # opens browser, writes cert.pem
cloudflared tunnel create clara-mac # creates the tunnel
cloudflared tunnel route dns clara-mac clara.example.com # CNAME on a Cloudflare-managed domain
```
Keep clara's tunnel config in clara's home as a single flat file:
`~/.heyclara/cloudflared-config.yaml`. The cloudflared-internal artifacts
(`cert.pem`, the per-tunnel credentials JSON written by `tunnel create`)
stay where cloudflared put them — those are cloudflared's territory, not
clara's.
```yaml
# ~/.heyclara/cloudflared-config.yaml
tunnel: clara-mac
credentials-file: /Users/<you>/.cloudflared/<tunnel-id>.json
ingress:
- hostname: clara.example.com
service: http://localhost:7079
- service: http_status:404
```
Install as a launchd service, pointing it at our config:
```bash
sudo cloudflared --config ~/.heyclara/cloudflared-config.yaml service install
```
If the generated plist at `/Library/LaunchDaemons/com.cloudflare.cloudflared.plist`
doesn't include the `--config` arg in `ProgramArguments`, edit it in, then:
```bash
sudo launchctl bootout system/com.cloudflare.cloudflared
sudo launchctl bootstrap system /Library/LaunchDaemons/com.cloudflare.cloudflared.plist
```From DevChiniwala/HeyClara, MIT.
More from DevChiniwala/HeyClara
- 0.502score
agent-skill-creator
DevChiniwala
Create or improve AI agent skills with proper progressive disclosure, description optimization, and router patterns.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
marketing
DevChiniwala
When the user wants help with marketing, growth, GTM, or getting users.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
image-generation
DevChiniwala
Generate images using OpenAI (default) or Gemini.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
email
DevChiniwala
Write any kind of email: cold outreach, prospecting, follow-up sequences, drip campaigns, lifecycle emails, nurture sequences, onboarding emails, welcome…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
google-workspace-cli
DevChiniwala
Use when user wants to interact with Google Workspace APIs (Gmail, Drive, Calendar, Sheets, Docs, Chat, Admin) from the command line using `gws`.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
asc-cli
DevChiniwala
Use this skill for App Store Connect CLI (`asc`) usage, including install/auth setup, command families, CI/CD integration, and troubleshooting for releases…
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
beads-tasks
DevChiniwala
Persistent task management via Beads CLI (bd).
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
code-review
DevChiniwala
Review pull requests, code diffs, and changes for correctness, design, security, performance, and style.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
gh-stamp
DevChiniwala
Stamp a GitHub PR with an LGTM approval comment.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
github-link-repo-explorer
DevChiniwala
Explore a GitHub repository from a link by cloning locally first, then inspecting files and history.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
modal-cli
DevChiniwala
Modal CLI for serverless GPU/cloud compute.
SkillCFreshness: C★ 1Claude Code +9 - 0.494score
codex
DevChiniwala
Consult OpenAI Codex CLI for a second opinion on plans, tests, code review, and more.
SkillCFreshness: C★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jul 8, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/DevChiniwala/HeyClara
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from DevChiniwala
- 0.502score
marketing
DevChiniwala
When the user wants help with marketing, growth, GTM, or getting users.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
email
DevChiniwala
Write any kind of email: cold outreach, prospecting, follow-up sequences, drip campaigns, lifecycle emails, nurture sequences, onboarding emails, welcome…
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
agent-skill-creator
DevChiniwala
Create or improve AI agent skills with proper progressive disclosure, description optimization, and router patterns.
SkillCFreshness: C★ 1Claude Code +9 - 0.502score
image-generation
DevChiniwala
Generate images using OpenAI (default) or Gemini.
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
beads-tasks
DevChiniwala
Persistent task management via Beads CLI (bd).
SkillCFreshness: C★ 1Claude Code +9 - 0.497score
code-review
DevChiniwala
Review pull requests, code diffs, and changes for correctness, design, security, performance, and style.
SkillCFreshness: C★ 1Claude Code +9
Cite this page
clara-phone skill. Agent Mart. https://agentmart.dev/skills/devchiniwala-clara-phone (last updated 2026-10-24)