Documentation
Everything you need to get started with Aria on desktop, mobile, or self-hosted.
1 Desktop App
macOS
macOS 11+
.dmg
Windows
Windows 10+
.msi Β· .exe
Linux
Ubuntu 20.04+, Fedora 36+
.deb Β· .rpm Β· .AppImage
Setup Wizard: When you first launch Aria, a friendly setup wizard guides you through configuration β no manual setup required!
- 1
Enter your SIP server
Type your provider's SIP domain (e.g., sip.example.com)
- 2
Enter your credentials
Your SIP username and password from your provider
- 3
Click Connect
Aria registers automatically and shows "Connected" when ready
Desktop Tech Stack
2 Mobile Apps
iOS
iOS 17.0+
SwiftUI + CallKit + PushKit
Android
Android 8.0+ (API 26)
Jetpack Compose + ConnectionService + FCM
How Mobile Works
Mobile devices can't maintain persistent SIP registrations β the OS kills background connections to save battery. Aria solves this with a push gateway that keeps your SIP registration alive and wakes the app via push notifications when a call arrives.
iOS
- ✓ CallKit β native iOS call UI
- ✓ PushKit β VoIP push via APNs
- ✓ CNContactStore β contacts integration
- ✓ Built with SwiftUI
Android
- ✓ ConnectionService β native call management
- ✓ FCM β high-priority data messages
- ✓ Material You β dynamic color theming
- ✓ Built with Jetpack Compose
Both apps share the same Rust engine (aria-mobile-core) via UniFFI-generated native bindings.
SIP signaling, RTP media, and codec negotiation are identical across platforms.
3 Push Gateway
The Aria Push Gateway is a self-hosted Rust server that bridges your SIP server with mobile push notifications. It acts as a SIP B2BUA (Back-to-Back User Agent), maintaining registrations on behalf of mobile devices and routing calls through push notifications when the app isn't running.
Required for mobile apps. Without the push gateway, mobile devices cannot receive incoming calls when the app is in the background.
Technical Specifications
REST API
| Method | Path | Description |
|---|---|---|
POST | /v1/auth/token | Create JWT token |
POST | /v1/devices | Register device for push |
GET | /v1/devices/{id} | Get device + SIP status |
DELETE | /v1/devices/{id} | Unregister device |
POST | /v1/calls | Initiate outgoing call |
GET | /v1/calls/{token} | Get incoming call offer |
POST | /v1/calls/{token}/accept | Accept with SDP answer |
POST | /v1/calls/{token}/reject | Reject call (sends 603) |
POST | /v1/calls/{token}/hangup | Hang up (sends BYE) |
Self-Hosting
cargo build --release
# Binary at target/release/aria-gateway cp gateway.example.toml gateway.toml
# Set auth.secret, APNs key path, FCM credentials ./target/release/aria-gateway --config gateway.toml docker build -f push-gateway/Dockerfile -t aria-gateway .
docker run -d -p 8080:8080 -v /path/to/data:/data aria-gateway Requirements: UDP connectivity to your SIP server, outbound HTTPS to APNs/FCM, TLS termination via reverse proxy (nginx, Caddy, Traefik).
4 Core Libraries
Aria's SIP and media stack is built from scratch in Rust and shared across every platform. These crates are the foundation of the entire ecosystem.
aria-sip-core
SIP protocol library
Complete SIP message parsing, construction, and digest authentication. Used by the desktop app, mobile core, and push gateway for protocol-level operations.
rtp-engine
RTP media engine
Handles all real-time media: RTP packet construction, codec encoding/decoding, jitter buffering, and audio device I/O. Runs on desktop and mobile.
aria-mobile-core
Shared mobile engine
The bridge between the Rust core and native mobile platforms.
Wraps aria-sip-core and rtp-engine into a single AriaMobileEngine interface,
then uses UniFFI to generate Swift and Kotlin bindings automatically.
Keyboard Shortcuts (Desktop)
Note: On Windows/Linux, replace β with Ctrl
Need more help?
Check out the repositories on GitHub or open an issue.