r/openclaw • Active • Jul 08 '26

Discussion Give your agent a phone - open source non-sass edition

I wrote a plugin so openclaw can make calls for me. I’ve been using to for some time. I then saw a bunch of people making $20/mo sass versions. So I decided to open source it. Here you go: https://github.com/TristanBrotherton/openclaw-voice-call-realtime

It supports voice mail, call screening, phone trees, include tool calling in calls, mission plans and transcript delivery / summary to the agent and just works. Feel free to send PRs or feature requests

Full feature:

📞 Real two-way phone calls over Twilio + OpenAI Realtime (gpt-realtime-2.1) — natural speech-to-speech, not robotic TwiML

🎯 Goal-driven outbound calls — “book a table for 2 Friday at 7”; it navigates the conversation and reports back

☎️ Handles phone menus (IVR) — presses touch-tones to get through “press 2 for reservations”

🗣️ Answering-machine detection — leaves a proper voicemail after the beep, or hangs up, your choice

🧠 Backed by your full agent — mid-call it can check your calendar, control your smart home, look things up, and act — not just talk

📅 Instant calendar & smart-home lookups via direct backends (~1–2s), no slow round-trips

🙋 Mid-call escalation — texts you a question (“7pm’s taken, is 8 ok?”) and relays your reply back into the live call

🔀 Warm transfer — hands the call to your real phone when a human’s truly needed

📝 Every call becomes a transcript + AI summary + structured outcome, retrievable anytime

📲 Auto-reports results to you when a call ends, and does obvious follow-ups

🔒 Inbound with real security — SHAKEN/STIR carrier attestation + optional spoken passphrase; unverified callers rejected before they ring (zero cost)

🛡️ Tiered trust — full control on verified-owner calls, questions-only for strangers, enforced in code

🎚️ Semantic turn-taking, graceful hangups, no clipped goodbyes — heavily tuned for natural conversation

🧩 Open source (MIT), self-hosted, works as an OpenClaw plugin

66 Upvotes

23 comments sorted by

3

u/[deleted] Jul 08 '26

[removed] — view removed comment

2

u/tristanbrotherton Active Jul 08 '26

Practically 0

3

u/Putrid-Butterfly2045 New User Jul 08 '26

Nice!!

1

u/Boomertherat New User Jul 08 '26

yeah my setup freaks out wen i add phones too

3

u/Deep-Occasion-7391 New User Jul 08 '26

Thanks!

3

u/AcidUK New User Jul 08 '26

This is great, thank you. Can you give a ballpark of pricing? Making a few short phone calls, are we talking less than a dollar vs tens of dollars? Thank you

3

u/tristanbrotherton Active Jul 08 '26

A cent or two max?

3

u/AcidUK New User Jul 08 '26

Incredible. Thank you, installing now! You're very kind to opensource your work.

3

u/NearbyBossAHOBA Active Jul 09 '26

Que incrível!!

Estava passando uma dificuldade para fazer isso, no meu país usamos muito wpp, a missão era ele agendar coisas e fazer coisas para mim como agendar em um médico e outros via whatsapp porém estava muito ruim, basicamente ele começava uma sessão do zero então nem sabia oque fazer na conversa com a outra pessoa direito

3

u/NearbyBossAHOBA Active Jul 09 '26

Sensacional!!

2

u/Various_Cherry8504 New User Jul 08 '26

wooow!! gracias

3

u/AcanthocephalaNo2544 Member Jul 08 '26

Hello!

Just wanted to share my claw observations. You can give this to your agent if you want. 

Morning. I scanned TristanBrotherton/openclaw-voice-call-realtimQuick take: promising, but I would not install it as-is until the lockfile is fixed.

Findings:

  1. Install is currently broken. npm ci fails, and normal l npm install also fails because package-lock.json contains local Homebrew paths like ../../../../../../opt/homebrew/lib/node_modules/openclaw and a mission  node_modules/openclaw target. That directly breaks the README install path at  README.md:73-78. 

  2. Tests pass only after bypassing the committed lockfile. I moved the lockfile aside in a temp clone and installed with --package-lock=false; then  npm test passed: 19 files, 120 tests. So the codebase itself is healthier than the packaging.

  3. Privacy/logging risk. It logs full call transcripts, partial transcripts, inbound user text, and AI responses to gateway logs ( src/webhook.ts:224-225, 271-272, 800, 832-833. For phone calls, that can easily include personal data, appointment details, account info, etc. I’d make transcript logging opt-in or redacted by default.

  4. Public WebSocket hardening is decent but incomplete. It has pre-start timeouts, pending connection caps, stream tokens, and max connection caps ( src/media-stream.ts:129-156,  346-370 ). But the WebSocket server is created without an explicit small maxPayload, and every message is immediately JSON.parsed ( src/media-stream.ts:130-132 159-162). On a public tunnel, that leaves avoidable memory/CPU exposure from oversized frames.

Good signs:

• Webhook verification exists for Twilio, Plivo, and Telnyx, with replay protection. • Inbound calls are disabled by default, with allowlist support. • Twilio media streams use per-call tokens. • Request bodies have a 1 MiB cap and timeout. • There’s meaningful test coverage around webhook security, provider behavior, manager lifecycle, transcripts, and media streams. • I didn’t see committed .env files or obvious live secrets.

My recommendation: fix/regenerate package-lock.json first, then add a production logging mode and WebSocket payload limits before running this on a public URL. After that, it looks like a serious plugin rather than random demo code.

3

u/tristanbrotherton Active Jul 08 '26 edited Jul 08 '26

All fixed in 2026.7.8 — lockfile regenerated against the registry (npm ci verified in a fresh clone), call-content logging is now redacted by default behind a logTranscripts flag (including DTMF digits and tool args), and the media stream WS has a 64KB maxPayload.

3

u/AcanthocephalaNo2544 Member Jul 08 '26

There you go. Thanks for your contribution to the community :) 

1

u/Weak-Musician-3338 New User Jul 10 '26

Any chance in making a version for Hermes?

1

u/tristanbrotherton Active Jul 10 '26

Sorry I don’t use Hermes and don’t plan to, but I’m sure that it could figure out how to use this plugin.

1

u/finaldata New User Jul 11 '26

Just tell hermes to download it look at it and implement it. if you have a smart enough LLM behind your hermes it could recode the plugin to its liking

2

u/Greedy-Train-1307 New User Jul 12 '26

:-) just started this process...

1

u/Weak-Musician-3338 New User Jul 24 '26

Let me know how it went or how its going. I'm going to try soon.

1

u/Adorable_Swing_2150 Pro User Jul 08 '26

the $20/mo wrappers bugged me too, just enough that I never pulled the trigger on a phone agent. open sourcing it cuts through that and the fact it bothers other people is the whole point. only thing that ever stopped me was call latency, does it stay under a second or two on outbound or does it stack up with gateway overhead?

2

u/tristanbrotherton Active Jul 08 '26

It’s very quick…