Configure an Atom number in LiveKit
Connect an Atom telephone number to an AI agent in LiveKit Cloud for inbound and outbound calls. Atom provides the telephone service and LiveKit connects each call to a room where your agent can answer.
This guide covers LiveKit Cloud, not a self-hosted installation. SMS is not included.
Before you begin
Make sure you have:
- Access to the Atomic portal to create and manage a Voice Service.
- Access to your LiveKit Cloud project.
- A deployed LiveKit AI agent.
- An Atom Voice Service and an assigned telephone number or access to create them using the steps below.
- A Windows computer with PowerShell for the manual outbound CLI procedure. The LiveKit CLI is a command-line tool for managing your project and placing calls.
- A telephone number you control for the call tests.
Use your own service, number and project details throughout this guide.
Allowed addresses: LiveKit documents that this feature requires project enablement. If it is unavailable, ask LiveKit support to enable it before following the inbound setup. Do not remove the source-address restriction to work around it.
Keep credentials secure: Do not include the VOIP password, LiveKit API keys or API secrets in screenshots, documentation, support tickets or chat messages.
Create the Atom voice service
Navigate: Services > Voice in the Atomic portal.
Step 1: Sign in to the Atomic portal.
Step 2: In the sidebar, open Services then select Voice.
Step 3: Select Add Service.
Step 4: Select the Customer for the service.
Customer not listed: If the customer does not exist yet, follow the create a customer guide before continuing.
Step 5: Set Voice Service Type to SIP Trunk.
Step 6: Give the service a clear name that identifies its LiveKit use.
Step 7: Save the service.
Order and assign a number
Step 2: When the number is available, assign it to the Voice Service you created for LiveKit.
Step 3: Record the full number, including its country code. You will use it in the trunk and caller-ID settings below.
Configure inbound calling
Inbound calls follow this route:
text
Caller > Atom number > LiveKit inbound trunk > dispatch rule > room > AI agentCreate an inbound trunk in LiveKit
Navigate: Telephony > SIP trunks in your LiveKit Cloud project.
Step 1: Open your LiveKit Cloud project and select Telephony.
Step 2: Select SIP trunks.
Step 3: Select Create new trunk > Inbound trunk.
Step 4: Enter these settings:
3 of 3 rows
| Trunk name | A clear name such as Atomic Inbound |
| Numbers | Your assigned Atom number, including its country code |
| Allowed addresses | 52.65.130.216/32 |
Step 5: Keep these optional settings:
3 of 3 rows
| Media encryption (SRTP) | Media encryption disabled |
| Include headers | No headers |
| Enable Krisp | Off |
Step 6: Select Create and confirm that the trunk appears under Inbound.
Unencrypted call audio: This configuration disables SRTP on both the inbound and outbound trunks. The telephone audio on these connections is not encrypted with SRTP.
Create a dispatch rule for the AI agent
A dispatch rule connects an incoming call to a room and tells LiveKit which agent should join it.
Navigate: Telephony > Dispatch rules in LiveKit.
Step 1: Open Telephony > Dispatch rules.
Step 2: And then select Create a new dispatch rule.
Step 3: Enter these settings:
3 of 3 rows
| Rule name | A clear name such as Atomic Inbound Calls |
| Rule type | Individual |
| Room prefix | Leave blank |
Step 4: Under Agent dispatch, select your deployed AI agent.
Step 5: Keep the other agent settings at their defaults unless your deployment requires different values.
Step 6: Under Inbound routing, select Trunks.
Step 7: Select the
Atomic Inbound trunk you created above.Step 8: Select Create.
Add the SIP Incoming Trunk in Atom
Navigate: Services > Voice > Manage > Connections > SIP Incoming Trunk in the Atomic portal.
Step 1: In LiveKit, open Telephony > SIP trunks and copy the value shown in the SIP URI panel.
Step 2: In the Atomic portal, open Services > Voice.
Step 3: Find the Voice Service created for LiveKit and select Manage.
Step 4: Open Connections > SIP Incoming Trunk.
Step 5: Select Add New.
Step 6: Enter these settings:
2 of 2 rows
| Name | A clear name such as LiveKit Incoming |
| Primary IP Address | The SIP URI shown in your own LiveKit project |
Step 7: Save the new SIP Incoming Trunk.
Use the value from your own project. Do not copy another project's address.
Route the assigned number to LiveKit
Navigate: Your Voice Service's Assigned DID page in the Atomic portal.
Step 1: Open the Voice Service and go to Assigned DID.
Step 2: Find your assigned number and select Manage.
Step 3: On Edit DID, enter these settings:
5 of 5 rows
| DID Label | A clear label such as LiveKit |
| Incoming Connection | The LiveKit Incoming connection created above |
| CLI Translation Rule | Leave blank |
| Number Format | +E.164 |
| Forward DID in URI | Enabled |
Step 4: Select Save.
Verify inbound calling
Step 1: Call the assigned Atom number from an external phone.
Step 2: In LiveKit, open Telephony > Calls and confirm that the call appears.
Step 3: Confirm that the selected AI agent joins the room and answers.
Step 4: Check that you can hear the agent and that the agent can hear you.
If the call does not reach the agent, check that:
- The assigned DID uses the new LiveKit incoming connection.
- The number on the LiveKit inbound trunk matches the assigned Atom number.
- Allowed addresses is
52.65.130.216/32.
- Number Format is
+E.164and Forward DID in URI is enabled. - The dispatch rule selects the correct inbound trunk and AI agent.
Configure outbound calling
Set the Atom SIP endpoint credentials
Navigate: Services > Voice > Manage > Connections > SIP End Point in the Atomic portal.
Step 1: Open Services > Voice.
Step 2: Manage the Voice Service created for LiveKit.
Step 3: Open Connections > SIP End Point.
Step 4: Record the SIP Account. You will use it as the LiveKit username.
Step 5: Set a new VOIP Password and enter it again under Retype VOIP Password.
Step 6: Store the credentials securely and select Update.
Create an outbound trunk in LiveKit
Navigate: Telephony > SIP trunks in LiveKit.
Step 1: Open Telephony > SIP trunks.
Step 2: Select Create new trunk > Outbound trunk.
Step 3: Enter these settings:
4 of 4 rows
| Trunk name | A clear name such as Atomic Outbound |
| Address | sip3.atomcomm.com |
| Transport | Auto |
| Numbers | Your assigned Atom number in +E.164 format |
Step 4: Expand Optional settings.
Step 5: Enter these settings:
3 of 3 rows
| Media encryption (SRTP) | Media encryption disabled |
| Username | The Atom SIP Account recorded above |
| Password | The Atom VOIP Password set above |
Step 6: Select Create.
For the outbound trunk's Numbers, include the leading
+ and country code. Use your own assigned Atom number.Set up the LiveKit CLI
LiveKit can place outbound calls through the CLI, server API or your application. The following Windows PowerShell procedure uses the CLI to start the agent first and then place a manual call.
Step 1: If the CLI is not installed, open PowerShell and run:
powershell
winget install LiveKit.LiveKitCLIStep 2: Connect the CLI to LiveKit Cloud:
powershell
lk cloud authStep 3: List the available projects:
powershell
lk project listStep 4: Set the project to use. Replace
YOUR_PROJECT_NAME with the correct project name:powershell
lk project set-default "YOUR_PROJECT_NAME"Find the outbound trunk ID
Step 1: List the outbound trunks:
powershell
lk sip outbound listStep 2: Copy the ID of the Atom outbound trunk.
Dispatch the AI agent
Step 1: Choose a unique room name for this call. The commands below use
atomic-outbound-001; use the same room name throughout the call procedure.Step 2: Start the deployed agent in that room. Replace
YOUR_AGENT_NAME with the deployed agent's name:powershell
lk dispatch create --room atomic-outbound-001 --agent-name "YOUR_AGENT_NAME"Production agent dispatch: Leave the deployment unset for this configuration. Do not add --deployment production.Step 3: Check the room participants and confirm that the AI agent is active before placing the call:
powershell
lk room participants list atomic-outbound-001Place the outbound call
Step 1: Replace the three placeholder values below with your trunk ID, the destination number you control and your assigned Atom caller ID. Run these lines in the same PowerShell session:
powershell
$OutboundTrunkId = "YOUR_OUTBOUND_TRUNK_ID"
$DestinationNumber = "DESTINATION_COUNTRY_CODE_AND_NUMBER"
$CallerId = "+YOUR_ATOM_NUMBER_WITH_COUNTRY_CODE"Use these formats:
4 of 4 rows
$OutboundTrunkId | The ID copied from the Atom outbound trunk |
$DestinationNumber | Country code and number without a leading + |
$CallerId | Your assigned Atom number with a leading + and country code |
| Room name | The same room used to dispatch the agent |
Step 2: Create the telephone participant in the same room:
powershell
lk sip participant create --trunk $OutboundTrunkId --call $DestinationNumber --number $CallerId --room atomic-outbound-001 --identity outbound-customer --name "Outbound customer" --wait --timeout 1m20sUse a new room name for each call, such as
atomic-outbound-002. Change it in both the agent-dispatch and telephone-participant commands.Verify the outbound call
Step 1: While the call is connected, check the room participants:
powershell
lk room participants list atomic-outbound-001The room should contain the active AI agent and telephone participant with audio tracks.
Step 2: Open Telephony > Calls in LiveKit and confirm the outbound call appears.
Step 3: Check that the person on the phone can hear the agent and that the agent can hear them.
If the phone rings but the call is silent, check that the AI agent was active before the telephone participant was created. Keep the outbound trunk's Transport set to Auto.
Configuration summary
11 of 11 rows
| LiveKit inbound number | Assigned Atom number |
| Inbound allowed address | 52.65.130.216/32 |
| Inbound dispatch rule | Individual, with Room prefix blank |
| Atom DID number format | +E.164 |
| Forward DID in URI | Enabled |
| Outbound address | sip3.atomcomm.com |
| Outbound transport | Auto |
| Outbound caller ID | Assigned Atom number in +E.164 format |
| Outbound destination | Country code and number without a leading + |
| Outbound authentication | Atom SIP Account and VOIP Password |
| Agent dispatch | Before the call, with no --deployment production option |
