Carriers
The carrier
provides access.
Dials owns the control plane, the identity model, and the usage ledger. Carriers carry the bits. Provider-neutral by design — your numbers and routes stay yours.
At a glance
The provider matrix on Dials today.
BulkVS
Wired
Wholesale US + CA DID search, hold, and provisioning.
Vonage
Modeled
Global voice via the same adapter boundary.
Telnyx
Modeled
Programmable trunking + SMS via adapter.
Bandwidth
Modeled
E911 + toll-free via adapter.
One adapter shape
Pluggable, not promiscuous.
Every carrier sits behind the same Rust trait. Search a DID. Hold it. Provision it. Place a call. Send a message. The trait is the contract. The carrier is the implementation.
- One trait, many providers
- Mock mode by default
- Per-adapter credentials
- Per-adapter cost model
BulkVS
US + CA DIDs · wholesale
Vonage
Global voice
Telnyx
Programmable trunking
Bandwidth
E911 + toll-free
Bring your own
No carrier lock-in.
Ever.
Port a number out the same way you ported it in. Swap a provider behind a route without rewriting your routing graph. Your identity and policy graph never depended on any one carrier.
- Documented port-in
- Documented port-out
- Per-DID provider attribute
- Migration tooling included
1ok
Request
Submitted to losing carrier
2ok
LOA
Signed and uploaded
3ok
FOC
2026-03-12 · 17:00Z
4ok
Cut
Adapter switched live
Pick a carrier.
Inspect the live carrier matrix in the console. Switch the adapter mode from mock to wired and replay the same audited path.