All checks were successful
ci/woodpecker/push/default Pipeline was successful
New stack for the realtime voice agent — v2 of the portal-assistant brain path. One persistent WebSocket per conversation: continuous mic audio -> Silero VAD turn-taking -> Whisper STT (portal-stt) -> streaming Claude brain (claude-agent-service) -> edge-tts (portal-tts) -> audio out, with barge-in. Reuses all three upstream cluster services; nothing new is spun up. Public Cloudflare ingress (proxied, WebSocket) at portal-realtime.viktorbarzin.me with the app's own DEVICE_TOKEN as the edge gate (auth="app" — Authentik would break the native Portal client). No buffering middleware: it would break the streaming WebSocket. Image ghcr.io/viktorbarzin/portal-assistant-realtime (private ghcr, pulled with ghcr_pull_token). Sibling to the v1 portal-assistant gateway, which stays live. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
17 lines
703 B
HCL
17 lines
703 B
HCL
include "root" {
|
|
path = find_in_parent_folders()
|
|
}
|
|
|
|
dependency "platform" {
|
|
config_path = "../platform"
|
|
skip_outputs = true
|
|
}
|
|
|
|
# portal-realtime — the v2 full-duplex voice agent (Pipecat). One persistent
|
|
# WebSocket per conversation: continuous mic audio -> Silero VAD turn-taking ->
|
|
# Whisper STT (portal-stt) -> streaming Claude brain (claude-agent-service) ->
|
|
# edge-tts (portal-tts) -> audio out, with barge-in. Reuses all three upstream
|
|
# cluster services; nothing new is spun up. Public Cloudflare ingress (proxied,
|
|
# WebSocket) with the app's own DEVICE_TOKEN as the edge gate. Sibling to
|
|
# portal-assistant (the v1 tap-to-talk gateway, still live). portal-assistant
|
|
# realtime Phase 3.
|