DBDelve
DBDelve는 Rust 기반 빠른 다중 엔진 데이터베이스 클라이언트, 무료 오픈소스, 텔레메트리 없음
Open customer-side data plane for real-time voice AI
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Speko Gateway is the open customer-side runtime for real-time voice AI. It gives agents one local streaming protocol across voice providers, keeps BYOK credentials inside your process, and can optionally use Speko for managed routing, observability, and consolidated billing.
Early preview: the protocol is versioned, but breaking changes may occur before the first stable release.
Pin a released version in production. Each release has notes on the releases page. Watch the repo with Custom → Releases to get notified.
| Tag | What it points to | Use it for |
|---|---|---|
0.1.0 | One exact release. The workflow refuses to rebuild a released version. | Production, when you want to choose every upgrade. |
0.1 | The newest 0.1.x release. Gets fixes only. | Production, when you want fixes automatically. |
latest, edge, sha-<commit> | Every merge to main. Moves several times a day. | Testing unreleased changes. Not for production. |
Gateway includes native Pipecat STTService and TTSService processors with
utterance commits, streaming sentence synthesis, barge-in cancellation, and a
Pipecat Cloud-compatible sidecar startup hook. See the complete
Pipecat integration guide.
The public image contains both the Gateway binary and its Python integration. Apply this diff to the official LiveKit Python agent starter Dockerfile:
ARG PYTHON_VERSION=3.14
+FROM spekoai/gateway:0.1 AS speko-gateway
FROM ghcr.io/astral-sh/uv:python${PYTHON_VERSION}-bookworm-slim AS base
FROM base AS build
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN mkdir -p src
RUN uv sync --locked
+COPY --from=speko-gateway /opt/speko/python /opt/speko/python
+RUN uv pip install --python /app/.venv/bin/python /opt/speko/python
RUN uv run --module livekit.agents download-files
COPY . .
FROM base
ARG UID=10001
RUN adduser \
--disabled-password \
--gecos "" \
--home "/app" \
--shell "/sbin/nologin" \
--uid "${UID}" \
appuser
COPY --from=build --chown=appuser:appuser /app /app
+COPY --from=speko-gateway /usr/local/bin/speko-gateway /usr/local/bin/speko-gateway
+RUN install -d -o appuser -g appuser -m 0700 /run/speko
WORKDIR /app
USER appuser
-CMD ["uv", "run", "src/agent.py", "start"]
+CMD ["sh", "-c", "/usr/local/bin/speko-gateway & exec uv run src/agent.py start"]
Then select Speko for the voice legs where the agent creates its
AgentSession:
from livekit.plugins import openai
from speko_gateway.livekit import STT, TTS
session = AgentSession(
stt=STT(
language="en", # default
provider="auto", # default; set when several BYOK STT keys exist
model="auto", # default: the provider's catalog default
credential_source="auto", # or "byok" / "managed"
sample_rate=16_000, # default
),
llm=openai.LLM(model="gpt-4.1-mini"), # any LiveKit LLM plugin
tts=TTS(
provider="auto", # default: the configured BYOK vendor, or the managed plan's pick
model="auto", # default: the provider's catalog default
voice="", # default: request, configured fallback, or catalog default
language="en", # default
sample_rate=24_000, # default
credential_source="auto", # or "byok" / "managed"
),
)
With a Speko API key the LLM can come from Speko too, served by the hosted
Router (router.speko.dev):
from speko_gateway.livekit import LLM, STT, TTS
session = AgentSession(
stt=STT(),
llm=LLM(
provider="auto", # default: relay picks; set with model= to pin a route
model="auto", # default: GET router.speko.dev/v1/models lists the options
objective="balanced", # default: or "quality", "latency", "cost"
max_output_tokens=8_192, # default
reasoning_effort=None, # default: provider default; or "none" ... "xhigh"
),
tts=TTS(),
)
reasoning_effort is the Router's reasoning control. Use "none" to turn
reasoning off. "minimal" asks for the least reasoning the routed model allows
(the Router maps it onto each provider's own scale), and "low", "medium",
"high" and "xhigh" ask for more. Unset, no field is sent and the provider
default applies. Any other value raises ValueError when the LLM is
constructed. While reasoning is enabled (any value but "none") the Router
refuses temperature and top_p.
"none" is accepted on models that cannot reason, where it changes nothing,
except on older Routers, which refuse it there (e.g. on gpt-4.1). Four models
always reason and refuse "none"; "minimal" is their floor: Inception
mercury-voice, gpt-oss-120b on Cerebras and Together, and Together
zai-org/GLM-5.3-Flash. Every other value, "minimal" included, needs a model
that can reason: a pinned model that cannot is refused
(capability_unsupported), and auto routing considers only models that can.
STT accepts transcription options in the same canonical vocabulary as the hosted Speko API, plus a per-vendor passthrough for each provider's own settings:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