Calling
Calling
SIPHON supports both inbound and outbound calling.
At a high level, SIPHON is responsible for:
- Building the agent worker (LLM/STT/TTS + instructions) that joins a call session.
- Creating the telephony routing (trunks + dispatch) so PSTN calls can reach that worker.
The underlying SIP transport and media bridging is handled by the realtime/telephony layer under the hood, while SIPHON focuses on orchestration and a simple Python API.
- Inbound calling: receive calls to a phone number and route them to an agent
- Outbound calling: place calls from code and connect them to an agent
End-to-end flow diagrams
Inbound flow (someone calls your number)

Provider-specific SIP examples (Twilio, Telnyx, Plivo, Wavix): Provider-specific quickstarts
In SIPHON terms:
- You run the worker with
Agent(...). - You configure routing with
Dispatch(...).agent().
Outbound flow (your code places the call)

In SIPHON terms:
- Your worker is still the same
Agent(...)process. - Your application triggers dialing via
Call(...).start().
What gets passed to the worker?
Both inbound and outbound flows attach metadata that includes an agent_config payload (LLM/STT/TTS config + instructions). The worker reads this metadata when it receives a job and reconstructs the runtime components.