Open-source, API-first voice calling for any CRM. Bring your own SIP trunk.
-
Browser calling Visitors and agents call over plain WebRTC with drop-in widgets. No SIP in the browser, no plugins.
-
Visual IVR builder Drag-and-drop flows with menus, input, HTTP callbacks and transfers, a live simulator, and text-to-speech prompts.
-
Agent routing Teams with ring-all, round-robin, sequential and longest-wait strategies, live presence and queue depth.
-
Bring your own trunk Airtel, Jio, Tata or any SIP carrier, with IP or registration auth and multi-trunk failover. Switching carriers is a config change.
-
WhatsApp calls Take WhatsApp Business calls over SIP into the same flows and agents.
-
Campaigns and voice blasts Schedule recipient lists with uploaded audio, local text-to-speech, or interactive IVR; control concurrency, retries, and per-recipient reporting.
-
Call control Hold, transfer and live supervision (monitor, whisper, barge).
-
Recording Stereo call recordings (agent and customer on separate channels), stored locally or on S3.
-
Call logs & webhooks One call log for every channel, a per-call timeline, and signed webhooks you pick per IVR step and flow.
-
Multi-tenant Isolated tenants with their own API keys, admin console and trunks.
Pre-built images are on Docker Hub (shridh0r/tring, shridh0r/tring-freeswitch).
# Download the installer, read it, then run it (creates ./tring)
curl -fsSLO https://raw.githubusercontent.com/shridarpatil/tring/main/install.sh
less install.sh
sh install.sh && cd tring
# Configure, then start (install.sh generated .env with random secrets)
$EDITOR .env # network IPs, TZ
docker compose pull && docker compose up -dGo to http://localhost:8085/login and log in with TRING_ADMIN_EMAIL / TRING_ADMIN_PASSWORD from .env.
git clone https://github.com/shridarpatil/tring.git
cd tring
make .env # copies .env.example with random secrets
docker compose up -d --buildSee the documentation for the quickstart, configuration, carrier and WhatsApp setup, the browser SDK and the full API reference. Its source is in docs/.
The backend is one Go binary, cmd/tring, with FreeSWITCH as the carrier edge. tring runs the api role (REST API, console) and the gateway role (call plane); tring --gateway runs only the call plane. The console is Vue 3.
docker compose up -d # Postgres, Redis, FreeSWITCH
make run # tring: REST API + console on :8085, call plane on :8087
make help # all targets (sdk, images, test, …)Read the architecture and code style guides before contributing.
