AI News HubLIVE
In-site rewrite4 min read

Show HN: Comcent CE – An open-source self-hosted Voice Infrastructure platform

Comcent CE is an open-source, self-hosted voice infrastructure platform that provides voice calls with browser-based dialers, phone numbers, queues, call recording, transcription, AI summaries, sentiment analysis, semantic search, and a real-time AI voice bot. It runs on a single Linux box with Docker, supports multi-tenant orgs, API keys, and webhooks. The project is licensed under AGPL-3.0.

SourceHacker News AIAuthor: pavanputhra

Uh oh!

There was an error while loading. Please reload this page.

Notifications You must be signed in to change notification settings

Fork 0

Star 2

BranchesTags

Open more actions menu

Folders and files

NameName

Last commit message

Last commit date

Latest commit

History

38 Commits

38 Commits

.github/workflows

.github/workflows

.husky

.husky

.vscode

.vscode

docker

docker

e2e

e2e

go

go

migrations

migrations

packages

packages

sbc

sbc

server

server

tools

tools

.dockerignore

.dockerignore

.editorconfig

.editorconfig

.env.e2e.ci

.env.e2e.ci

.env.e2e.example

.env.e2e.example

.env.example

.env.example

.gitignore

.gitignore

.npmrc

.npmrc

.prettierrc.json

.prettierrc.json

CONTRIBUTING.md

CONTRIBUTING.md

LICENSE

LICENSE

README.md

README.md

docker-compose-e2e-kamailio.yaml

docker-compose-e2e-kamailio.yaml

docker-compose-e2e-telephony.yaml

docker-compose-e2e-telephony.yaml

docker-compose-e2e.yaml

docker-compose-e2e.yaml

docker-compose-mix.yaml

docker-compose-mix.yaml

docker-compose.deploy.yaml

docker-compose.deploy.yaml

docker-compose.yaml

docker-compose.yaml

eslint.config.mjs

eslint.config.mjs

install.sh

install.sh

package-lock.json

package-lock.json

package.json

package.json

run_docker_compose.sh

run_docker_compose.sh

run_test_server.sh

run_test_server.sh

sample.json

sample.json

turbo.json

turbo.json

Repository files navigation

Run your own voice infrastructure on a single Linux box. Bring your own SIP trunk (Twilio, Telnyx, …), run one install script, and you get:

Voice calls with browser-based dialers for agents

Phone numbers, queues, call recording

Call transcription, AI summaries, sentiment, semantic search

A real-time AI voice bot

Multi-tenant orgs, API keys, webhooks

🎬 Watch the installation walkthrough — from blank server to first call:

Minimum requirements

A Linux host with a public IPv4 — Ubuntu 22.04+ / Debian 12+ (a $12/mo DigitalOcean droplet with 2 vCPU / 4 GB RAM is plenty)

A domain name you can point at it

A SIP trunk (Twilio, Telnyx, Bandwidth, …) if you want to make/receive real phone calls

Install

  1. Open the firewall

Port Protocol What

80, 443 TCP HTTP / HTTPS — app + Let's Encrypt cert issuance

5060 UDP + TCP SIP signaling

5063 TCP SIP-over-WSS (browser dialer)

19000–19100 UDP RTP media

  1. Point a domain at the host

Create a DNS A record (e.g. voice.yourdomain.com) pointing at the host's public IPv4. Verify with dig +short voice.yourdomain.com before continuing — the HTTPS certificate can't be issued until DNS resolves.

  1. Run the installer

SSH into the host and run:

curl -fsSL https://raw.githubusercontent.com/comcent-io/comcent-ce/main/install.sh | bash

Takes ~30 seconds: installs Docker if missing, generates secrets, and writes docker-compose.yaml + .env into ~/comcent-ce/. It does not start anything yet.

  1. Fill in .env

nano ~/comcent-ce/.env

Search for replaceMe and fill every one in:

Variable What

COMCENT_DOMAIN Your hostname from step 2

LETSENCRYPT_EMAIL Email for cert-renewal alerts

SOURCE_EMAIL Sender for invites / password resets

SMTP_URL smtp://user:pass@host:port — any provider works. Leave blank to disable email.

STORAGE_BUCKET_NAME, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY S3 (or S3-compatible) bucket for recordings & uploads

Optional (leave blank to disable): DEEPGRAM_API_KEY (transcription, voice bot), OPENAI_API_KEY (AI summaries, voice bot), Sentry DSNs.

  1. Start it and claim your instance

