← All articles

Phone: An AI Receptionist on Your Own Number

Part 17 of the VIMS Blog Network. The phone still matters. Answering it shouldn't need a call center or a SaaS middleman.


The Receptionist Problem

Missed calls are missed customers. The usual fixes are a person, an answering service, or an AI receptionist product that sits between your number and your callers, sees every call, bills you per minute on top of the carrier, and keeps the transcripts on its servers.

VIMS Phone is that receptionist without the middleman: it answers your number from your own desktop, with your own models, on your own carrier account.

Your Number, Your Carrier

The receptionist answers a number on your own carrier account, and the carrier bills you directly. Phone works with three carriers today:

CarrierWhat you connect
TwilioAccount SID and Auth Token, or an API key
SignalWireSpace, project ID and API token, plus an optional Signing Key
TelnyxAPI key, plus an optional public key

Phone → Number shows your carrier, the account's numbers (Use one) and a search to buy a new one. Buying always asks you to confirm the monthly cost first. On Telnyx, VIMS creates a call-handling application named "VIMS Phone" on your account and assigns your number to it.

No Server of Ours in the Path

When answering is on, the phone service listens on its own local port (never VIMS's main API) and a tunnel gives it a public address. Each time that address changes, VIMS points your number's webhooks at it. Calls go from your carrier to your desktop, and nowhere else.

Every webhook carries a secret in its URL, and when you give the signing key, the carrier's signature is checked too: Twilio's account Auth Token, SignalWire's Signing Key, Telnyx's public key. The call's audio stream only opens with a one-time token from that call's own webhook.

When the desktop is off or the tunnel is down, your number's fallback answers: on Twilio, voicemail emailed to you; on SignalWire and Telnyx, a spoken "please try again later". (Blog 03: Security First)

Who Answers

Phone → Agent sets the receptionist's name, greeting and instructions, and which of your agent instances answers. With OpenAI as that instance's provider, calls run on OpenAI Realtime, speech to speech. With anything else, local models included, VIMS runs speech-to-text, your model and text-to-speech on your machine. Callers can interrupt mid-sentence and the receptionist stops to listen. (Blog 07: Voice and Meeting Agents, Blog 01: Local-First AI)

Every Call Becomes Memory

Phone → Calls lists every call, newest first. Open one for its transcript, live while the call is happening, with a Hang up button.

Each caller becomes a person in your knowledge base, matched by phone number, and the call is kept with them. The next time they call, or before you call them back, their history is there: what they asked, what was promised, what is still open. The same people show up in your CRM and your meeting briefs. (Blog 15: CRM, Blog 04: Data and Knowledge)

For Agents and Apps

External agents can read the receptionist over MCP (vims_receptionist_status, vims_receptionist_calls, including a call's transcript), and apps through the SDK (client.receptionist). An agent can tell you who called today and what they wanted, without anyone opening the app. (Blog 05: MCP Connectors, Blog 12: SDK, Coder, Terminal)


Previous: CRM: Signed Records, Synced Peer to Peer Back to: VIMS: The Convergence Point