Revision: r1 Source: CLAUDE.md, Sections: Architecture, Directory Structure Last updated: 2026-01-31 12:35
| Modus | Beschreibung | Einstiegspunkt |
|---|---|---|
| Server | Zentrale Steuerung: Satellites, Plugins, Events, ML-Inferenz | python3 main.py server |
| Client | Leichtgewichtiger Satellite mit Wakeword-Erkennung | python3 main.py client |
| Standalone | All-in-One ohne Server | python3 main.py standalone |
| Train | ML-Trainer für Wakeword/Voice-Recognition | python3 main.py train |
Alle Hauptkomponenten erben von IService:
class IService(ABC):
PRIORITY: ServicePriority # CRITICAL, CORE, NETWORK, MANAGER, PLUGIN, OPTIONAL
GROUP: ServiceGroup # Kategorisierung
DEPENDENCIES: list[str] # Erforderliche Services
# Lifecycle Hooks
async def on_pre_start() -> None
async def on_post_start() -> None
async def on_pre_stop() -> None
async def on_post_stop() -> None
async def on_dependency_ready(name: str) -> None
Startreihenfolge: Prioritätsbasiert (niedrigerer Wert = früher), mit Abhängigkeitsauflösung.
Zentrales Pub/Sub mit Prioritäten:
| Priorität | Wert | Verwendung |
|---|---|---|
| SYSTEM | 0 | Kann Events abbrechen |
| HIGHEST | 10 | Höchste Benutzer-Priorität |
| HIGH | 20 | Hohe Priorität |
| NORMAL | 30 | Standard |
| LOW | 40 | Niedrige Priorität |
| LOWEST | 50 | Niedrigste Priorität |
| MONITOR | 100 | Nur beobachten, empfängt auch abgebrochene Events |
@TrixyEvent(["wakeword_received", "satellite_connected"])
def on_events(self, event_name: str, event_data: EventData):
pass
4 Ports für verschiedene Datenströme:
| Port | Socket | Richtung | Format |
|---|---|---|---|
| 2101 | Command | Bidirektional | AES-256-GCM verschlüsselt |
| 2102 | Audio In | Satellite → Server | 16KHz mono PCM |
| 2103 | Audio Out | Server → Satellite | 16KHz mono PCM |
| 2104 | Music | Server → Satellite | 48KHz stereo |
See also: modules.md, integrations.md