NAME
SYNOPSIS
start.bat # Windows: double-click sudo bash aivoice-pbx-linux.sh # Linux, Raspberry Pi node aivoice-pbx.js [--ip addr] [--sip-port n] [--http-port n] [--data folder] [--no-browser]
DOWNLOAD
| file | for | size | sha-256 |
|---|---|---|---|
| aivoice-pbx-1.0-windows.zip | Windows 10 / 11 | 62K | da7046c559e013cf044bef44144858861018386a498b1aea7193b6f43df82806 |
| aivoice-pbx-linux.sh | Linux, Raspberry Pi | 204K | f7957a13f25aea2e6ffa544aeb0e1a2f492b8090d01a90aa68b97319c0faaace |
| aivoice-pbx.js | macOS, or any OS with Node.js | 194K | 894ae3bbcbb79275743a35b78626cb12707f26b4742eb003724ca72c10e96d31 |
All checksums in one file: SHA256SUMS.txt. Files are only ever served from aivoice.tech over HTTPS.
VERIFY
Before running anything you downloaded, check that its SHA-256 matches the table above. If it doesn't match, delete the file.
Windows (PowerShell)
Get-FileHash .\aivoice-pbx-1.0-windows.zip -Algorithm SHA256
Linux / macOS
sha256sum -c SHA256SUMS.txt --ignore-missing # macOS: shasum -a 256 -cINSTALL: WINDOWS 10 / 11
- Unzip
aivoice-pbx-1.0-windows.zipinto a folder of its own, for exampleDocuments\aiVoice PBX. - Double-click
start.bat. If Node.js is missing it installs it with winget, or opens nodejs.org for you. - Windows may warn that the file came from the internet. Check the SHA-256 first, then choose Run.
- When Windows Firewall asks, click Allow access so phones on your network can reach it.
- The chat opens at
http://localhost:8080. Keep the black window open; close it to stop the PBX.
INSTALL: LINUX / RASPBERRY PI
sudo bash aivoice-pbx-linux.sh # install or update, then start sudo bash aivoice-pbx-linux.sh --local-only # chat page only on that machine sudo bash aivoice-pbx-linux.sh uninstall # add --purge to delete data too
It installs Node.js and a voice for prompts if they're missing, opens the firewall ports, runs the PBX as the aivoice-pbx service under its own user, and prints the chat address, its admin password and the phone logins. Works on Debian, Ubuntu, Raspberry Pi OS, Fedora, RHEL, Arch, openSUSE and Alpine.
Read the script before you run it as root. It is plain text, and it doesn't fetch anything except Node.js (from nodejs.org, checked against its SHA-256) and packages from your own distribution.
INSTALL: MACOS
Install Node.js from nodejs.org, then in Terminal, in the folder with the file:
node aivoice-pbx.js
CONNECT A PHONE
Any SIP softphone works: MicroSIP on Windows, Zoiper or Linphone on a mobile, or a desk IP phone. Put it on the same network and add an account:
| SIP server / domain | your PC's address, shown in the chat (ask what is the ip) |
| Username | the extension number, e.g. 101 |
| Password | ask the chat: what is the password for 101 |
| Transport | UDP, port 5060 |
Extensions 101 (Alice) and 102 (Bob) exist from the start. Dial *43 for an echo test, or call the other extension.
CHAT
Type what you want. These are examples, not fixed commands; other wordings work too.
add extension 104 for Dave forward 102 to 103 when busy create ring group 600 called Sales with 101 102 103 make a menu on 500: press 1 for sales, 2 for bob create conference room 800 with pin 4321 record all calls set voicemail pin for 101 to 2468 add trunk host sip.provider.com user 12345 password secret show IP addresses undo help
CLAUDE MODE (OPTIONAL)
Optional, and off by default. Every feature works without it; the built-in English reader needs no internet and no account. With your own Anthropic API key, the PBX passes your chat messages to Claude, which turns them into PBX changes. Long, loosely worded or multi-step requests work, for example a whole office described in one message.
- Sign in at
console.anthropic.com, add billing, and create an API key under API Keys. - In the PBX chat, type
use AI with key sk-ant-…and paste your key. - Talk normally. Each reply comes from Claude; if Claude can't be reached, the built-in reader answers and says so.
use AI with key sk-ant-... # save the key and switch Claude mode on set the claude model to claude-opus-5-5 # default: claude-sonnet-5-5 turn off AI / turn on claude # switch without losing the key remove the AI key # delete the key from this computer
What Claude sees
- Your message, the conversation so far, and the PBX setup (extensions, groups, menus, forwarding) with phone passwords, PINs, the trunk password and your key replaced by "(set)".
- Answers that contain a password, like a new extension's login or "show the password for 101", pass through Claude. Turn AI off first if you'd rather they didn't.
- Requests go straight from your computer to api.anthropic.com over HTTPS. There is no aivoice.tech server in between.
What Claude can do
- Only the PBX's own changes: extensions, forwarding, groups, queues, menus, conference rooms, recording, the outside line, settings, undo. It cannot run programs, read files or reach anything else on your computer.
- Deleting voicemail or recordings still needs your confirmation in the chat.
Cost: Anthropic charges your account per request at its published API prices. A typical setup message is small. You can set a monthly spend limit in the Anthropic console.
FEATURE CODES
| dial | does |
|---|---|
*97 | your voicemail |
*98 | any voicemail box (asks for box and PIN) |
*43 | echo test |
*78 / *79 | do not disturb on / off |
*72number / *73 | forward all calls / cancel forwarding |
*65 | hear your extension number |
NETWORK
| port | used for | open to |
|---|---|---|
| 5060/udp | SIP: phones log in and set up calls | your network |
| 10000-10999/udp | RTP: the audio | your network |
| 8080/tcp | chat & switchboard page | this computer only, unless you allow it |
The PBX picks your PC's address by itself. To see or change it: show IP addresses, use IP 192.168.1.25, use the Wi-Fi address, use automatic IP. If a port is busy it moves to the next free one and tells you.
SECURITY
Don't forward port 5060 from your router to the internet.
Automated scanners find open phone systems within minutes and try to make paid calls through them. For phones outside your home or office, connect them over a VPN such as WireGuard or Tailscale.
- The chat page only opens on the computer running the PBX. To use it from another computer, say
allow remote access with password …; it then asks for that password. - Every phone logs in with its own random 10-character password (SIP digest).
- Nothing is sent anywhere unless you set up an outside line or Claude mode: no telemetry, no update checks, no accounts. Claude mode talks only to api.anthropic.com, with your passwords and PINs hidden.
- Settings, voicemail and recordings stay in the
pbx-datafolder next to the program. - Calls are not encrypted (no TLS or SRTP). That's fine on your own network; it is another reason not to expose it to the internet.
- Passwords, PINs and API keys typed into the chat are hidden in the activity log.
REQUIREMENTS & LIMITS
- Node.js 14 or newer. Windows 10/11 (64-bit), any current Linux, macOS. Not Windows 7/8.
- UDP only, G.711 audio (PCMU/PCMA). Every softphone supports it.
- Built for homes, small offices and labs: tens of calls at once, hundreds of extensions.
- Spoken prompts use the computer's own voice (Windows speech, macOS
say, espeak on Linux); otherwise beeps.