Files
vocero-client/s2s-client
..
2026-10-05 11:43:34 -03:00

title, emoji, colorFrom, colorTo, sdk, app_port, pinned, short_description, hf_oauth
title emoji colorFrom colorTo sdk app_port pinned short_description hf_oauth
HF Realtime Voice 🎙️ indigo purple docker 7860 false Voice chat over WebSocket against a HF speech-to-speech true

Realtime voice backend and retained static client

FastAPI server and retained static voice-chat UI for an OpenAI Realtime-compatible speech-to-speech backend. The browser streams microphone audio over WebSocket, plays assistant audio, displays transcripts, and offers Spanish controls.

The root start_ui.sh now serves the React frontend with Vite on public port 8420, proxying backend requests here on loopback port 8421. This directory's static UI remains available when FastAPI is run directly or through the existing Docker image.

The complete usage guide covers local startup, connection modes, Docker, settings, and usage limits. See the documentation index, architecture, and change history for implementation details and history.

The retained static client's assistant replies render Markdown with Marked and DOMPurify. Their pinned, checked-in browser modules are served from vendor/, including upstream licenses, so the UI does not require a CDN or a Node.js runtime. To refresh the browser dependencies with Node.js 20 or newer after updating package.json:

cd s2s-client
npm install --ignore-scripts
npm run vendor

Commit package-lock.json and the generated vendor/ files together. Existing locked versions can be restored with npm ci --ignore-scripts.

Build from the repository root so the container includes the documentation:

docker build -f s2s-client/Dockerfile -t s2s-client .

FastAPI's API explorer remains at /docs. Project documents are served as files below /docs/client/, /docs/speech/, /docs/adr/, /docs/examples/, and /docs/proposals/. The historical /project/ and /public/docs.html URLs redirect to the retained architecture proposal. Markdown remains source text; documentation directories are not browsable rendered pages. Start from the repository documentation index or request /docs/README.md explicitly.