PacketDial is a modern SIP softphone powered by a Rust core and Flutter UI. Multi-account, TLS/SRTP, BLF presence, CRM integration, and call recording — all in one lightweight app.
Built on PJSIP 2.14 with a Rust FFI layer for reliability and a Flutter desktop UI for a modern experience.
Full theme support — genuine white/near-white surfaces in light mode with deep indigo primary color. Toggle in Settings or follow system preference.
Register multiple SIP accounts simultaneously. Switch the active account per call with a single tap.
Encrypted signalling over TLS and encrypted media over SRTP. Works with any standards-compliant PBX.
A green/amber/red dot during active calls shows audio quality at a glance. Hover for MOS score, jitter, and packet loss.
Real-time busy lamp field monitoring with 7 states: Available, Busy, Ringing, Away, Offline, Error, and Unknown. Per-contact domain selection for multi-server setups. Double-click a ringing contact for directed call pickup.
Per-account SIP PUBLISH toggle. When enabled, subscribed contacts can see your status via BLF. Requires server-side support (Asterisk, FreeSWITCH, 3CX).
Blind and attended (consultative) transfer. Merge two calls into a 3-way conference.
Record calls locally to WAV. Auto-upload recordings to your server via HTTP POST after the call ends.
Fetch caller details from your CRM on incoming calls. Contact name and company appear on the call screen.
Open a CRM page or trigger a background HTTP request automatically when calls ring or are answered.
Fire HTTP webhooks on ring and call-end events with caller number, direction, duration, and more.
App-wide DND toggle in the footer. Incoming calls are rejected with 486 Busy while DND is active.
Drag-to-reorder codec priority. Enable or disable individual codecs globally across all accounts. DTMF method: Auto (RFC2833 → in-band fallback), RFC2833, SIP INFO, or In-band.
Full call log with direction, duration, SIP result code, and contact name from CRM lookup.
Runs quietly in the system tray. Incoming call notifications appear even when the window is hidden.
Replace the placeholders below with real screenshots once available.
PacketDial talks to your existing stack via standard HTTP — no proprietary SDKs required.
HTTP POST on incoming ring with caller number and account info
HTTP POST on call end with duration, direction, and SIP result
GET request to your endpoint — returns contact name, company, and CRM link
Open browser URL or fire background HTTP request on ring or answer
Multipart POST of WAV file with call metadata after call ends
Encrypted signalling and media — works with FreeSWITCH, Asterisk, 3CX
**ext for directed pickupUDP=OK TCP=OK TLS=OKFree and open source. Windows 10 / 11 x64.
Recommended for most users. Installs to Program Files with Start Menu shortcuts and an uninstaller.
No installation required. Extract anywhere and run. Great for USB drives or restricted environments.
Requires Windows 10 or 11 (x64) · No additional runtime required