diff --git a/README.md b/README.md index b30b581..da2ee7b 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,15 @@ The `websockets` package is needed because the Gemini Live TTS used by Typed Replay opens a WebSocket to Google. Everything else (records list, records delete-all, login, logs) works without it. +> **Gemini API key — required, none ships with the repo.** The `api_key` +> in `config/core_config.json` (`gemini_defaults`) is intentionally empty +> (`""`). Typed Replay / Gemini TTS won't work until you supply one: +> - paste it in the dashboard → **Voice & Audio → Gemini API Key** (hot-swap, no restart), **or** +> - `export SANAD_GEMINI_API_KEY=AIza...` before `python3 main.py`, **or** +> - set `gemini_defaults.api_key` in `config/core_config.json`. +> +> Get a key at . + > The other heavy deps (`pyaudio`, `transformers`, `torch`) are listed in > `requirements.txt` but are **not required** for the lite dashboard. > They were leftovers from the parent Sanad project and may still be @@ -144,7 +153,7 @@ speakers. Machine A stays silent. |---|---|---|---| | `SANAD_DASHBOARD_HOST` | IP or hostname | wlan0's IP | Override the bind address. Use `127.0.0.1` for localhost-only. | | `SANAD_DASHBOARD_INTERFACE` | iface name | `wlan0` | Pick which interface's IP to auto-bind to. | -| `SANAD_GEMINI_API_KEY` | string | reads from `data/motions/config.json` | Override the Gemini API key. | +| `SANAD_GEMINI_API_KEY` | string | `""` (empty) | Gemini API key. No key ships in the repo — set this, paste one in the dashboard (**Voice & Audio → Gemini API Key**), or fill `gemini_defaults.api_key` in `config/core_config.json`. | ## What was stripped vs Sanad (full) diff --git a/config/core_config.json b/config/core_config.json index 3b6948a..5f78610 100644 --- a/config/core_config.json +++ b/config/core_config.json @@ -34,7 +34,7 @@ "gemini_defaults": { "_comment": "Baseline Gemini API config — SINGLE SOURCE OF TRUTH. All voice modules read from here.", - "api_key": "AIzaSyDt9Xi83MDZuuPpfwfHyMD92X7ZKdGkqf8", + "api_key": "", "model_live": "gemini-2.5-flash-native-audio-preview-12-2025", "model_ws_uri": "wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateContent", "voice_name": "Charon",