docs(dev): explain the combined Vite and FastAPI launcher
This commit is contained in:
+22
-7
@@ -9,23 +9,35 @@ reasoning, caller context, ApiPilot tools and load-balancer requests.
|
||||
From the repository root:
|
||||
|
||||
```bash
|
||||
SPEECH_TO_SPEECH_URL=ws://localhost:8765/v1/realtime ./start_ui.sh
|
||||
S2S_PROXY_TARGET=ws://localhost:8765/v1/realtime ./start_ui.sh
|
||||
```
|
||||
|
||||
The launcher loads the root `.env`, creates `.venv` if needed, installs the
|
||||
client requirements when the dependency check fails, and runs uvicorn on port
|
||||
8420. `UI_PORT` overrides the UI port. Because `.env` is sourced by the script,
|
||||
values in that file can replace variables supplied on the command line.
|
||||
client requirements when the dependency check fails, and installs the locked
|
||||
frontend dependencies when needed. Vite serves the React frontend on port
|
||||
8420 and proxies the backend routes to Uvicorn on `127.0.0.1:8421`.
|
||||
`UI_PORT` overrides the public port; `S2S_BACKEND_PORT` overrides the internal
|
||||
port. Both servers reload source edits, and stopping the launcher stops both.
|
||||
The speech pipeline remains a separate service. Because `.env` is sourced by
|
||||
the script, values in that file can replace variables supplied on the command line.
|
||||
|
||||
To install and start the UI manually:
|
||||
Use Node.js 22.18+ on the 22.x line or Node.js 24+, npm, Python 3 with venv,
|
||||
Bash 4.4+, `setsid`, and `curl`. Remote staging access also needs the exact
|
||||
hostname in `S2S_DEV_ALLOWED_HOSTS`, HTTPS, and WebSocket forwarding for speech
|
||||
and Vite HMR. See [frontend development setup](../../frontend-s2s/README.md).
|
||||
|
||||
To install and start the backend manually:
|
||||
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
.venv/bin/python -m pip install -r s2s-client/requirements.txt
|
||||
SPEECH_TO_SPEECH_URL=ws://localhost:8765/v1/realtime \
|
||||
.venv/bin/python -m uvicorn --app-dir s2s-client server:app --port 8420
|
||||
S2S_PROXY_TARGET=ws://localhost:8765/v1/realtime \
|
||||
.venv/bin/python -m uvicorn --app-dir s2s-client server:app \
|
||||
--host 127.0.0.1 --port 8421 --reload --reload-dir s2s-client
|
||||
```
|
||||
|
||||
Then, in a second terminal, run `cd frontend-s2s`, `npm ci`, and `npm run dev`.
|
||||
|
||||
Open <http://localhost:8420/>, tap the orb/microphone control, grant microphone
|
||||
access, and speak. Microphone access requires HTTPS or a local browser origin;
|
||||
use HTTPS when accessing the UI from another machine.
|
||||
@@ -72,6 +84,9 @@ server; it is not a universally available local service.
|
||||
|
||||
## Docker
|
||||
|
||||
This existing image serves the retained static client. It does not run the
|
||||
React/Vite development launcher.
|
||||
|
||||
Use the project root as the build context:
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user