Minds in Loop

An AI receptionist on a Raspberry Pi

October 2026

My phone line is now answered by a Grok voice agent. It takes a message, reads it back, says goodbye and hangs up — and a minute later the message and full transcript are in my inbox. The only hardware is a Raspberry Pi 4.

How a call flows

Callerdials my number
↓
Telnyxowns the number and forwards the call over SIP
↓
xAI Voice Agentanswers, listens and speaks in real time
↓ signed webhook
Cloudflare Tunnel → Raspberry Pitells Grok who it is and what tools it has
↓ when the call ends
Emailmessage, caller ID and transcript

The audio never touches the Pi. Telnyx and xAI talk to each other directly; the Pi only receives a short "incoming call" notification, opens a WebSocket to steer that call, and sends the email afterwards. That's why a Pi 4 is more than enough.

The pieces

PartRoleCost
TelnyxPhone number and SIP trunk~$1/mo + fractions of a cent per minute
xAI Voice Agent APIThe voice: speech in, Grok, speech outPer minute of conversation
Raspberry Pi 4A few hundred lines of PythonA few watts
Cloudflare TunnelPublic HTTPS address with no open router portsFree
DomainA stable hostname for the webhook (and this site)~$10/yr

Giving the agent hands

The agent gets two tools. take_message saves the caller's name, callback number and message — but only after reading it back and hearing "yes". end_call is used after saying goodbye; the Pi waits for the goodbye to finish playing, then asks xAI to hang up. Everything else is plain-English instructions in a text file I can edit without restarting anything.

Keeping it locked down

Things that tripped me up

← All projects