DeskLabs-OpenSource/DeskVoice
Productivity & UtilitiesSelf-hosted AI voice PBX that answers SIP calls, runs tools, escalates to humans and follows up after hangup.
What it does
DeskVoice is a self-hosted phone system in which an AI agent handles the call. The agent greets the caller, speaks, runs tools mid-conversation, asks a human for approval when needed, transfers the call, and leaves follow-up tasks running after the call ends. It targets teams that want an AI receptionist or small call center on their own VPS, over a SIP trunk from the carrier of their choice.
The call path uses Asterisk as the telephony edge, which hands control and audio (ARI and AudioSocket) to a voice process talking to Gemini Live, OpenAI Realtime, or a simulated engine. Every event lands in Postgres, and a separate routines process keeps working after hangup. The web panel is Next.js, published through Caddy (architecture).
Install
Requirements: an Ubuntu 22.04+ VPS (Debian 12+, AlmaLinux 9+, Rocky Linux 9+ also accepted, with uneven real-world proof), optionally a domain pointing at the VPS, a SIP trunk with a number, and an AI voice key from Gemini or OpenAI that you pay directly.
On the VPS, one command downloads the project into ~/DeskVoice and starts the installer (install script):
curl -fsSL https://raw.githubusercontent.com/DeskLabs-OpenSource/DeskVoice/main/install/get.sh | bash
To read before running, use the equivalent manual path (install section):
git clone https://github.com/DeskLabs-OpenSource/DeskVoice.git && cd DeskVoice && bash install/install.sh
test
The installer checks the machine and network, asks a few questions (domain, company name, your name, email, password), generates secrets, starts the services, creates the first user, and prints the panel address. SIP trunk, number, AI key and agent are then configured in the UI.
To see a full simulated call without a key or trunk, on your own machine with Docker available ([simulated demo](https://github.com/DeskLabs-OpenSource/DeskVoice/blob/main/README.md?plain=1#L111-L114)):
```bash
test
git clone https://github.com/DeskLabs-OpenSource/DeskVoice.git && cd DeskVoice pnpm install && pnpm demo
test
The step-by-step guide from zero to the first call is in the [first-call guide](https://github.com/DeskLabs-OpenSource/DeskVoice/blob/main/docs/guides/primeira-ligacao.md).
## Maturity and constraints
The README separates what is proven in simulation, what ran on a real VPS, and what is still waiting for a real carrier call ([capability table](https://github.com/DeskLabs-OpenSource/DeskVoice/blob/main/README.md?plain=1#L118-L170)). Installation, update from the panel, backup, restore and automatic rollback of a failed update ran on a real VPS. The OpenAI Realtime engine was exercised in a real installation via the browser voice screen. Answering an inbound call over a carrier SIP trunk, transferring to a person, HTTPS with a domain, Gemini Live, webhooks and outbound calls still lack proof with a real carrier.
The installation was validated on an 8 GB / 4 vCPU VPS, with about 380 MiB memory and 2.7 GB disk for DeskVoice at rest in 0.3.0 without WhatsApp; the minimum size was not measured. Published images are x86_64 only; on ARM you build locally with `--build`.
WhatsApp integration relies on WAHA, an unofficial WhatsApp client installed from the panel and not shipped with the stack; it adds roughly 323 MiB memory and 3.2 GB disk. Without a domain there is no HTTPS and the panel is reachable only via SSH tunnel.
The software is MIT licensed and free, with no paid tier. You pay the VPS, the telephony, and AI usage. Outbound calling is off by default and, once enabled, enforces a daily call cap per line, a do-not-call list, time windows, attempt limits and a recording notice, reflecting Brazilian Anatel rules on mass short calls ([Brazil compliance guide](https://github.com/DeskLabs-OpenSource/DeskVoice/blob/main/docs/guides/conformidade-brasil.md)). Each agent has a per-call cost cap and the panel shows measured cost per call.
DeskVoice sends no telemetry. The README lists all outbound contacts, including GitHub release checks from the panel and tag fetches by the update agent ([outbound contacts](https://github.com/DeskLabs-OpenSource/DeskVoice/blob/main/README.md?plain=1#L250-L284)).
## HotRepo's take
The project appeared on the HotRepo new-project list for TypeScript on 2026-11-14, gaining 2 stars in a one-hour window, with no recorded all-language GitHub daily rank. The public interest so far rests on a concretely scoped self-hosted telephony system with an unusually explicit proof ledger: the README states which capabilities ran on a real VPS and which are only simulated. That honesty is the main signal here; the lack of a real carrier inbound call and of HTTPS-with-domain proof are the gaps to watch before adopting it for production.
Written by AI from the project's README, updated . The project's own docs are the source of truth.