GitHub Source at dking484/asterfi

Business phones, on your own server.

AsterFi gives Asterisk, the proven open-source PBX, a clean modern web interface. Set up extensions, desk phones, call flows, queues and voicemail from your browser, on hardware you control.

Self-hosted No per-seat licenses Built on Asterisk

BUILT ON PROVEN OPEN-SOURCE PARTS

Asterisk PostgreSQL Node.js React nginx
Features

Everything a small office phone system needs.

Asterisk handles the calls. AsterFi handles the setup, so you rarely need to open a config file.

Visual call flows

Plan out what happens to a call on a canvas: greetings, business hours, menus, ring groups, voicemail and forwarding. AsterFi writes the dialplan for you.

Ring groups & queues

Ring a team together, or line callers up with hold messages. A waiting caller can press 1 to leave a message or 2 to ask for a callback.

Voicemail that finds you

New voicemail and missed calls arrive by email with a Listen button. You can also play messages from the web inbox.

Desk phones & a web phone

Find phones on the network and adopt them, connect any SIP device, or make and take calls in the browser.

Type your greetings

Write a prompt, pick a voice and hear it right away. Text-to-speech runs on your own server, so no cloud service is involved.

Call history with the full path

See every call live, then look back at each step it took: which phones rang, who answered and where it ended.

Webhooks & REST API

Send signed call, voicemail and phone events to your CRM in real time. A read-only API serves users, call history and voicemail.

Trunks & outbound routes

Connect your SIP carrier, watch its registration status, and set dial patterns, digit rules and outbound caller ID for each route.

Users, presence & contacts

Admins and users each see their own view. Presence, do-not-disturb and forwarding are built in, and a shared contact list syncs to desk phones.

Call flows

Draw how your calls get answered.

Each phone number points to a flow. Connect blocks on the canvas, save, and the change is live. You never have to touch the dialplan.

  • Business hours send callers down a different path when you're open, closed or on a holiday.
  • Menus map each key to a person, a team or another flow.
  • Tag adds a label like “Sales:” to the caller ID, so whoever answers knows the line. Notify sends a webhook to another app.
GreetingMain menuBusiness hoursRing userRing groupVoicemailForwardDirectoryAnnounceNotifyTagOther flowHang up
Phones

Any phone on the desk, or none at all.

Assign a phone to a user and it picks up that user's extension. Each person can use one phone or several.

UniFi Talk desk phones

AsterFi scans your network for UniFi Talk phones, adopts them and sends each one its settings. A phone registers to Asterisk like any other extension.

Any SIP phone

Connect a desk phone, softphone or door intercom from any brand that speaks standard SIP. Desk phones can load the shared contact list as a remote phonebook.

The web phone

Turn on the built-in web phone and the AsterFi tab becomes a softphone, with a dial pad, hold, mute and incoming-call alerts. There's nothing to install.

Developers

Bring call data into your own apps.

AsterFi POSTs events to your URL as calls happen. Every delivery is signed with HMAC-SHA256, and failed deliveries are retried. Ringing, answered, queued, missed, ended, new voicemail and phone status are all available.

  • Screen pops: look up the caller in your CRM when call.inbound arrives.
  • Safe retries: a failed delivery is retried 5 times over about 3 hours, and you can resend it from the admin screen.
  • Read-only REST API with bearer keys:
GET/api/v1/users
GET/api/v1/calls?number=…
GET/api/v1/calls/active
GET/api/v1/voicemail

Read the integration guide

POST /hooks/asterfi
X-AsterFi-Event: call.answered
X-AsterFi-Signature: t=1761676543,v1=5f2a…c9

{
  "id": "4812",
  "event": "call.answered",
  "timestamp": "2026-10-28T18:35:43.477Z",
  "data": {
    "id": "1761676521.42",
    "direction": "inbound",
    "from": "8605550142",
    "to": "8605550100",
    "answeredBy": "104",
    "state": "talking"
  }
}
Self-hosted

Your phones, your server, your data.

AsterFi runs on your own Linux server, so your call records, recordings and voicemail stay there.

0

Cloud services needed

Calls, prompts and voicemail are all handled on your server. The only outside connection is your SIP carrier.

Local

Text-to-speech

Greetings are generated by a speech model that runs on the server's CPU. No GPU and no API key needed.

14

Nightly backups kept

Each night, the database, Asterisk config, prompts and voicemail are saved to one archive.

TLS

Encrypted from day one

HTTPS works from the first install with a self-signed certificate. Replace it with your own whenever you like.

Get started

From bare server to dial tone.

The repository includes setup and deploy scripts that build the whole stack.

Prepare a server

Start with a Debian or Ubuntu machine on your network that has Asterisk, PostgreSQL, Node.js and nginx installed.

Run setup once

deploy/setup.sh creates the database, secrets, Asterisk config, TLS certificate, speech engine and services. It's safe to run again.

Deploy & sign in

Build the web app and run deploy/deploy.sh. Then open the server in your browser and create your admin account.

$ git clone https://github.com/dking484/asterfi.git
FAQ

Questions, answered.

What is AsterFi, exactly?

AsterFi is a management service and web app that runs alongside Asterisk. It keeps your users, phones, numbers and call flows in a database, generates the Asterisk configuration from them, and shows live call activity in the browser.

Do I need Ubiquiti or UniFi hardware?

No. Any standard SIP phone works, and so does the built-in web phone. If you have UniFi Talk desk phones, AsterFi can adopt and set them up for you.

Which phone carriers work with it?

Any SIP trunk provider. Add the trunk under Trunks & Routes, using a registration or IP-based trust, then point your numbers at call flows.

What does it cost?

The source code is on GitHub and runs on your own hardware, so there are no per-seat fees. Your SIP carrier still charges for phone numbers and minutes.

Can it connect to my CRM or helpdesk?

Yes. Use webhooks for real-time events like screen pops and call logging, and the read-only REST API to look up call history and voicemail. The integration guide walks through both.

Where do I report a bug or ask for a feature?

Open an issue on GitHub.

Run the phone system you own.

Clone the repository, read the code and set it up on your own server today.