Full Byte Developer.
LOCALCALL

Set up a local AI phone agent on Apple Silicon

Run ai-phone on an Apple Silicon Mac and try a local SIP call before adding a paid carrier.

Published · 3 sources

ai-phone runs speech recognition, a language model and speech synthesis on an Apple Silicon Mac, per its README [1]. Start with a local SIP call. Its README says live-carrier acceptance checks remain pending [1].

The repository requires macOS on Apple Silicon, Git, Homebrew and uv. It recommends 16 GB RAM for the default model, with a smaller option for 8 GB systems. Model downloads need several GB of disk space [1].

Clone and install ai-phone

The installer sets up Python dependencies and the native SIP library, per the README [1]. SIP is the protocol used to connect the call.

bash
git clone https://github.com/oxnw/ai-phone.git
cd ai-phone
./scripts/install.sh

Choose a local model and SIP address

The setup wizard chooses call directions, model, line and voice [1]. For the local call, enable incoming calls, select "A SIP address" and keep the name agent, as the usage guide describes [2]. Choose the local model option to keep the conversation processing on the Mac [2].

bash
uv run ai-phone setup

You should see prompts for those choices and model downloads [1]. The usage guide says setup saves configuration and secrets under ~/.ai-phone/ [2].

Start the phone agent

The usage guide requires the daemon to stay running for incoming calls. Setup does not install a background service [2].

bash
uv run ai-phone run

You should see the daemon state where the call's text will go when it starts, per the usage guide [2].

Call it from another terminal

Keep the daemon running. In a second terminal, use the repository's local-call command [1][2].

bash
pjsua --local-port 5070 sip:agent@127.0.0.1

The guide describes this as a local call without a carrier. If you chose a different SIP name, substitute that name for agent [2].

You can now evaluate a local call before connecting a number. Telephone calls require a SIP trunk or carrier account, with charges. Audio travels over SIP/RTP. Choosing a remote language model sends conversation text to that provider [2].

The published Phonon measurements cover local loopback calls with no carrier registration or external model [3]. Treat them as the repository's local results when deciding what to try next.

Keep this guide

By Full Byte Developer

Original posts: TikTok photos, Instagram post

Filed under Local AI, AI agents

Sources

Next in this stack