Server Startup Modes

参照元: LiveKit Agents Documentation ロードマップ: 学習ロードマップ

What(何についてか)

Server Startup Modes は、同一の Agent 実装を運用目的に応じた実行モードで起動するための仕組みである。

LiveKit Agents SDK の CLI は、開発・本番・ローカル検証・実 Room デバッグという異なる状況に対して、4つの起動モード(start / dev / console / connect)を提供する。

Why(なぜ必要か)

音声エージェント運用では、求める特性が場面ごとに異なる。

本番では、停止時に会話を破壊しない安全な終了(graceful shutdown)が必要になる。 一方で開発では、リロード速度や詳細ログが重要であり、停止時の厳密なドレインより反復速度が優先される。

さらに、Room 接続なしでローカル単体検証したい場面と、特定 Room に直結して実ユーザーに近い状態で再現したい場面は目的が異なるため、実行モードを明確に分離する設計が合理的である。

How(どう動くか)

graph TD
    A[Agent Codebase] --> B{Startup mode}
    B --> C[start: production]
    B --> D[dev: local iteration]
    B --> E[console: local single session]
    B --> F[connect: single room debug]

    C --> C1[INFO log default]
    C --> C2[graceful drain on shutdown]

    D --> D1[DEBUG log default]
    D --> D2[auto reload]

    E --> E1[no LiveKit room transport]
    E --> E2[text/audio local interaction]

    F --> F1[direct room connection]
    F --> F2[targeted participant debugging]

1) start mode(本番運用)

start は本番向けの実行モードであり、ログレベル既定値は info

終了シグナル(SIGTERM/SIGINT)受信時は、まず新規ジョブ受付を停止し、進行中ジョブの完了を待ってから接続とリソースをクリーンアップして終了する。 Python では --drain-timeout により待機上限秒数を指定できる。

このモードは、コンテナ再起動やローリングデプロイ時の通話品質・会話継続性の維持に直結する。

sequenceDiagram
    participant Orchestrator
    participant AgentServer
    participant ActiveJobs

    Orchestrator->>AgentServer: SIGTERM
    AgentServer->>AgentServer: stop accepting new jobs
    AgentServer->>ActiveJobs: wait for completion (drain)
    AgentServer->>AgentServer: close connections / cleanup
    AgentServer-->>Orchestrator: exit

2) dev mode(開発反復)

dev は開発向けモードで、ログレベル既定値は debug

Python はファイル変更検知で自動リロードが有効(--no-reload で無効化可能)。 Node.js は tsx を利用した TypeScript の再読み込み運用が推奨される。

このモードの狙いは、厳密な停止制御より「変更→実行→確認」の反復速度最適化である。

3) console mode(Python限定のローカル単体検証)

console は LiveKit Room へ接続せず、端末上で単一セッションを実行する。

音声入出力デバイスの選択、text-only モード、録音保存など、局所的な挙動検証に必要な機能を備える。

注意点として、LiveKit Inference を使う場合は、媒体輸送に Room を使わなくても推論基盤へのアクセス認証が必要になる。 そのため LIVEKIT_URL / LIVEKIT_API_KEY / LIVEKIT_API_SECRET は環境変数で事前設定する。

4) connect mode(特定Room直結デバッグ)

connect は指定 Room に直接接続して単一セッションを検証するモードである。

--room は必須で、--participant-identity は任意。 本番に近い参加者状況で、特定シナリオだけを狙って再現したいときに有効。

認証と運用上の補助コマンド

認証情報は環境変数または CLI 引数で与える。 ただし console は CLI 引数で認証を受け取らないため、環境変数設定が前提となる。

また、turn detector・silero・noise-cancellation など一部プラグインは外部アセットを必要とするため、download-files を初回実行またはビルド工程に組み込む運用が推奨される。

Key Concepts

用語説明
start mode本番向け。graceful shutdown と安定運用を重視する起動モード
dev mode開発向け。詳細ログと自動リロードで反復速度を優先する起動モード
console modePython限定。Room 非接続でローカル単体検証するモード
connect mode特定 Room に直結し、実参加者シナリオを単発検証するモード
drain timeoutシャットダウン時に進行中ジョブを待つ上限時間(Python)
download-filesプラグイン実行に必要なモデル/アセットを事前取得する補助コマンド

一言まとめ

Server Startup Modes は「同一 Agent を目的別に実行環境へ写像する運用レイヤー」であり、start=安定本番dev=高速開発console=ローカル単体検証connect=実Room再現デバッグ と整理すると設計判断が一貫する。