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 · 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:agent@127.0.0.1The 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
Sources
Next in this stack
Five tools for local AI work
Keyword STARTER
Write skill metadata an agent can recognize
Keyword SIMPLEFIRST
Choose an AI workflow before building an agent