cd ~/comcent-ce docker compose up -d

First run pulls ≈800 MB of images and takes 5–10 minutes — that's normal. The HTTPS certificate is issued about a minute after start.

Once up, the server prints a one-time setup token for creating the first admin account. Grab it from the logs:

docker compose logs server | grep -A 10 "FIRST-RUN SETUP"

Then open https://voice.yourdomain.com/setup, enter the token along with your name, email, password, and organization details. Done — you're the super-admin.

(Lost the token? It's re-printed on every server start until claimed — docker compose restart server, then grep again.)

  1. Connect your SIP trunk

To make and receive real phone calls, open Sip Trunk in the sidebar, hit Create, and fill in:

Name — anything, e.g. twilio.

Provide Outbound Credentials — tick only if your trunk uses username/password auth instead of IP-based auth.

SIP Proxy Address — your provider's termination URI (e.g. mytrunk.pstn.twilio.com).

Inbound IPs to whitelist — comma-separated IPs/domains your provider sends calls from.

On the trunk provider's side:

Whitelist your host's public IP (/32) — e.g. Twilio's IP Access Control Lists on an Elastic SIP Trunk.

Point inbound calls (Origination) at sip:?transport=udp.

Route your phone number to the trunk, so calls to it reach this server. Every provider names this differently — on Twilio you assign the number to the Elastic SIP Trunk.

  1. Add the number and build its inbound flow

Routing the number to the trunk on the provider's side isn't enough — Comcent also needs to know the number and what to do with calls to it. Open Numbers in the sidebar, hit Add, and fill in:

Name — a friendly label.

Number (E.164) — the number you bought, e.g. +15551234567.

SIP Trunk — pick the trunk from step 6.

Allow Outbound if destination matches regex — optional; restrict which destinations can be dialed from this number (e.g. ^\+1[0-9]{10}$ for US only).

Then build the inbound flow in the graph editor below — it decides what happens when someone calls the number:

Add step and pick a node: Queue (route to agents in a queue — create one under Queues first), Dial / DialGroup (ring specific agents), Menu (IVR keypad menu), Play (play audio), WeekTime (business-hours branching), or VoiceBot (AI voice bot — needs the Deepgram/OpenAI keys from step 4).

Drag it into place.

Connect Start to the first node, and node outlets onward.

The simplest working flow is Start → Dial with To set to your own username (the SIP username you chose during setup). Hit Add to save, then call your number — it rings in your browser dialer.

Upgrade

cd ~/comcent-ce docker compose pull docker compose up -d

Migrations run automatically on every server start.

Troubleshooting

Sign-up email never arrives. SMTP_URL is unset or wrong. For one-off testing you can run a Mailhog container and set SMTP_URL=smtp://mailhog:1025.

https://... shows a Traefik default cert. Let's Encrypt couldn't issue. Check docker compose logs traefik — usually DNS not yet pointing at the host, or port 80 blocked.

SIP trunk returns 403 on outbound. Your host's public IP is not on the trunk's IP allow list. Add /32.

Browser dialer can't register. The dialer connects to wss://:5063/sip-ws. Confirm port 5063/TCP is open and serving a valid Let's Encrypt cert:

echo | openssl s_client -connect voice.yourdomain.com:5063 -servername voice.yourdomain.com 2>/dev/null \ | openssl x509 -noout -subject -issuer -dates

Enterprise Edition

Billing & metered usage, GDPR workflows, audit logs, SLA tracking, outbound campaigns, executive summaries → https://comcent.io/enterprise

License

AGPL-3.0. See LICENSE. Commercial licenses available — contact the maintainer.

Contributing

Want to hack on Comcent CE itself? See CONTRIBUTING.md.

About

Comcent Community Edition — open-source contact center

Resources

Readme

License

AGPL-3.0 license

Contributing

Contributing

Uh oh!

There was an error while loading. Please reload this page.

Activity

Custom properties

Stars

2 stars

Watchers

0 watching

Forks

0 forks

Report repository

Releases

No releases published

Packages 0

Uh oh!

There was an error while loading. Please reload this page.

Contributors

Uh oh!

There was an error while loading. Please reload this page.

Languages

Elixir 38.4%

Svelte 29.3%

TypeScript 24.1%

Go 5.7%

Shell 1.0%

JavaScript 0.7%

Other 0.8%