Supafone Labs ยท Documentation

Framework Coverage#

Supafone Labs exposes fourteen audited runtime integrations. Every adapter converts provider-specific events into one canonical call state. When a runtime has a supported control channel, the same abstract Watcher directive is compiled back into that runtime's native message or developer-owned context.

This page distinguishes five different claims that should never be conflated:

Support classMeaning
Managed native controlSupafone owns the delivery path and sends the control through the managed call runtime
Native controlThe provider exposes a documented live control accepted by its active session
Developer-owned contextThe application owns the LLM or framework context and applies the compiled directive locally
Observation onlySupafone can normalize events, supervise, score, and report, but the provider exposes no universal live prompt-control channel
Explicit host hookThe component exposes an event transport, but the developer's agent must decide how to apply it

Runtime matrix#

RuntimeSupport classWatcher deliveryAcceptance criterion
Supafone Agent FactoryManaged native controlUltravox user_text_message with urgency=laterManaged call accepts the data message
UltravoxNative controlDeferred user_text_messageSend Data Message returns HTTP 204
VapiNative controlSystem add-message through the live call controlUrlControl request succeeds and the message enters live context
RetellDeveloper-owned contextSystem entry in the custom-LLM WebSocket contextEntry exists before the next response is emitted
BlandObservation onlyNo universal prompt-injection actionEvents normalize without emitting an unsupported action
OpenAI RealtimeNative controlSystem conversation.item.createItem-created or item-done event arrives without provider error
Grok Voice AgentNative controlresponse.create.instructionsProvider emits response.created, then response.done, or an error
Gemini Developer LiveObservation onlyNo hidden action; clientContent is ordinary conversation historyParser remains active; Watcher guidance safely emits no provider action
ElevenLabs AgentsNative controlcontextual_updateSocket remains healthy and the next turn completes
Deepgram Voice AgentNative controlUpdatePromptProvider emits PromptUpdated
LiveKit AgentsDeveloper-owned contextChatContext.add_message followed by update_chat_ctxPersisted context contains the system entry
PipecatDeveloper-owned contextLLMMessagesAppendFrame with run_llm=falseContext aggregator retains the developer message
Cartesia LineExplicit host hookCustom metadata event; no default prompt actionHost agent explicitly handles the event
Inworld RealtimeNative controlSystem conversation.item.createItem-added or item-done event arrives without provider error

GenericWebhookAdapter is the configurable extension path for proprietary systems. It is deliberately not counted as one of the fourteen audited runtimes.

What the package covers around the runtime#

The voice runtime is one layer. Supafone Labs also normalizes the infrastructure developers otherwise assemble around it.

LayerSupported surfacesPain removed
Agent runtimesThe fourteen integrations above plus generic webhooksRewriting supervision and state for every provider
TelephonySupafone-managed, Twilio, Telnyx, Plivo, SignalWire, SIP/custom trunksSeparate number, carrier, webhook, and media-stream implementations
TTSSupafone hosted, Cartesia, Inworld, ElevenLabs, Deepgram Aura, custom TTSProvider, deterministic fakeProvider-specific synthesis APIs and incompatible voice metadata
STTDeepgram Nova-3 live multilingual tap, provider-native transcripts, Twilio/raw audio tapsDuplicate transcripts, missing language authority, and provider-specific event parsing
Supervisor LLMSupafone hosted, Anthropic, OpenAI, xAI, custom LLMProvider, deterministic fakeHard-coding the supervisor to one model vendor
Prompt programsDSPy, LangChain, raw templates, provider-native message arrays, PromptProgramRebuilding optimization and prompt conversion per framework
Developer accessPython, TypeScript, Node, React/browser, REST, WebSocket, MCPMaintaining separate product APIs for every application surface

Managed delivery versus adapter support#

The fourteen-row matrix describes audited event parsing and action compilation. It does not mean Supafone hosts every provider account automatically.

Transcript and language authority#

Supafone selects exactly one transcript authority per call:

This prevents duplicate ingestion and conflicting language decisions. See Live language and voice routing for the opt-in hosted-agent behavior.

Release gates#

The public release verifies framework support at three levels:

  1. tests/test_provider_injection_e2e.py runs all fourteen adapters from a
  2. provider event through canonical state, Watcher decision, and exact action.

  3. tests/test_live_injection_contracts.py performs credentialed acceptance
  4. probes where the vendor exposes a live test path. Missing credentials are skips, never passes.

  5. tests/test_hosted_gitbook_sync.py requires this page to contain
  6. every runtime from provider_contracts.py and rejects duplicate or stale matrix entries.

The provider contract registry includes the primary vendor documentation, acceptance behavior, verification date, and probe type for every row. The generated, runtime-authoritative reference is Provider Runtime Contracts. The public SDK technical reference is also available in Providers and frameworks.

View raw Markdown