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)

Inbound calling flow

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)

Outbound calling flow

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.

Inbound

Outbound