The homelab is retiring the *.schweitz.internal domain; in-network
machine-to-machine traffic uses docker container names on the
docker-dataplane network. The deployed tatlock-ui stack already overrides
DESKLOCK_TATLOCK_BASE_URL (Tatlock runs on the host), so only the
fallback default changes.
Docs follow: AGENTS.md M2M guidance now points at container names with
*.schweitz.net reserved for browsers, architecture.md drops the retired
domain (the registry name now matches what CI actually pushes since
c477019), and the README diagram loses the stale hostname.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from pydantic_settings import BaseSettings
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Gateway configuration, overridable via DESKLOCK_* environment variables."""
|
|
|
|
tatlock_base_url: str = "http://tatlock:8000"
|
|
tatlock_model: str = "Tatlock"
|
|
|
|
# PCM rate of the device WebSocket contract (docs/architecture.md)
|
|
sample_rate: int = 16000
|
|
|
|
# "speaches" (shared speech container) or "embedded" (in-process models)
|
|
stt_backend: str = "speaches"
|
|
tts_backend: str = "speaches"
|
|
|
|
speaches_base_url: str = "http://localhost:8601"
|
|
stt_model: str = "Systran/faster-whisper-small"
|
|
tts_model: str = "speaches-ai/Kokoro-82M-v1.0-ONNX"
|
|
tts_voice: str = "bm_george"
|
|
|
|
# Spoken immediately after a query is accepted, to fill the long Tatlock wait.
|
|
# Avoid "for you" — Kokoro inserts an unnatural mid-phrase pause before it.
|
|
filler_text: str = "Let me check on that, sir."
|
|
|
|
# embedded fallback only (requires the [speech] extra)
|
|
embedded_stt_model: str = "small"
|
|
embedded_stt_device: str = "cuda"
|
|
embedded_tts_voice: str = "en_GB-alan-medium"
|
|
|
|
model_config = {"env_prefix": "DESKLOCK_"}
|
|
|
|
|
|
settings = Settings()
|