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.
Originally posted · Published here · 3 sources · Resume reading
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.
git clone https://github.com/oxnw/ai-phone.git
cd ai-phone
./scripts/install.shChoose 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].
uv run ai-phone setupYou 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].
uv run ai-phone runYou 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].
pjsua --local-port 5070 sip:[email protected]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.