SIPWatch
01
Open source Twilio + LiveKit SIP

Know why your calls will fail before they do.

SIPWatch watches your Twilio numbers and LiveKit SIP trunks and alerts you, with the cause and the fix, before calls start failing. Open source, runs next to your setup.

Demo project · status Demo data
Checks · last 8 h Every 5 min
−8 hnow
  • LiveKit inbound trunk ST_es9Xw4

    Gone since the last check. Outbound calls fail until it is recreated.

    Critical
  • Twilio number +34910000000

    On no inbound trunk: LiveKit answers 404 "No trunk found".

    Critical
  • Twilio trunk TK_acme

    Origination URL changed to sip:203.0.113.7:5060.

    Warning
  • Dispatch rules

    "+" format and SIP host rules pass.

    OK
From sipwatch demo: example trunks and numbers. Checks are read-only.
02

The failures teams keep reporting

trunk gone

Trunks that disappear

One team said their LiveKit SIP trunk vanished after 7–8 hours in production. Outbound calls failed until they recreated it.

404 No trunk found

The "+" that breaks inbound

The carrier sends +1415…, the trunk lists 1415…. Every inbound call gets rejected, even after recreating everything.

486 Busy Here

"Busy" at 14 calls

In one load test every INVITE returned 486 from about 14 concurrent calls. The cause was a limit, not a busy line.

03

How it works

  1. Read your config

    Every 5 minutes: LiveKit trunks and dispatch rules, Twilio numbers, SIP trunks and origination URLs. Read-only.

  2. Compare and lint

    Diff against the last check (trunk gone, number unrouted, URL changed) and run rules ("+" mismatch, no dispatch rule, wrong SIP host).

  3. Alert with the cause

    One Slack message per change, with the likely cause and the fix. Deduplicated, with a "resolved" message when it's fixed.

04

Try it in two minutes, no accounts

Terminal: sipwatch demo
$ pip install -e . && sipwatch demo

=== Run 2: 8 hours later ===
[CRITICAL] LiveKit inbound trunk ST_es9Xw4 (+34910000000) disappeared
[CRITICAL] Twilio number +34910000000 is not on any LiveKit inbound trunk
  cause: no inbound trunk lists this number, so LiveKit answers 404 'No trunk found'
  fix:   Add +34910000000 to an inbound trunk and re-run sipwatch check
[WARNING]  Twilio trunk TK_acme origination changed -> sip:203.0.113.7:5060

=== Run 3: 5 minutes later ===
(no new alerts)

$ sipwatch explain 486
SIP 486 Busy Here: often a concurrency limit, not a real busy line.

Being honest: LiveKit and Telnyx keep fixing SIP issues upstream. SIPWatch is a cheap safety net, not a replacement for your carrier or for telecom tooling like FreeSWITCH.

05

Pricing

Open source

$0
  • CLI: check, watch, logs, explain
  • Local status page
  • Slack webhook alerts
  • Apache-2.0

Hosted

$49 / month per project
  • Checks every 5 minutes, nothing to run
  • Slack alerts and history
  • Twilio + LiveKit

Agency

$199 / month
  • 10 client projects
  • One Slack channel per client
  • Everything in Hosted

Launch pricing is provisional and may change.

06

Get the hosted version first

Looking for a few agencies and teams running Twilio + self-hosted LiveKit to try it first.

We only use your email to contact you about this. Privacy.