Docs

Speko Gateway for LiveKit

Run the open Speko Gateway beside a LiveKit AgentSession for provider-direct voice legs and optional managed Router LLMs.

Use the native Gateway integration

Speko Gateway is a customer-side runtime that runs in the same image or beside the LiveKit agent. It is not an OpenAI-compatible base URL. The public Gateway image includes the binary and Python integration; follow the complete container diff in the Gateway README.

from livekit.agents import AgentSession
from livekit.plugins import openai
from speko_gateway.livekit import LLM, STT, TTS

session = AgentSession(
    stt=STT(
        language="en",
        credential_source="auto",  # managed or local BYOK
    ),
    llm=LLM(
        model="auto",
        objective="balanced",
        max_output_tokens=8192,
    ),
    tts=TTS(
        language="en",
        credential_source="auto",
    ),
)

Managed credentials

lk agent update-secrets \
  --secrets "SPEKO_LOCAL_AUTH_TOKEN=$(openssl rand -hex 32)" \
  --secrets "SPEKO_API_KEY=$SPEKO_API_KEY"

Local BYOK credentials

lk agent update-secrets \
  --secrets "SPEKO_LOCAL_AUTH_TOKEN=$(openssl rand -hex 32)" \
  --secrets "SPEKO_DEEPGRAM_BYOK_API_KEY=$DEEPGRAM_API_KEY"

Choose the trust boundary

ManagedGateway requests Speko-managed routes; Router handles the hosted LLM data plane.
BYOKProvider credentials stay inside the Gateway process and provider-direct voice traffic does not traverse Router.
MixedUse BYOK for selected voice legs and a Speko API key for managed or Router-backed work.