Windows SIP Softphone

Professional calling,
built for Windows

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.

⬇ Download for Windows ★ View on GitHub
📞
Main dialer screenshot
Replace with actual screenshot

Everything you need for SIP calling

Built on PJSIP 2.14 with a Rust FFI layer for reliability and a Flutter desktop UI for a modern experience.

☀️

Light & Dark Mode

Full theme support — genuine white/near-white surfaces in light mode with deep indigo primary color. Toggle in Settings or follow system preference.

👥

Multi-Account

Register multiple SIP accounts simultaneously. Switch the active account per call with a single tap.

🔒

TLS & SRTP

Encrypted signalling over TLS and encrypted media over SRTP. Works with any standards-compliant PBX.

🟢

Call Quality Indicator

A green/amber/red dot during active calls shows audio quality at a glance. Hover for MOS score, jitter, and packet loss.

📡

BLF Presence

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.

📢

Publish Presence

Per-account SIP PUBLISH toggle. When enabled, subscribed contacts can see your status via BLF. Requires server-side support (Asterisk, FreeSWITCH, 3CX).

🔀

Call Transfer

Blind and attended (consultative) transfer. Merge two calls into a 3-way conference.

🎙

Call Recording

Record calls locally to WAV. Auto-upload recordings to your server via HTTP POST after the call ends.

🔍

CRM Lookup

Fetch caller details from your CRM on incoming calls. Contact name and company appear on the call screen.

🌐

Screen Pop

Open a CRM page or trigger a background HTTP request automatically when calls ring or are answered.

🔔

Webhooks

Fire HTTP webhooks on ring and call-end events with caller number, direction, duration, and more.

🚫

Do Not Disturb

App-wide DND toggle in the footer. Incoming calls are rejected with 486 Busy while DND is active.

🎵

Codec & DTMF Control

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.

📋

Call History

Full call log with direction, duration, SIP result code, and contact name from CRM lookup.

🖥

System Tray

Runs quietly in the system tray. Incoming call notifications appear even when the window is hidden.

See it in action

Replace the placeholders below with real screenshots once available.

📞
Dialer screen
Main dialer with keypad and active call controls
📲
Incoming call
Incoming call banner with CRM contact name
👤
BLF contacts
BLF presence contacts with live status indicators
📜
Call history
Call history with direction, duration, and result
⚙️
Integration settings
Webhooks, CRM lookup, screen pop, and recording upload
🔧
Account setup
Account configuration with transport and security options

Connect your tools

PacketDial talks to your existing stack via standard HTTP — no proprietary SDKs required.

🔗
Ring Webhook

HTTP POST on incoming ring with caller number and account info

🔗
End Webhook

HTTP POST on call end with duration, direction, and SIP result

🔍
CRM Lookup

GET request to your endpoint — returns contact name, company, and CRM link

🌐
Screen Pop

Open browser URL or fire background HTTP request on ring or answer

☁️
Recording Upload

Multipart POST of WAV file with call metadata after call ends

🔒
TLS / SRTP

Encrypted signalling and media — works with FreeSWITCH, Asterisk, 3CX

What's new

v0.5.0

Added

  • Full light & dark mode — all screens, dialogs, and widgets respond to theme; light mode uses genuine white surfaces with deep indigo primary
  • Publish Presence (SIP PUBLISH) — per-account toggle so subscribed contacts can see your status via BLF; requires server support (Asterisk, FreeSWITCH, etc.)
  • Microphone amplification toggle — disabled by default; enables 2× software gain on top of system mic level
  • Echo cancellation toggle — enabled by default; applies immediately without restart
  • DTMF method "Auto" — RFC2833 preferred, falls back to in-band if remote rejects it; now the default
  • BLF call pickup — Ringing contacts blink; double-click or use "Call Pickup" in the context menu to dial **ext for directed pickup
  • BLF presence per-contact domain — pick an account when adding/editing a contact to set the subscribe domain
  • Full BLF presence state set: Available, Busy, Ringing, Away, Offline, Error
  • Call quality indicator — green/amber/red dot during active calls based on MOS (jitter + packet loss); hover for raw metrics

Fixed

  • BLF presence notifications were silently dropped due to event name mismatch in Rust callback
  • BLF subscriptions now capture early presence state on PENDING as well as ACTIVE
  • Contact list no longer shows duplicate presence status when server activity note matches the state label
v0.4.0

Fixed

  • TLS transport now initialises correctly — accounts no longer silently fall back to UDP
  • Webhook and CRM URLs with leading/trailing whitespace no longer cause a FormatException
  • Recording upload verifies file exists and sends richer metadata fields

Added

  • Engine startup log showing transport availability: UDP=OK TCP=OK TLS=OK
  • Per-account transport selection logged at registration time
  • HTTP request logging with URL, status code, and response time across all integration services
  • CRM lookup tab rebuilt with step-by-step guide and exact JSON response format
  • Incoming call banner updates with contact name when a delayed CRM response arrives
  • Integration settings tabs are now centred

Removed

  • Clipboard monitoring
  • Dialing rules and caller ID transformation features

Get PacketDial

Free and open source. Windows 10 / 11 x64.

📦 Portable ZIP

No installation required. Extract anywhere and run. Great for USB drives or restricted environments.

  • No admin rights needed
  • Run from any folder
  • Includes uninstaller script
  • Settings stored alongside the app
Download Portable (.zip)

Requires Windows 10 or 11 (x64) · No additional runtime required