# FirstByte > FirstByte polyglot SDK and raw QUIC RPC reference. ## Build a Voice Agent / Build a Voice Agent - [Build a Voice Agent](/paths/voice-agent.md): Go from zero to a live AI voice agent — quickstart, models, turn-taking, tools, telephony, and go-live. ## Explore all docs / Voice / Overview - [Voice Overview](/modalities/voice/overview.md): Real-time voice AI and telephony over QUIC. Place and receive calls. Stream audio both ways. Attach an AI agent from one typed client. ## Explore all docs / Voice / Quickstart - [Managed Cloud](/modalities/voice/quickstart/managed-cloud.md): The fastest path to a live voice agent: get a key, install the SDK, and originate a call. You run no infrastructure. - [Test Drive](/modalities/voice/test-drive.md): Talk to your voice agent from the browser with your microphone — no phone number, no carrier, no PSTN charges. The fastest way to hear whether it works. - [On-Prem / Self-Hosted](/modalities/voice/quickstart/on-prem.md): Run the voice engine, media relay, and optional self-hosted inference inside your own network. ## Explore all docs / Voice / Agent Runtime - [Agent Runtime Overview](/modalities/voice/runtime/overview.md): The agent runtime drives a live conversation. It controls turn-taking, tool calls, and session lifecycle over a cascade or a duplex model. - [BYO ASR / LLM / TTS Models](/modalities/voice/runtime/byo-asr-llm-tts.md): Assemble a best-of-breed cascade from one config file. For example, use Deepgram, your LLM, and ElevenLabs or Cartesia. - [Keep Your Existing Agent Runtime](/modalities/voice/runtime/keep-existing.md): Bring your own agent runtime or media stack and use FirstByte for transport only — via the LiveKit Agents transport plugin, the browser drop-in shim, or the raw MoQT primitives. - [Tool Calling](/modalities/voice/runtime/tool-calling.md): Give the voice agent tools it can call mid-conversation — HTTP endpoints, remote MCP servers, or your own SDK handlers. - [FirstByte Agent Runtime](/modalities/voice/runtime/builtin-runtime.md): The built-in voice agent runtime supplies pipeline nodes, a provider registry, turn-taking, and tool calling, wired end to end. - [BYO Speech-to-Speech Models](/modalities/voice/runtime/byo-speech-to-speech.md): Run one duplex speech-to-speech model instead of an ASR → LLM → TTS cascade to get lower turn latency. - [Session Lifecycle](/modalities/voice/runtime/session-lifecycle.md): From connect to teardown: the runtime session state machine, its timeouts and budgets, and the idle guardrails that hang up a stuck call. - [Self-hosted models](/modalities/voice/runtime/self-hosted-inference.md): Serve your own speech-to-speech and speech models on your own GPUs. The FirstByte Inference control plane routes calls to them over QUIC. - [Runtime Configuration](/modalities/voice/runtime/configuration.md): The agent-config.yml reference: model and provider fields, the turn-detection block, codecs, session and output budgets, and guardrails. - [Testing & Evaluation](/modalities/voice/runtime/evaluation.md): Test a voice agent like you unit-test code: scripted conversations, assertions, an LLM judge, and latency metrics — in CI. - [Flow graphs (agent_config.flow_graph)](/modalities/voice/runtime/flow-graph.md): How the Voice AI flow canvas saves a call graph, how the node-spec catalog drives the palette and the step form, which graph rules block a publish, and when a saved graph reaches a live call. - [Knowledge Sources](/modalities/voice/runtime/knowledge-sources.md): The org-scoped knowledge catalog: url, text, and file sources, how they are stored, and how the MCP server catalog differs from a per-tool MCP spec. - [External agents and /media/ credentials](/modalities/voice/runtime/external-agents.md): Run your own voice agent outside the engine: the agent handle, the /media/ credential lifecycle, worker presence, and bulk provisioning. - [Provider credentials: tenant defaults and per-agent overrides](/modalities/voice/runtime/credentials.md): How the voice runtime resolves LLM, ASR and TTS provider keys, which providers accept a per-agent override, what the masked meta returns, and how to diagnose a missing credential at hydrate. - [Agent versions, publishing and rollback](/modalities/voice/runtime/versioning.md): How the working copy differs from the published snapshot, what publishing captures, how rollback renumbers versions, and how to read the change list and diff. ## Explore all docs / Voice / Integrations - [LiveKit Agent over FirstByte Transport](/modalities/voice/integrations/livekit.md): Run an unmodified LiveKit agent over FirstByte. Install the transport plugin into your agent process (recommended), front-proxy the media through the voice gateway, or use the browser compat shim. - [Supported providers](/modalities/voice/integrations/providers.md): Every speech, language and speech-to-speech vendor a voice agent can use, with the exact provider id for each stage and which ones stream. - [Pipecat](/modalities/voice/integrations/pipecat.md): Run an unmodified Pipecat pipeline on real phone calls. Install pipecat-clutchcall, serve one pipeline for each engine-routed call, and route a number to your worker. - [Twilio](/modalities/voice/integrations/twilio.md): Move a Twilio Voice app onto FirstByte. Media Streams becomes an in-process Call API. TwiML routing becomes an external-agent config. The REST surface maps to management-API operations. - [Vapi](/modalities/voice/integrations/vapi.md): Move a Vapi assistant onto FirstByte. The assistant becomes a console voice agent. Server-URL webhooks become signed platform webhooks. Custom functions become HTTP agent tools. - [Plivo](/modalities/voice/integrations/plivo.md): Move a Plivo Voice app onto FirstByte. The answer-URL/XML model becomes in-process call handling in an external agent. The REST surface maps to management-API operations. - [Telnyx](/modalities/voice/integrations/telnyx.md): Move a Telnyx Call Control app onto FirstByte. The webhook/command ping-pong becomes one in-process function in an external agent. There are no round-trips and no call_control_id state machine. - [Vobiz](/modalities/voice/integrations/vobiz.md): Bring a Vobiz SIP trunk and Indian DIDs onto FirstByte. Register or IP-auth the trunk in the console. Route each DID to any agent, native or external. Then go live. - [OpenAI Realtime](/modalities/voice/integrations/openai-realtime.md): Run OpenAI's Realtime speech-to-speech model on a live phone or web call, with server-side VAD and instant barge-in. - [Gemini Live](/modalities/voice/integrations/gemini-live.md): Run Google's Gemini Live as the duplex speech-to-speech model on a call. You configure it fully from the agent spec. - [ElevenLabs](/modalities/voice/integrations/elevenlabs.md): Use ElevenLabs for streaming text-to-speech, the default voice in a cascade. You can also use ElevenLabs ASR and Conversational AI. - [Deepgram](/modalities/voice/integrations/deepgram.md): Use Deepgram for streaming speech-to-text in a cascaded voice agent, with low-latency interim transcripts and barge-in. - [Custom Agent Runtime](/modalities/voice/integrations/custom-runtime.md): Run your own conversation engine over the transport. Bridge to an external vendor, use the raw MoQT audio primitives, or use the LiveKit-compatible shim. ## Explore all docs / Voice / Core Concepts - [Turn Detection & Barge-in](/modalities/voice/concepts/turn-detection.md): Tune when your voice agent listens, replies, and yields the floor. Covers VAD modes, end-of-turn timing, and hold-and-confirm barge-in. - [FirstByte Voice Architecture](/modalities/voice/concepts/architecture.md): Follow one call end to end through the SIP gateway, RTP media plane, agent runtime, MoQT transport, and relay mesh. - [Components](/modalities/voice/concepts/components.md): The pieces of the voice stack: SIP gateway, media plane, dialplan, agent runtime, transport, relay, and inference. - [Sessions, Calls, Tracks & Streams](/modalities/voice/concepts/sessions-calls-tracks-streams.md): The voice object model: one call is one sid that addresses two MoQT audio tracks tagged by codec. Learn how calls, tracks, and audio frames fit together. - [Voice Isolation & Voice Printing](/modalities/voice/concepts/voice-isolation.md): Learn where audio cleanup (AEC/AGC/noise suppression) happens on a call, and what FirstByte Voice does and does not do for speaker identity. - [Handoffs](/modalities/voice/concepts/handoffs.md): Hand a live call between AI and humans with transfer, warm handoff, and SIP REFER. The audio continues and the sid does not change. - [Deployment Models](/modalities/voice/concepts/deployment-models.md): Compare managed cloud, self-hosted, and hybrid models. See where the voice engine, control plane, and inference run, and how to choose. ## Explore all docs / Voice / Transport to Telephony - [Outbound Calls](/modalities/voice/transport-telephony/outbound.md): Originate a PSTN call over a SIP trunk, attach an AI agent, cap the ring time, and poll for the outcome. - [Inbound Calls](/modalities/voice/transport-telephony/inbound.md): Receive calls from the phone network: how the SIP gateway answers, publishes the same voice tracks as an outbound call, and routes to an agent or a human. - [SIP Trunking](/modalities/voice/transport-telephony/sip-trunking.md): Connect carriers to your workspace: bring your own SIP trunk or use a managed trunk. - [Number Provisioning](/modalities/voice/transport-telephony/number-provisioning.md): Give your voice service a reachable address: bring your own DID over a SIP trunk, use your per-tenant SIP subdomain, or buy from the managed catalog. Then assign the address to a trunk, agent, or flow. - [PBX / ACD Integration](/modalities/voice/transport-telephony/pbx-acd.md): Peer with an existing PBX over SIP, or route calls through the built-in ACD with skills, queues, and VDN vectors. - [AI-to-Human Handoff](/modalities/voice/transport-telephony/ai-human-handoff.md): Escalate a live call from an AI agent to a human — blind, warm, and consult transfer tools, SIP REFER, sid preservation, and bot⇄human re-attach. - [Transport to Telephony Overview](/modalities/voice/transport-telephony/overview.md): Connect the phone network to your voice stack: SIP trunks, numbers, inbound and outbound calls, and warm handoff to humans. - [Codec Guide](/modalities/voice/transport-telephony/codecs.md): Pick a voice codec — Opus, PCM16, or G.711 µ-law/A-law — and let the bridge transcode. When to use which, and the passthrough fast paths. - [Call Lifecycle](/modalities/voice/transport-telephony/call-lifecycle.md): How a phone call moves through SIP signalling and media setup, and how each stage maps to the CallStatus that your SDK reports. - [Trunk media and edge tuning](/modalities/voice/transport-telephony/trunk-media-tuning.md): Packetization, carrier source CIDRs, regional SIP edge pinning, the RTP port range, per-trunk auto barge-in, and the registration status chip on the Trunks screen. - [Trunk configuration reference](/modalities/voice/transport-telephony/trunk-configuration.md): Every field on the trunk form: SIP carrier vs WhatsApp Business Calling transport, SBC reachability, regional SIP edge pinning, inbound routing precedence, and secret rotation. - [SIP Security](/modalities/voice/transport-telephony/sip-security.md): How sip_security_config gates inbound SIP: spam and scanner filtering, REGISTER rate limiting, and STIR/SHAKEN attestation. - [SIP domains](/modalities/voice/transport-telephony/sip-domains.md): How a SIP domain record routes inbound INVITEs to a workspace, how the leftmost DNS label is matched, and how domains interact with trunks and numbers. - [Hosted carrier answer URLs](/modalities/voice/transport-telephony/carrier-answer-url.md): Mint the hosted answer URL a programmable-voice carrier fetches to route an inbound DID onto a SIP trunk, plus SIP edge selection and carrier source CIDRs. - [Dispatch Rules](/modalities/voice/transport-telephony/dispatch-rules.md): The dispatch_rule object: pattern matching on caller and dialed number, priority evaluation, global and trunk-scoped rules, and how a saved rule reaches the engine. - [Number routing: live decisions and reconcile](/modalities/voice/transport-telephony/number-routing-reconcile.md): How the engine picks a route for an inbound DID, how to read the live route decision in the console, why stored bindings can drift from live rules, and what Re-sync routing rewrites. - [VDNs, Extensions, and Reporting Hotlines](/modalities/voice/transport-telephony/vdn-hotlines.md): How a VDN binds a default skill, a reporting hotline, and an optional vector, what its extension number does, and how VDN grouping feeds reporting. - [ACD algorithms and skill-to-hotline mapping](/modalities/voice/transport-telephony/acd-algorithms.md): How a skill's ACD algorithm is chosen, what EAD-MIA, MIA, UCD, LOA, LAR and Manual do, and how skill-to-hotline mapping affects agent selection. - [Bulk Campaigns](/modalities/voice/transport-telephony/campaigns.md): Start, pace, list, and abort CSV-driven outbound campaigns with startCampaign, listCampaigns, and abortCampaign. - [Agent phones (workstation endpoints)](/modalities/voice/transport-telephony/agent-endpoints.md): What a workstation endpoint is, how it differs from an agent identity, how browser softphones and SIP deskphones are addressed, and what to check before you change one. - [Outbound routing: COR, ARS digit analysis and route patterns](/modalities/voice/transport-telephony/outbound-routing-ars.md): How agent-dialed outbound calls resolve: class-of-restriction checks, ARS digit analysis, ordered FRL-gated trunk preferences, digit manipulation and caller-ID selection. - [SIP ACL](/modalities/voice/transport-telephony/sip-acl.md): How the workspace registrar access control list admits inbound SIP signalling, how entries are matched, and how trunk peers relate to it. - [Vector Step Reference](/modalities/voice/transport-telephony/vector-steps.md): Every vector step kind, its required fields, its config keys, and how simple and advanced programs are numbered, saved, and exported. ## Explore all docs / Voice / Build Guides - [Building Voice Agents](/modalities/voice/build/voice-agents.md): Build a production voice agent end to end: place or answer a call, attach an agent, tune turns, add tools, hand off to a human, and record. - [Building AI-Native Contact Center Platforms](/modalities/voice/build/contact-center-platforms.md): Build a full contact center where AI and human agents share one skill queue: ACD, agent desktop, IVR flow builder, supervisor, and live wallboards. - [Building Voice Agent Platforms](/modalities/voice/build/agent-platforms.md): Host many customers' voice agents on one platform: per-tenant provisioning, scoped API keys, data isolation, per-tenant agent config, and usage metering. - [Wrap-up codes and dispositions](/modalities/voice/build/wrap-up-codes.md): Define the after-call disposition list agents pick from: categories, the FCR and follow-up flags, hotline scoping, picker order, and what deactivation does to history. ## Explore all docs / Voice / Observability - [Observability Overview](/modalities/voice/observability/overview.md): See the live state, per-segment traces, CDRs, MOS/jitter/loss, and per-tenant traffic for every call. - [Production Dashboards](/modalities/voice/observability/dashboards.md): The live and after-the-fact dashboards to watch in production: triage, call detail, CDRs, VDN flow, skill drill, and agent stats. - [Call Traces](/modalities/voice/observability/call-traces.md): Read a call end-to-end as a per-segment timeline that the system assembles from lifecycle events, in the console call detail and over the control-plane API. - [Packet-Level Debugging](/modalities/voice/observability/packet-debugging.md): Read a call's SIP ladder from built-in capture, and know when to drop to a raw pcap on the media path. - [Latency Breakdown](/modalities/voice/observability/latency-breakdown.md): Where the milliseconds go on a voice turn — capture, encode, transport, runtime, egress — with real transport numbers and how to measure your own. - [Barge-in Debugging](/modalities/voice/observability/barge-in-debugging.md): Trace why an interrupt did or did not fire on a live call — VAD knobs, the provider cancel scorecard, and no-AEC self-trigger. - [MOS, Jitter & Packet Loss](/modalities/voice/observability/mos-jitter-loss.md): Read the three voice-quality metrics that FirstByte Voice computes in the media plane and writes into every CDR, and the thresholds that matter. - [SIP / RTP Debugging](/modalities/voice/observability/sip-rtp-debugging.md): Debug the telephony leg: SIP signalling causes and Q.850, RTP loss and jitter, and registration failures. - [Alerts](/modalities/voice/observability/alerts.md): Which voice signals can back an alert rule, how to scope and threshold one, and how a fired alert links back to a call sid. - [Hotline KPI thresholds](/modalities/voice/observability/hotline-kpi-thresholds.md): How the hotline object stores its six KPI rows, how Target / Min / Avg / Max feed wallboard banding, and what the admin procedures behind the Hotlines screen accept. - [Call transcripts](/modalities/voice/observability/transcripts.md): How the agent runtime produces call transcripts, where the console exposes them, and how they differ from recordings, CDRs, and traces. - [Hotline reporting buckets](/modalities/voice/observability/hotline-reporting.md): What a hotline bucket is, how the hotline picker is populated, and how binding a DID to a hotline affects reporting but not routing. - [Where each monitoring number comes from](/modalities/voice/observability/trace-metric-sources.md): How the Monitoring & observability screen sources each tile, chart, and empty state from CDR rows, tenant-tagged spans, and engine host metrics. - [Audit log](/modalities/voice/observability/audit-log.md): The immutable admin audit log in the Voice AI console (Operations → Audit log), and where the shared observability dashboards live instead. - [Per-call agent usage metrics](/modalities/voice/observability/agent-usage-metrics.md): Where the Metrics panel's usage rows come from, how they differ from the live event ring, and what an externally hosted agent has to report. - [SIP Capture Screen](/modalities/voice/observability/sip-capture.md): How the SIP capture console screen scopes, lists, and renders signalling ladders for recent calls, and what the CSV export contains. - [Recordings in the console](/modalities/voice/observability/recordings.md): How the recordings list is assembled from CDR rows and storage objects, why some objects are hidden, and how playback URLs are presigned. - [Overview KPIs and per-tenant usage meters](/modalities/voice/observability/overview-kpis.md): How the admin overview computes its rolling-24h call tiles, where the roster and session counts come from, and what the billing-cycle meters currently show. ## Build a Contact Center / Build a Contact Center - [Build a Contact Center](/paths/contact-center.md): Build an AI-native contact center — trunks, numbers, IVR, ACD, CTI, handoff, and dashboards. ## Explore all docs / Email / Start here - [Email](/modalities/email/details.md): Turn a support mailbox into a contact-center channel. Mail is collected by the platform, threaded, and routed to agents by the same skills that route calls. ## Explore all docs / Email / Console - [Email in the console](/modalities/email/console.md): The Mailboxes admin screen and the agent's Email screen: every field, what it changes, and the settings that most often explain a mailbox that looks silent. ## Explore all docs / Voice / CTI (CSTA) - [CTI (CSTA) Overview](/modalities/voice/cti/overview.md): Drive third-party call control from an ISV app over the engine-native ECMA CSTA verb API: one connection, standard verbs, live events. - [CSTA Call Control](/modalities/voice/cti/call-control.md): Originate, hold, retrieve, transfer, consult, send DTMF, and release calls with the CSTA call-control verbs over the CTI control leg. - [CSTA Agent State](/modalities/voice/cti/agent-state.md): Drive agent work state from your app: login, ready, not-ready with aux reasons, and after-call-work. The ACD then delivers only to agents who can take work. - [CSTA Routing & Events](/modalities/voice/cti/routing-events.md): Register your app as a route point to steer calls ACD-style, and subscribe to the CSTA event stream to track call state. - [Screen pop rules](/modalities/voice/cti/screen-pop.md): How screen pop rules match a delivered or established call, how priority is resolved, and what each action, render surface, and URL token does. - [Aux reason codes](/modalities/voice/cti/aux-reasons.md): Manage the aux reason catalogue: shrinkage buckets, system-only codes, legacy slots, sort order, and deactivation that preserves history. ## Explore all docs / Voice / High Availability - [High Availability](/modalities/voice/high-availability.md): Run Voice across two or more nodes. A single host failure then never takes down calls, routing, or agent state. ## Add Realtime & Chat / Add Realtime & Chat - [Add Realtime & Chat](/paths/realtime-chat.md): Realtime channels (Pusher-compatible) and an embeddable chat widget for your web app. ## Explore all docs / Realtime / Start here - [Details](/modalities/realtime/details.md): A drop-in Pusher Channels alternative. Migrate a stock pusher-js app when you change one URL. Public, private, and presence channels run over WebSocket and QUIC. ## Explore all docs / Realtime / Reference - [SDK & API](/modalities/realtime/sdk-methods.md): Connect stock pusher-js or the FirstByte QUIC-native client. Both are Pusher-compatible: client config, channel auth, and server publish. ## Explore all docs / Realtime / Guides - [Cookbook](/modalities/realtime/cookbook.md): Copy-pasteable Pusher-compatible recipes: subscribe, presence, private channels, server publish, client events, and webhooks on FirstByte. - [Recipes](/modalities/realtime/recipes.md): End-to-end realtime builds on FirstByte: a live presence list and server-pushed notifications, with stock pusher-js and the Pusher server libraries. ## Explore all docs / Chat / Start here - [Chat](/modalities/chat/details.md): Embeddable web chat over MoQT. You get AI text agents, human handoff, forms, and skill queues on one connection. ## Explore all docs / Chat / Reference - [Widget & API](/modalities/chat/sdk-methods.md): Embed the chat widget, set its attributes, and speak the envelope protocol from a custom client over the raw MoQT chat tracks. ## Explore all docs / Chat / Guides - [Cookbook](/modalities/chat/cookbook.md): Copy-pasteable chat recipes: embed on a page, present a form, route to a skill, attach an AI agent, hand off to a human, theme, and mount programmatically. - [Recipes](/modalities/chat/recipes.md): End-to-end chat builds: a support widget with AI-to-human handoff and a lead-capture form that routes by result. ## Explore all docs / SMS / Start here - [SMS](/modalities/sms/details.md): Programmable SMS through any provider. Declarative provider manifests, delivery receipts, and 2-way conversations that run your flows. ## Other Modalities / Other Modalities - [Other Modalities](/paths/other-modalities.md): Streaming, robotics, games, data, crypto, and tunneling. Each is a typed client over one connection. ## Explore all docs / Stream / Start here - [Details](/modalities/streams/details.md): Broadcast live video to any number of viewers and serve it on demand — WHIP/RTMP/SRT/TUS2 ingest, CMAF, signed playback. - [Stream Console](/modalities/streams/console.md): Manage live streams and VOD: go live, publish assets, mint API keys, and watch analytics. ## Explore all docs / Optimus / Start here - [Details](/modalities/robotics/details.md): Connect a robot fleet: stream telemetry up, send commands down. ROS 2 CDR, Zenoh-over-QUIC, MQTT bridge, per-QoS lanes. - [Optimus Console](/modalities/robotics/console.md): Operate a robot fleet: browse robots, inspect telemetry, explore topics, and manage alerts. ## Explore all docs / Arena / Start here - [Details](/modalities/games/details.md): Build multiplayer rooms: sync world state, collect player inputs, and send events. Each channel uses the correct lane, and you write no netcode plumbing. - [Details](/modalities/netcode/details.md): Run your Unity Netcode game globally with no code change beyond swapping the transport. ## Explore all docs / Data / Start here - [Details](/modalities/data/details.md): Publish and subscribe like MQTT without a broker. You get topic filters, retained state, and reliable and datagram lanes. ## Explore all docs / Tunnel / Start here - [Overview](/modalities/tunnel/details.md): Expose a local service to the internet over QUIC with no inbound ports. Run remote desktop on the same transport. ## Explore all docs / Inference / Start here - [Details](/modalities/inference/details.md): Add a real-time voice AI agent to your calls, with turn detection, barge-in, tool calling, and near-zero response latency. ## Explore all docs / Core / Console - [Sites](/admin/sites.md): The dim_site record: code, timezone, country and region, the field limits the form enforces, and what deactivation does. - [Fleet billing metrics (robotics and games)](/platform/fleet-billing-metrics.md): How the robotics and games rate plans are metered, what each unit label counts, and which metrics can be split across tags for chargeback. ## Explore all docs / Core / Getting Started - [What are you building?](/start.md): Pick a goal and follow a guided path. The sidebar then shows only the steps for that goal. - [Introduction](/introduction.md): Polyglot SDKs for voice, streams, robotics, games, and data. All five modalities use one MoQT relay mesh. - [Quickstart](/quickstart.md): Pick a modality and build a working app in less than five minutes. - [Modalities](/modalities/overview.md): Build voice, live video, robot fleets, multiplayer, and pub/sub — mix them in one app over one connection. - [Changelog](/changelog.md): What changed on the FirstByte platform, newest first. - [VPN networks: address space, routes and endpoint](/modalities/vpn/networks.md): How a VPN network's tunnel CIDR, dial-in endpoint, pushed routes and TOTP policy are stored, served to the engine, and handed to a device. - [VPN webhooks](/modalities/vpn/webhooks.md): Subscribe to VPN session and credential events, verify signed deliveries, and inspect or redeliver them from the delivery log. - [VPN users and devices](/modalities/vpn/users-and-devices.md): How VPN users relate to a network, how per-device credentials and one-time tokens work, what revoke, suspend and delete reach the engine, and how pinned addresses, bandwidth buckets, connection caps and TOTP enrolment behave. - [VPN console](/modalities/vpn/console.md): Read the VPN overview screen: live per-shard session snapshots, durable session and refusal history, the credential projection, and source-address violations. ## Explore all docs / Core / Concepts - [Architecture](/concepts/architecture.md): One QUIC connection carries every modality that you build. This page shows what runs where. - [Authentication](/concepts/authentication.md): Authenticate your server, your app, and your end users with API keys, relay tokens, and JWTs. - [Tags](/concepts/tags.md): Key/value labels on every resource, inherited down the hierarchy, for cost allocation, ownership and environment separation. - [Realtime Tracks (MoQT)](/concepts/realtime-tracks.md): Go below the modalities and stream your own live tracks. The relay fans out audio, video, and robot/game frames to every subscriber. - [Turn Detection & Barge-In](/concepts/turn-detection.md): Tune when your voice agent listens, talks, and yields. This covers VAD, end-of-utterance, and barge-in interrupts. - [Coding Agents](/concepts/coding-agents.md): Scaffold FirstByte features with your coding agent. Resources include readable docs, an MCP server, a CLI, and ready-made skills. - [FirstByte agent setup](/agent-setup/prompt.md): A paste-ready prompt that points your coding agent at a real, verified FirstByte voice agent — connected, called, and transcribed. - [Credential types](/concepts/credentials.md): Every kind of key an account can issue, what each prefix means, which ones are per environment, and which single key is safe to publish. ## Explore all docs / Core / Raw RPC Format - [Raw RPC Format (legacy)](/rpc/overview.md): Wire-level reference for the legacy voice-RPC envelope. New code uses MoQT. - [Envelope Format](/rpc/envelope-format.md): Byte-level layout of an RPC frame on the wire. - [Method IDs](/rpc/method-ids.md): The full set of RPC methods and their u32 method_id constants. - [Types](/rpc/types.md): Field-level reference for every DTO. - [Audio Frames](/rpc/audio-frames.md): Bidirectional audio over QUIC unidirectional streams. - [Events](/rpc/events.md): Server-pushed CallEvent semantics, ordering, and reconnect behaviour. ## Explore all docs / Core / Telephony Reference - [Telephony Concepts](/glossary/concepts.md): Industry vocabulary that this documentation uses. - [Telephony Metrics](/glossary/metrics.md): The numbers that you monitor in voice deployments. - [Feature Matrix](/glossary/features.md): Telephony capabilities that FirstByte supports, mapped to the primitive that implements each one. ## Explore all docs / Core / Platform - [Webhooks](/platform/webhooks.md): One outbound-webhook system for every modality: register an endpoint, verify the signature, and read the delivery log when something does not arrive. - [Platform MCP Server](/platform/mcp.md): Connect an AI agent to the FirstByte control plane over MCP. Public read-only tools and privileged tools are separate, and each privileged call needs one narrow scope. - [WebRTC Vendor Adapters](/platform/webrtc-vendors.md): Browser, LiveKit, Daily, Chime, Twilio, and Vapi bridges. - [Telemetry](/platform/telemetry.md): Metrics, traces, CDRs, and SIP packet capture. - [Regulatory Headers](/platform/regulatory.md): STIR/SHAKEN, P-Asserted-Identity, and PIDF-LO geolocation. - [Traffic and bandwidth accounting](/platform/traffic-accounting.md): How per-tenant ingress and egress bytes are collected, bucketed, and aggregated across every modality behind the Traffic and Bandwidth screen. - [Infrastructure probes and managed storage](/platform/diagnostics.md): What the diagnostics.probeAll procedure probes, how to read each probe status, and how the managed per-tenant recording bucket is provisioned and overridden. - [QUIC transport metrics](/platform/quic-transport-metrics.md): How the observability screen derives per-tenant QUIC connection, throughput, RTT, and path-migration numbers from 1-minute ClickHouse rollups. - [Tenant activity logs](/platform/tenant-logs.md): The per-org activity log behind the console Logs screen: event schema, sources, levels, the per-minute admission budget, retention, and how windows, filters, cursor paging and the tail gap flag work. - [Alert delivery and Slack routing](/platform/alerts.md): How Voice alert rules are evaluated centrally and delivered to your org's Slack workspace, and how that differs from webhook event delivery. - [Metered billing and cost allocation](/platform/billing.md): How billing periods, rate plans, metered units, projections, tag-based cost allocation, voice call rating, prepaid top-ups, plan pools and invoices fit together. - [Settings](/platform/settings.md): The six tabs of the account Settings screen: sign-in security and SSO, MCP access keys, white-label branding, provider and vendor credentials, recording storage, and the audio library. - [Audit log](/platform/audit-log.md): Who changed what, and when: the append-only admin audit log, its entry fields, the actions and resource types it records, and how to read it over the API. ## Explore all docs / Core / Admin API (raw RPC, no SDK) - [Admin API Overview](/admin/overview.md): Manage trunks, service accounts, certificates, and AI agent DAGs. - [Trunks](/admin/trunks.md): Configure SIP trunks: addressing, codecs, inbound rules, AI handoff. - [Service Accounts](/admin/service-accounts.md): Mint, list, and revoke the JWT signing keys your SDKs use. - [Certificates](/admin/certificates.md): Hot-swap the gateway's TLS material without dropping connections. - [Agent DAGs](/admin/agent-dags.md): Define and version the AI orchestration graphs that calls bind to. ## Explore all docs / Core / Admin console - [Organisation](/admin/organisation.md): Bootstrap a brand-new tenant. - [Agent Directory](/admin/agent-directory.md): The unified human and LLM agent roster: status vocabulary, hierarchy assignments, skills, bulk actions, deactivate vs delete, and the seat cap. - [Branding and white-labelling](/admin/branding.md): Set the product name and logo that a deployment shows on its login page, top bar, and browser title. - [Org chart: managers, leaders, and agent assignment](/admin/org-chart.md): How the team manager, team leader, and agent hierarchy is stored, edited, deactivated, and filtered in the FirstByte admin console. - [Bulk agent import (CSV)](/admin/agent-bulk-import.md): Upload a CSV of agents, preview the diff against your existing roster, and commit inserts and updates row by row. - [Audit log](/admin/audit-log.md): The audit_log record shape, the action and resource-type vocabularies, and how to read entries over the API instead of the console. - [Members, org roles and per-product grants](/admin/members.md): How org roles, per-product grants, and invites work in the Members screen, including the guard rails the server enforces. - [Screens (module visibility)](/admin/modules.md): Per-vertical module visibility: what Settings → Screens toggles, where the denylist is stored, and how to read or write it over the API. - [Portal hub: product visibility, entitlement and subscriptions](/admin/hub.md): How the portal hub decides which product cards to show, what the org subscription record stores, and where each Manage link points. - [API keys in the console](/admin/api-keys.md): Create, scope, and revoke the long-lived control-plane credentials that your own integrations authenticate with. ## Explore all docs / Voice / Transport to Web & Apps - [Transport to Web & Apps Overview](/modalities/voice/transport-web/overview.md): How browser and mobile clients reach the voice stack over QUIC: WebTransport first, with a WebRTC codec tap and a clear statement of the fallback status. - [One-Line WebRTC Diversion](/modalities/voice/transport-web/webrtc-diversion.md): Reuse the browser's WebRTC audio pipeline for capture and Opus encoding, then divert the encoded frames onto QUIC in a single call. - [RTCRtpScriptTransform](/modalities/voice/transport-web/rtcrtpscripttransform.md): How the SDK taps encoded Opus frames off WebRTC in a Worker and forwards them over QUIC. - [WebTransport](/modalities/voice/transport-web/webtransport.md): The browser-native QUIC path for voice media and data: one session on :443, MoQT riding it over streams, and the dev cert hash. - [Browser Audio Capture](/modalities/voice/transport-web/browser-audio-capture.md): Capture the microphone in the browser, encode it to Opus, and play received audio back. You never touch raw PCM. - [Mobile App Transport](/modalities/voice/transport-web/mobile-app.md): Carry voice from iOS and Android apps over QUIC. This page covers the planned native path and what works today. - [Browser Compatibility](/modalities/voice/transport-web/browser-compatibility.md): Which browsers run the in-browser voice path today, what each one is missing, and what to do everywhere else. ## Explore all docs / Voice / Comparison & Benchmarks - [Comparison & Benchmarks](/modalities/voice/benchmarks.md): Sourced voice benchmarks: calls per CPU vs Asterisk, QUIC turn latency, and HTTP/3 throughput. The page includes the cost model, the methodology, and the caveats. ## Explore all docs / Voice / Migration - [Migration Overview](/modalities/voice/migration/overview.md): Move an existing voice workload onto FirstByte Voice. Swap only the media transport. Keep your runtime, agent, models, and business logic. - [From Self-Hosted LiveKit](/modalities/voice/migration/from-livekit.md): Move a self-hosted LiveKit voice deployment onto QUIC transport. Install the transport plugin in your agent, put us in front of your room, or swap one import in the browser. - [From WebRTC](/modalities/voice/migration/from-webrtc.md): Move a raw WebRTC audio client onto the QUIC media plane. Divert the encoded Opus frames. Keep your capture graph. Drop ICE/DTLS/SRTP and the SFU. - [From Twilio Media Streams](/modalities/voice/migration/from-twilio.md): Move a Twilio Programmable Voice / Media Streams integration onto QUIC. This page shows what ships today and the Media Streams adapter on the roadmap. - [From Asterisk / FreeSWITCH](/modalities/voice/migration/from-asterisk-freeswitch.md): Run Asterisk or FreeSWITCH beside your workspace as a SIP peer. Then move trunks and numbers over on your own schedule. - [From Custom WebSocket Audio](/modalities/voice/migration/from-websocket-audio.md): Move a bespoke WebSocket audio bridge onto FirstByte Voice with the PCM16 WebSocket proxy that already backs the Vapi vendor bridge. - [Migration Checklist](/modalities/voice/migration/checklist.md): A step-by-step cutover plan: audit, pick a path, provision, canary, cut trunks and numbers, check MOS and latency, and keep a rollback ready. ## Explore all docs / Voice / Console - [Text test sessions and turn re-runs](/modalities/voice/test-chat.md): Test an agent's prompt in text mode: how a session stores turns, what a re-run replays, and what happens to set-aside turns. - [Console: numbers and inbound binding](/modalities/voice/console/numbers.md): How the Numbers screen binds a DID to a trunk and an agent, what the save writes to Supabase and Redis, and why status and publish state decide whether inbound calls connect. - [The agent editor in the console](/modalities/voice/runtime/agent-editor.md): How the agent workspace in the Voice AI console maps onto agent_config, what each editor tab writes, the validated turn-detection ranges, the draft/Deploy lifecycle, and the three test buttons. - [Supervisor Inbox and Mid-Call Join](/modalities/voice/cti/supervisor-inbox.md): What lands in the supervisor inbox, how the agent runtime flags escalations, and what listen, whisper, and barge mean for audio routing. - [Reading the CDR grid](/modalities/voice/observability/cdr-explorer.md): How the CDR explorer deduplicates rows per call, what the filters and search box match, why the summary tiles and the pager total differ, and when to drop into ClickHouse. - [Recordings in the console](/modalities/voice/observability/recordings-console.md): How the recordings screen merges CDR rows with storage objects, why some rows have no participants, and how signed playback, filtering and deletion behave. - [Voice AI console: Overview screen](/modalities/voice/observability/console-overview.md): How the Overview screen sources its month-to-date KPIs, determines which calls are active, and tracks the four steps to a number that answers. - [Supervising a live call](/modalities/voice/observability/live-call-supervision.md): How the active-call index decides a call is live, and how listen, whisper, and barge-in supervision work. - [The Monitoring console screen](/modalities/voice/observability/monitoring-console.md): What each tab of the Monitoring & Observability screen measures, which data source backs each tile, and how the time window, filters and refresh cadence behave. - [Live agent sessions](/modalities/voice/observability/live-sessions.md): How the live Sessions roster is built: session rows, agent states, presence expiry, and why the header counters ignore the filters. - [Agent activity rail and transcripts](/modalities/voice/observability/agent-activity.md): How the Voice AI activity rail selects, orders, and labels AI-handled calls, and what the transcript drawer shows. - [Agent orchestrator and live agent events](/modalities/voice/observability/agent-orchestrator.md): How the orchestrator screen binds trunks to agents, what each live agent event line means, and how per-trunk session counts are derived. - [External agent media credentials](/modalities/voice/api/external-agents.md): What the voice agent key, secret, handle and /media/ endpoint path authenticate, and how they differ from realtime app keys. - [The voice AI agent workspace](/modalities/voice/console/agent-workspace.md): The agent rail, the reachability pip, in-engine and external agent creation, the eight workspace tabs, and the ?agent= / ?view= deep links. - [Portal dashboard](/modalities/voice/console.md): How the tenant dashboard scopes and sources its numbers: inventory counts, today's call KPIs, de-duplicated CDR rows, entitlements, supervisor requests, and the analytics-unreachable banner. ## Explore all docs / Voice / SDK Reference - [JavaScript / TypeScript](/modalities/voice/sdk/javascript.md): The typed Voice SDK for JS/TS: the Voice client, Calls/Call, AudioBridge, Agents, and the browser softphone helpers. - [Python](/modalities/voice/sdk/python.md): Voice SDK reference for Python. Originate and control calls, then bridge audio over QUIC/MoQT. - [Go](/modalities/voice/sdk/go.md): The Voice SDK for Go. Originate, transfer, and hang up calls, bridge audio, and attach an AI agent from one typed client. - [Rust](/modalities/voice/sdk/rust.md): Originate, transfer, and stream call audio from Rust with the synchronous Voice client and the MoQT AudioBridge. - [Events & Callbacks](/modalities/voice/sdk/events.md): A reference for each callback in the Voice SDK: per-frame audio, transport session state, and the human-agent control channel. It also shows where there is no event stream. ## Explore all docs / Voice / API Reference - [Sessions](/modalities/voice/api/sessions.md): How the SDK authenticates and establishes a live voice session: the control-plane token exchange, the relay session, and namespace auth. - [Calls](/modalities/voice/api/calls.md): Control-plane API for the call lifecycle: originate, get, transfer, and hangup. Every operation keys off the call_sid. - [Agents](/modalities/voice/api/agents.md): Attach a server-side voice agent to a live call. The AgentSpec defines the agent's mode, providers, turn detection, and tools. - [Transport & Track API](/modalities/voice/api/transport.md): The MoQT primitive under the Voice SDK: publish and subscribe caller audio on voice//{uplink,downlink}, with capability tags and namespace auth. - [Telephony API](/modalities/voice/api/telephony.md): Control-plane operations for carrier connectivity: create and manage SIP trunks, register phone numbers, and assign numbers to a trunk, agent, or flow. - [Webhooks](/modalities/voice/api/webhooks.md): Notify your backend when a call is placed, answered, transferred, or ends — signed event POSTs plus the real-time event bus. - [Recordings API](/modalities/voice/api/recordings.md): List call recordings, mint a presigned download URL, and get pushed a webhook the moment a recording lands. Two operations plus one event. - [Errors](/modalities/voice/api/errors.md): Voice error reference: call-failure causes, Q.850 mapping, auth, transport, and tool errors, with handling patterns. ## Explore all docs / Voice / Troubleshooting - [Call Does Not Connect](/modalities/voice/troubleshooting/call-not-connecting.md): Diagnose a call that never reaches in_progress: trunk registration, SIP auth, number format, ring timeout, and Q.850 cause codes, with fixes. - [One-Way Audio](/modalities/voice/troubleshooting/one-way-audio.md): Audio flows in only one direction on a call. The four causes — NAT/RTP path, SDP direction, codec mismatch, dropped bridge handle — and how to fix each. - [High Turn Latency](/modalities/voice/troubleshooting/high-latency.md): Diagnose and fix slow agent replies: provider round-trips, region distance, cascade vs speech-to-speech, transcode, and cold models. - [Barge-in Not Working](/modalities/voice/troubleshooting/barge-in.md): The agent talks over the caller or does not stop when the caller interrupts. Find the cause in the VAD thresholds, the TTS mic gate, or the provider path, and fix it. - [Poor Voice Isolation](/modalities/voice/troubleshooting/voice-isolation.md): Diagnose and fix noisy, clipped, or echoey caller audio: browser noise suppression, first-syllable clipping, and speakerphone echo on telephony legs. - [SIP Trunk Issues](/modalities/voice/troubleshooting/sip-trunk.md): The trunk does not register or route calls? Diagnose SBC IP and credentials, register expiry, channel limits, compliance headers, and firewall ports. - [Browser Audio Issues](/modalities/voice/troubleshooting/browser-audio.md): Why browser capture or playback fails with Voice, and the fix for each symptom, from the encoded-transform gate to autoplay. - [Self-Hosted Deployment Issues](/modalities/voice/troubleshooting/self-hosted.md): Diagnose the problems unique to the voice engine on your own hardware: NIC ownership and reboot cutovers, DNS/tenant provisioning, sealed credentials, and unattached inference. ## Explore all docs / Voice / Cookbooks - [Divert WebRTC Audio to FirstByte](/modalities/voice/cookbooks/divert-webrtc.md): Use captureMicrophone to keep your browser WebRTC audio pipeline and send the encoded Opus over QUIC. The ICE/DTLS/SRTP transport is not used. - [Bridge a LiveKit Agent](/modalities/voice/cookbooks/bridge-livekit.md): Use the vendor-bridge front-proxy to connect a call to an unchanged LiveKit agent when your LiveKit room must stay in operation. - [Bridge a Pipecat Agent](/modalities/voice/cookbooks/bridge-pipecat.md): Connect a Pipecat pipeline to the audio bridge over raw MoQT. This page shows the real seam today and the illustrative shape of a dedicated transport. - [Place an Outbound Call](/modalities/voice/cookbooks/outbound-call.md): Originate a call over a SIP trunk from code with calls.originate. Then poll calls.get for its status. - [Receive an Inbound Call](/modalities/voice/cookbooks/inbound-call.md): Answer an inbound call. Route it to an AI agent or a human, or bridge the caller audio into your own code. All paths key on the same voice/ tracks. - [Stream Audio to ASR](/modalities/voice/cookbooks/stream-to-asr.md): Feed caller uplink audio to your own speech-to-text engine as PCM16 @ 16 kHz. - [Send TTS Audio Back](/modalities/voice/cookbooks/tts-back.md): Play synthesized audio back to the caller with bridge.publishDownlink(). - [Transfer to a Human](/modalities/voice/cookbooks/transfer-human.md): Hand a live call to a person: a PSTN number (SIP REFER) or a human-agent queue. The same sid continues. - [Record and Analyze a Call](/modalities/voice/cookbooks/record-analyze.md): Record both legs of a call as a stereo WAV. Fetch the recording URL from the CDR. Split the channels for per-speaker analysis. ## Explore all docs / Voice / Recipes - [Build a Voice Agent in TypeScript (no framework)](/modalities/voice/recipes/typescript-agent.md): Write your own phone voice agent as a plain Node process on the FirstByte SDK: register a worker over QUIC, receive caller audio, run your own STT/LLM/TTS, and speak back. No LiveKit, no WebRTC, no inbound ports. - [Run a LiveKit Agent on FirstByte Transport](/modalities/voice/recipes/livekit-transport.md): End-to-end: install the transport plugin into your unmodified LiveKit agent, register a worker over QUIC, route a number to it, and take a real call. No LiveKit server is needed. - [Outbound Calls from a LiveKit Agent](/modalities/voice/recipes/livekit-outbound.md): Dial one number or run a paced campaign from your livekit-agents worker. The LiveKit-shaped API in the transport plugin wraps the administration API; the same register-and-wait worker answers. - [Embed an Agent Widget on Your Website](/modalities/voice/recipes/web-embed.md): Drop a voice, text, and video AI-agent widget into any page. One tag plus one backend route. The browser leg runs on MoQT over QUIC — no WebRTC SFU, and no credential in the page. - [Pipecat Agent with FirstByte Transport](/modalities/voice/recipes/pipecat-transport.md): Build an end-to-end app that answers real calls with a Pipecat pipeline over QUIC/MoQT. It uses the shipping audio-bridge spine today, and shows the shape of a first-class transport. - [Outbound Sales Agent](/modalities/voice/recipes/outbound-sales.md): A paced outbound dialer that originates calls with an AI agent, handles no-answer and voicemail, and transfers hot leads to a human closer. - [Customer Support Agent with Handoff](/modalities/voice/recipes/support-handoff.md): An inbound support agent that answers, resolves with tools, and escalates to a human. The call sid stays the same across the handoff. - [Browser Voice Agent](/modalities/voice/recipes/browser-agent.md): Click-to-talk in the browser: capture the mic as encoded Opus and play the agent's reply, all over QUIC. There is no WebRTC transport and no SFU. - [Voice Agent Platform Backend](/modalities/voice/recipes/platform-backend.md): A runnable multi-tenant backend: provision tenants under .sip.firstbyte.fast, mint scoped keys, publish agents, and drive calls per tenant. ## Explore all docs / Meet / Console - [Meet console: rooms and joining](/modalities/meet/console.md): How meetings exist, what a join token grants, how to moderate a live room, and how to point an organization at a conferencing engine and its signing key. - [Room lifecycle and names](/modalities/meet/room-lifecycle.md): How a meeting room comes into existence on first join, when the engine reaps it, what a room name may contain, and what closing a room does to joins that arrive after it. ## Explore all docs / Chat / Console - [Chat webhooks](/modalities/chat/webhooks.md): Subscribe an HTTPS endpoint to chat conversation events from the Contact Center console. - [Chat Widgets Console](/modalities/chat/console.md): The chat widgets screen: what a widget record holds, how it binds to an org and a target, and how each field becomes an attribute on the embed element. ## Explore all docs / SMS / Console - [SMS in the console](/modalities/sms/console.md): What the SMS screen in the Contact Center console is made of, which parts live in this source file, and which parts come from the shared screen body. ## Explore all docs / Realtime / Console - [Realtime Console](/modalities/realtime/console.md): Manage realtime channels: create app keys, see live connection stats, and configure webhooks. - [App settings](/modalities/realtime/app-settings.md): Configure a realtime app's name, availability, capability flags, and allowed browser origins, and understand what deleting an app removes. - [Realtime engine telemetry](/modalities/realtime/telemetry.md): Where the console's live counters and history charts come from: engine-written Redis keys, the wired heartbeat, the minute sampler, coverage, and why values render as em-dashes. - [Message history](/modalities/realtime/message-history.md): The per-app audit trail of published messages: what the engine records, how long it keeps it, how payloads are trimmed, which publish path each message came from, and who is allowed to read it. - [Realtime REST publish and request signing](/modalities/realtime/rest-publish.md): Publish an event to a realtime channel over the signed REST endpoint, and understand the accepted-but-queued result the Event Creator can return. - [API keys](/modalities/realtime/app-keys.md): Create realtime apps, read the one-time secret, rotate credentials, and tell app keys apart from voice agent keys. - [Realtime webhooks](/modalities/realtime/webhooks.md): Subscribe an HTTPS endpoint to realtime event groups, verify signed deliveries, and inspect or redeliver from the delivery log. - [Publishing from the console](/modalities/realtime/console-publish.md): How the Event Creator publishes an event, what each of its three response states means, and how to reproduce the same publish as a signed REST call. - [Realtime Console Shell and App Scope](/modalities/realtime/console-shell.md): How the Channels console shell resolves your session, lists apps, scopes each tab to an org or an app, and what it shows when a screen fails. ## Explore all docs / Stream / Console - [Stream API keys, signing keys and webhook deliveries](/modalities/streams/developers.md): How stream API keys, scopes, environments, signing keys, webhook endpoints and event deliveries work on the Developers screen. - [VOD assets: upload, transcode, poster and playback](/modalities/streams/vod-assets.md): The lifecycle of a stored asset: how it gets created, what auto-transcode produces, how poster frames are picked, which playback URLs exist, and what the player reports back. - [Ads: ad breaks, ad videos, VAST and VMAP](/modalities/streams/ads.md): How to put ad breaks into a live stream, which ads play in a break, how to connect your own ad server with a VAST or VMAP tag, and which events the player sends. - [DRM: content protection for VOD and live](/modalities/streams/drm.md): How to turn on DRM for a recorded asset or a live input, what the player and the license server do, and how to connect a DRM vendor for Widevine, PlayReady and FairPlay. - [Stream analytics and viewer QoE](/modalities/streams/analytics.md): How the Analytics screen measures viewer quality of experience: glass-to-glass latency, rebuffer ratio, first frame, unique viewers, watch time, and per-PoP cache hit. - [Live input states and health signals](/modalities/streams/live-input-states.md): What active, idle, and errored mean on a live input, and how to read the viewer, egress, and glass-to-glass columns in the live streams table. - [Webhook delivery records and resend](/modalities/streams/webhook-deliveries.md): How to read a stream event delivery record, how its queued, delivered, and failed states are decided, what the attempt counter means, and how to page and resend deliveries. - [Streams usage and billing](/modalities/streams/usage-billing.md): How streams consumption is metered, how entitlement pools are drawn down, how usage is attributed by tag, and how invoices are issued. - [Streams latency console](/modalities/streams/latency-console.md): Compare MoQT, WebRTC (WHEP), and HLS glass-to-glass on one timecoded source, measured off the painted pixels. - [MoQT inspector](/modalities/streams/inspector.md): Watch the control messages and data streams of one relay session, and measure a track switch. - [Streams metrics reference](/modalities/streams/metrics.md): How the Stream overview numbers are computed: windows, bucket sizes, viewer sampling, glass-to-glass timestamps, cache hit ratio, and metered usage. - [Streams webhooks](/modalities/streams/webhooks.md): How the Streams webhook picker builds event-type subscriptions, how patterns are matched, and how endpoints are signed, tested, paused, and rotated. - [Monitoring a live input](/modalities/streams/monitoring.md): Read the live QoE snapshot on a stream's detail page, interpret viewers, glass-to-glass, bitrate and dropped, and understand embed URL options and recording assets. - [Relay network and edge cache](/modalities/streams/relay-network.md): How stream PoPs register, which viewer regions route to each PoP, how liveness and the edge cache-hit ratio are computed, what PoP statuses mean for viewers, and what to do when telemetry is unavailable. - [Streams Overview KPIs](/modalities/streams/overview-kpis.md): What each tile on the Streams Overview screen measures, which query feeds it, how often it refreshes, and why some figures render as a floor or a dash. ## Explore all docs / Stream / Guides - [Cookbook](/modalities/streams/cookbook.md): Task-oriented streams snippets: create inputs, ingest via RTMP/SRT/WHIP/TUS2, mint signed playback, publish and view, rotate keys. - [Recipes](/modalities/streams/recipes.md): End-to-end streams examples: browser go-live with signed playback, an RTMP-to-many event, and a TUS2 VOD-to-playback pipeline. ## Explore all docs / Stream / Reference - [SDK Methods](/modalities/streams/sdk-methods.md): The typed streams surface: control-plane Streams client, BroadcastPublisher, BroadcastViewer, signing keys, signed playback URLs. ## Explore all docs / Optimus / Console - [Connection telemetry](/modalities/robotics/connection-telemetry.md): How the connection telemetry screen derives RTT percentiles, congestion window, path migrations, and byte counters from a robot's relay session. - [Teleop Session Safety and Authority](/modalities/robotics/teleop-safety.md): The teleop session state machine, motion-authority epochs and sequence numbers, command-frame authentication counters, divergence, and supervisor take-over. - [Robotics audit log](/modalities/robotics/audit-log.md): The fact_robotics_audit record: actor, action kind, target, detail, severity, and how to read the log over the API. - [MQTT ingress bridge and topic policies](/modalities/robotics/mqtt-bridge.md): How the MQTT ingress bridge forwards topics into ROS 2 / Zenoh, how topic policies control QoS, retained payloads and access, and what the console reports per client and per topic. - [Teleoperation Sessions and Operator Dispatch](/modalities/robotics/teleop-sessions.md): The teleop session record, its safety states, and how the ACD matches a robot's distress call to a certified operator. - [Operator Training and Certification](/modalities/robotics/training.md): How a drill scenario is defined, how the safety core grades a run, and how curriculum completion produces a certification that gates dispatch. - [Registering a robot and its capability manifest](/modalities/robotics/fleet-registration.md): How a robot record and its capability manifest are written, what each field drives downstream, and how editing, retiring, and tagging behave. - [Operators and certifications](/modalities/robotics/operators.md): How an operator joins the roster, what presence and certification levels mean, and how dispatch matches a robot's required certification to a certified operator. - [Robotics: Teleop Operators, Presence and Job Matching](/modalities/robotics/teleop-operators.md): How an operator publishes Ready/Aux presence, how the ACD matches a robot job to a certified operator by lowest RTT, and what accepting or declining a ring offer does. - [Safety audit log and reject codes](/modalities/robotics/safety-audit.md): How the safety audit records state transitions, faults, rejects, and control events, how entries are attributed to a session, and what each reject code means. - [Teleop session log](/modalities/robotics/session-log.md): The per-session record behind the robotics session log: fields, state and fault columns, command counters, epoch attribution, and CSV export. - [Robotics webhook events](/modalities/robotics/webhooks.md): How fleet event groups and event-type tokens work, how a subscription matches an event, and how to verify and replay robot-discovery deliveries. - [Fleet health and the degraded telemetry state](/modalities/robotics/fleet-health.md): How the robotics Overview counters are derived, why liveness can read as unknown, and which numbers stay authoritative when the telemetry rollup is down. - [Fleet directory: row fields and status model](/modalities/robotics/fleet-directory-fields.md): What ok, warn, bad and offline mean in the fleet directory, which telemetry populates each row field, how missing values render, and which bulk actions are live. ## Explore all docs / Optimus / Guides - [Cookbook](/modalities/robotics/cookbook.md): Task-oriented snippets: publish telemetry, teleop, QoS lanes, late-join retain, cross-language demux, multi-topic fan-in, graceful shutdown. - [Recipes](/modalities/robotics/recipes.md): End-to-end worked examples: an on-robot ROS 2 bridge, a cloud teleop console, and a multi-robot fleet telemetry collector. ## Explore all docs / Optimus / Reference - [ROS 2 RMW drop-in transport](/modalities/robotics/rmw.md): rmw_clutchcall_cpp: a real ROS 2 middleware that replaces DDS/Zenoh so unmodified nodes talk over WAN-grade QUIC. One apt install, one env var, no broker. - [SDK Methods](/modalities/robotics/sdk-methods.md): The typed Robotics SDK: publishTelemetry/Command, subscribeTelemetry/Command, QoS profiles, the type-name-prefixed CDR wire frame, and events. ## Explore all docs / Arena / Console - [Console](/modalities/games/console.md): How the Arena console derives its KPIs, live sessions board, server fleet view, spectator studio, and per-workspace module visibility. - [Spectator studio](/modalities/games/spectator-studio.md): How the games spectator studio builds its on-air panel, eligible list, bitrate ladder, and viewer figures from the broadcast records the control plane returns. - [Console (allocations and join codes)](/modalities/netcode/console.md): How the Arena console mints relay allocations and join codes, issues JWKS-signed host tokens, manages API keys, and how clients discover the QUIC endpoint. - [Netcode (Unity): Direct vs Relay connection modes](/modalities/netcode/direct-vs-relay.md): How the Unity QUIC transport chooses between Direct and Relay, the fields each mode needs, and how join codes resolve to a relay endpoint. - [Reading relay health](/modalities/netcode/relay-health.md): How the Relays screen derives live, idle, and offline for each QUIC edge, how telemetry is attributed by SNI, and what these signals cannot tell you. - [Netcode native plugins and platform matrix](/modalities/netcode/native-plugins.md): How to read the Netcode SDK catalog: per-platform native binaries, where each artifact goes in a Unity project, ABI selection, signing requirements, and what the channel and status chips mean. ## Explore all docs / Arena / Guides - [Cookbook](/modalities/games/cookbook.md): Short, copy-pasteable recipes for the games modality: roles, ticks, inputs, state, events, reconnect, and namespaces. - [Recipes](/modalities/games/recipes.md): End-to-end worked examples: an authoritative 1v1 duel server, a browser player client, and a reliable lobby + chat layer. - [Cookbook](/modalities/netcode/cookbook.md): Task snippets for the Unity transport: install, swap UnityTransport, pick lanes, read RTT, run headless, mint tokens. - [Recipes](/modalities/netcode/recipes.md): End-to-end: port the ECS racing sample onto the FirstByte transport, and stand up a headless dedicated server with matchmaking. ## Explore all docs / Arena / Reference - [SDK Methods](/modalities/games/sdk-methods.md): The typed Games surface: client, publishState/subscribeState, publishInput/subscribeInputs, publishEvent/subscribeEvents, handles. - [SDK methods](/modalities/netcode/sdk-methods.md): Install com.clutchcall.transport via UPM, swap UnityTransport for ClutchCallTransport, and the inspector + UTP surface. ## Explore all docs / Data / Guides - [Cookbook](/modalities/data/cookbook.md): Short, copy-pasteable how-to snippets for the data modality: publish, subscribe with + / # filters, retained state, lanes, fan-in, and JSON. - [Recipes](/modalities/data/recipes.md): End-to-end worked examples for the data modality: an IoT device + dashboard with retained state, and a typed microservice event bus. ## Explore all docs / Data / Reference - [SDK Methods](/modalities/data/sdk-methods.md): The typed Data pub/sub surface: the Data client, publish, subscribe with + / # filters, DataMessage, retained messages, and the wire helpers. ## Explore all docs / Crypto / Start here - [Solana BDN over QUIC](/modalities/crypto/details.md): Get low-latency Solana data in and land transactions fast. Feeds arrive over QUIC. The BDN fans transactions across the edge mesh to validator TPUs. - [Crypto Console](/modalities/crypto/console.md): Operate the BDN: watch feeds and the network, submit transactions, build MEV bundles, and track landings. ## Explore all docs / Crypto / Console - [Crypto console status and org scoping](/modalities/crypto/console-status.md): How the crypto console shell works: the BDN status pip, the fixed mainnet cluster pill, which screens need an active organisation, and what the sidebar runtime note means. - [Crypto API keys and BYO-RPC endpoints](/modalities/crypto/api-keys.md): What the bdn, tpu, feeds and read scopes authorise, how to mint and revoke a key, and how per-tenant RPC and Jito endpoints are sealed and used on a submit. - [Configuring a BDN root and its edges](/modalities/crypto/bdn-configuration.md): Where BDN node role, upstream root, leader target, and dedup TTL are persisted, how per-edge health is derived, and how a config change reaches a running node. - [Submit API reference](/modalities/crypto/submit-api.md): Request path, query parameters, accepted transaction encodings, response fields, leader targeting, and retry behaviour for the crypto submit routes. - [TPU landing: engine-side configuration and leader schedule](/modalities/crypto/tpu-landing.md): How mod_solana_tpu discovers the leader schedule, what each reported config key means, and how per-leader land success and p50 latency are read in the console. - [MEV bundles over the BDN](/modalities/crypto/mev-bundles.md): Submit up to five ordered, atomic Solana transactions as a Jito bundle, place the tip transfer inside the bundle, and trace a bundle id back to a landed slot. - [Private Solana feeds and feed cadence](/modalities/crypto/private-feeds.md): Point ingest at your own Yellowstone-Geyser endpoint, understand how the x-token is sealed, and tune tick_ms, blockhash_every and fee_every. - [Reading the transaction ledger](/modalities/crypto/transaction-ledger.md): How the Transactions screen renders each submitted transaction: the recent window, the landed/dropped/dedup states, route and attribution columns, the pipeline drawer, and the CSV export. - [Multichain: chain registry and short-id routing](/modalities/crypto/multichain.md): How the BDN chain registry maps a one-byte short-id to a per-chain MoQT namespace, how chains are registered and enabled per organisation, and what a non-Solana submit path looks like. - [Analytics: what the numbers measure](/modalities/crypto/analytics.md): How the BDN analytics screen computes land rate, land latency percentiles, fan-out volume, dedup hit ratio, per-leader attribution, and feed freshness against target. - [Crypto console metrics reference](/modalities/crypto/metrics.md): How the crypto overview screen computes land rate, what the KPI strip and BDN edge counts mean, and why the submit endpoint reports not deployed. - [BDN metrics and observability](/modalities/crypto/observability.md): How the Usage & billing screen derives tx_sent, fan-out, land success, land latency percentiles, block compression, short-id table size, and get-txs recovery. ## Explore all docs / Crypto / Guides - [Cookbook](/modalities/crypto/cookbook.md): Short, copy-pasteable tasks for the Solana BDN: subscribe to feeds, submit transactions, target leaders, and tune dedup over QUIC. - [Recipes](/modalities/crypto/recipes.md): End-to-end Solana BDN walkthroughs: a feed-driven transaction submitter and a private gossip/Geyser feed consumer, all over QUIC. ## Explore all docs / Crypto / Reference - [SDK methods](/modalities/crypto/sdk-methods.md): Subscribe to Solana BDN feed tracks with the raw MoQT client and deliver transactions over QUIC; the Preview typed Crypto surface. ## Explore all docs / Tunnel / Console - [Tunnel operator console](/modalities/tunnel/console.md): Read the tunnel overview KPIs, egress and estimated cost, and manage tunnel CLI accounts and their registered devices. - [CLI releases and the update pointer](/modalities/tunnel/releases.md): How the tunnel CLI release pointer works: what GET /rnp/version/latest returns, how channels drive the auto-updater, and how releases are published and rolled back. - [Tunnel webhook events](/modalities/tunnel/webhooks.md): The tunnel session events you can subscribe to, how event tokens are matched, and how to verify and reconcile signed deliveries. - [Usage & billing](/modalities/tunnel/billing.md): How the tunnel wallet works: metered egress, the free tier and per-GB price, ledger kinds and deltas, top-ups, and reconciling debits against usage counters. - [Operator Console](/modalities/tunnel/operator-console.md): How the Tunnel operator console gates access with the server-side operator allowlist, how the shared portal session works, and what each screen covers. ## Explore all docs / Tunnel / Guides - [Cookbook](/modalities/tunnel/cookbook.md): Short copy-pasteable tunnel tasks: expose localhost, reserve a subdomain, tunnel SSH/Postgres, P2P links, share webhooks, and remote desktop. - [Recipes](/modalities/tunnel/recipes.md): End-to-end tunnel walkthroughs: ship a public demo URL, a private cross-NAT database link, and a remote-desktop session over raw QUIC. ## Explore all docs / Tunnel / Reference - [SDK & CLI](/modalities/tunnel/sdk-methods.md): The tunnel CLI surface: keys, domains, http, tcp, udp, connect, p2p, plus config, env vars, and the data-plane engine flags. ## Explore all docs / QuickDesk / Start here - [Overview](/modalities/quickdesk/overview.md): QuickDesk gives self-hosted remote desktop and unattended access over QUIC. It needs no inbound ports, is encrypted end to end, and uses the same transport as the rest of the platform. - [How QuickDesk works](/modalities/quickdesk/how-it-works.md): This page explains the QUIC connect-by-slug transport, the parked-stream relay, and the end-to-end encryption model of a QuickDesk session. - [Clients & downloads](/modalities/quickdesk/clients.md): Install QuickDesk on desktop and mobile, make your first connection by device id, and set up unattended access. - [Self-host the account server](/modalities/quickdesk/self-host.md): Run QuickDesk's account and API server (login/SSO, address book, device registry, audit, and recording) on your own infrastructure. - [Operator console](/modalities/quickdesk/operator-console.md): The QuickDesk web admin shows devices, live sessions and files, recordings, address books, and client release management. - [Security & audit](/modalities/quickdesk/security.md): This page explains QuickDesk's trust model: end-to-end encryption over an untrusted relay, credential handling, permissions, and the audit and recording trail. ## Explore all docs / QuickDesk / Console - [Session recordings](/modalities/quickdesk/recordings.md): How session recordings reach the store, what the recording index holds, how playback links are minted, and how to list and fetch recordings over the API. - [QuickDesk fleet metrics](/modalities/quickdesk/fleet-metrics.md): How the QuickDesk Overview tiles are counted: devices, heartbeat-based online state, 24h sessions, recordings and storage, address books and peers. - [Device registry & force-disconnect](/modalities/quickdesk/device-registry.md): What a QuickDesk device row contains, how online status and last-seen are derived from the client heartbeat, and what a force-disconnect does to a live session. - [Desktop releases and auto-update](/modalities/quickdesk/releases.md): How the QuickDesk desktop client discovers updates via /version/latest, what the stable and beta channels do, and how to publish or roll back a release. - [Address books](/modalities/quickdesk/address-books.md): How QuickDesk address books store peers, tags, and aliases, and what the operator console shows about them. - [Operator console access](/modalities/quickdesk/operator-access.md): How the QuickDesk console gates itself on a server-side operator allowlist, what each gate state means, and why this surface has no tenant switcher. - [Audit log: sessions and file transfers](/modalities/quickdesk/audit-log.md): How QuickDesk audit rows are structured, how sessions are reconstructed from open and close events, and what the console's query windows and row caps mean. - [QuickDesk webhooks](/modalities/quickdesk/webhooks.md): The QuickDesk event catalogue: peer presence and session lifecycle event types, how subscriptions match them, and how to wire and verify a handler. - [Groups & policies](/modalities/quickdesk/groups-and-policies.md): Put devices in groups and push settings to devices from the QuickDesk console. - [Alarms](/modalities/quickdesk/alarms.md): See the security alarms that QuickDesk devices report, and send them to your webhooks. - [Wake-on-LAN](/modalities/quickdesk/wake-on-lan.md): Wake an offline QuickDesk computer from the console with another online device on the same network. - [Web viewer](/modalities/quickdesk/web-viewer.md): Control an online QuickDesk device from your browser. No install is necessary. ## Explore all docs / Inference / Console - [Inference Console](/modalities/inference/console.md): Configure the voice AI: select models and providers, test in the playground, and monitor runtime health. - [Request Builder](/modalities/inference/request-builder.md): How the Playground composes an OpenAI-compatible chat request, emits curl, and where the model list, base URL, and credential variable come from. - [Providers](/modalities/inference/providers.md): What the Providers screen lists, how it shows the routed clutch-layers models and their reachability, and where GPU provider keys and capacity live. - [Inference overview metrics](/modalities/inference/metrics.md): What the six KPI tiles on the inference Overview screen measure, the window they cover, how to read the Active models list, and what authenticates a request to the global gateway endpoint. - [Compute: nodes, functions and machines](/modalities/inference/compute.md): How the dial-out compute fleet enrolls nodes, what the secure and community trust tiers mean for placement, and how to deploy WASM functions and machines with the compute.* procedures. - [Fleet & Latency](/modalities/inference/fleet.md): How the Fleet & Latency screen builds its two fleet views: the static GPU fleet list with measured and target RTTs, and the mod_compute beacon that reports dial-out nodes. - [Inference console: scope, access and navigation](/modalities/inference/operator-scope.md): How the inference console is scoped, which screens are operator-global, which one reads a tenant, and what each navigation entry opens. - [Metering & Billing](/modalities/inference/billing.md): How the gateway meters inference usage: occupancy, turns, tokens, cancelled turns, quota denials, and per-tenant attribution. - [Inference Runtime and Routing](/modalities/inference/runtime.md): How the engine publishes runtime stats, what the resource gauges and self-tests show, and how routing strategies, weighted scorers, and the metric profile are published to a live module. - [Self-hosted model registry](/modalities/inference/model-registry.md): What the model registry stores, how a model spec maps to a clutch-layers deployment, and when a registry write reaches the serving fabric. - [Inference — Analytics](/modalities/inference/analytics.md): How the Analytics screen derives gateway occupancy, abort reasons, GPU savings, and per-turn stage latencies — and why each panel has its own window. ## Explore all docs / Inference / Guides - [Cookbook](/modalities/inference/cookbook.md): Short task recipes for serving a speech-to-speech agent: attach, tune turn detection, codecs, barge-in, and latency. - [Recipes](/modalities/inference/recipes.md): End-to-end worked examples: an outbound speech-to-speech agent, a tuned barge-in profile, and a turn-latency probe. ## Explore all docs / Inference / Reference - [SDK Methods](/modalities/inference/sdk-methods.md): Attach a speech-to-speech agent to a call, tune turn detection and codecs, and drive the duplex audio bridge. - [OpenAI-Compatible HTTP API](/modalities/inference/openai-compatible-api.md): Call deployed clutch-layers models over the OpenAI-compatible HTTP surface: base URL, endpoints, SSE streaming over HTTP/2 and HTTP/3, and tool calling. ## Explore all docs / SDKs / Overview - [SDKs Overview](/sdks/overview.md): Select a language. All six SDKs give the same five-modality surface. - [Prebuilt Binaries](/sdks/prebuilt-binaries.md): Download the prebuilt QUIC/MoQT engine, the ROS 2 RMW package, and the tunnel CLI from the shared artifact host. - [Admin API SDK](/sdks/admin-sdk.md): Drive the FirstByte console's entire administration surface from your own code — one org-scoped API key, end-to-end types. ## Explore all docs / SDKs / Python - [Python Installation](/sdks/python/installation.md): Install the polyglot SDK for CPython 3.10+. - [Python Quickstart](/sdks/python/quickstart.md): Create a live input, push a broadcast, and watch it back in under five minutes. - [Python Reference](/sdks/python/reference.md): This reference lists every modality, every method, and every option. - [P2P on QUIC](/sdks/python/p2p.md): Connect a client and a server directly across NATs, and fall back to a relay when the punch fails. One QUIC connection, one wire, the same authentication on every path. - [Python Examples](/sdks/python/examples.md): The SDK split repo contains runnable examples for each modality. ## Explore all docs / SDKs / TypeScript / JavaScript - [TypeScript Installation](/sdks/typescript/installation.md): Install the polyglot SDK in Node, Bun, or the browser. - [TypeScript Quickstart](/sdks/typescript/quickstart.md): Mint a playback URL, open a viewer, and render fMP4 in under five minutes. - [TypeScript Reference](/sdks/typescript/reference.md): This reference lists every modality, every method, and every option. - [TypeScript Examples](/sdks/typescript/examples.md): The SDK split repo contains runnable examples for each modality. ## Explore all docs / SDKs / Go - [Go Installation](/sdks/go/installation.md): Install the polyglot SDK as a Go module. - [Go Quickstart](/sdks/go/quickstart.md): Create a live input and push a broadcast in a few lines of Go. - [Go Reference](/sdks/go/reference.md): This reference lists every modality, every method, and every option. - [Go Examples](/sdks/go/examples.md): The SDK split repo contains runnable examples for each modality. ## Explore all docs / SDKs / Rust - [Rust Installation](/sdks/rust/installation.md): Add the polyglot SDK as a Cargo dependency. - [Rust Quickstart](/sdks/rust/quickstart.md): Create a live input and push a broadcast with async Rust and Tokio. - [Rust Reference](/sdks/rust/reference.md): This reference lists every modality, every method, and every option. - [Rust Examples](/sdks/rust/examples.md): The SDK split repo contains runnable examples for each modality. ## Explore all docs / SDKs / Java - [Java Installation](/sdks/java/installation.md): Add the polyglot SDK to Maven, Gradle, or sbt. - [Java Quickstart](/sdks/java/quickstart.md): Create a live input and push a broadcast in Java. - [Java Reference](/sdks/java/reference.md): This reference lists every modality, every method, and every option. - [Java Examples](/sdks/java/examples.md): The SDK split repo contains runnable examples for each modality. ## Explore all docs / SDKs / .NET / C# - [.NET Installation](/sdks/dotnet/installation.md): Install the polyglot SDK for .NET 9+ and Unity. - [.NET Quickstart](/sdks/dotnet/quickstart.md): Create a live input and push a broadcast in C#. - [.NET Reference](/sdks/dotnet/reference.md): This reference lists every modality, every method, and every option. - [.NET Examples](/sdks/dotnet/examples.md): The SDK split repo contains runnable examples for each modality.