JuStAI
JuStAI macht aus gewöhnlichen Kameras, Mikrofonen, Lautsprechern und Bildschirmen einen gemeinsamen, lokal betriebenen KI-Assistenten. Räume und Interaction Endpoints bestimmen, wo zugehört und wo geantwortet wird; ein deterministischer Output Router sorgt dafür, dass Antworten im Raum der Anfrage bleiben. Der Assistent reagiert nie auf seine eigene Stimme. Er spricht und versteht Deutsch, Englisch und Italienisch, und die Oberfläche gibt es in allen drei Sprachen.

Kamera/Mikrofon ──► go2rtc ──► Audio-Engine (AEC, VAD, Wakeword, Arbitrierung) │ ▼ Gesprächssession ──► KI-Router (Realtime | STT→LLM→TTS) │ │ ▼ ▼ Output Router ◄──── Tools (Gedächtnis, Vision, PTZ, Display, …) │ Lautsprecher / Display im selben RaumWas man damit machen kann: „Wenn du mich das nächste Mal ab morgen um 9 Uhr siehst, erinnere mich, dass ich den Müll rausbringen soll.“ · „Wo sind meine Autoschlüssel? Such mal im Poolhaus.“ · „Wo ist Lucky?“ · „Sag mir Bescheid, wenn ein Auto in die Einfahrt fährt.“ · „Zeig mir den Kurs von Apple.“ · „Schalte die Kamera im Schlafzimmer aus.“ · „Bau ein Plugin, das mir sagt, wenn der Strom unter 20 Cent kostet.“ Mehr: BEISPIELE.md.
Installation
Abschnitt betitelt „Installation“Ein Befehl auf einem Linux-Rechner (x86_64) installiert alles, auch Docker, und fragt nur nach API-Key und Admin-Passwort:
curl -fsSL https://raw.githubusercontent.com/naxeu/justai/main/scripts/install.sh | bashSchritt für Schritt, ohne Vorkenntnisse: INSTALLATION.md (Docker installieren, API-Key, Starten, Handy als Mikrofon, Kameras, Personen).
Von Hand, wenn Docker schon da ist (Compose ≥ 2.24):
git clone https://github.com/naxeu/justai.gitcd justaicp .env.example .env # GOOGLE_API_KEY=… eintragen (oder später in der Oberfläche)docker compose up -d --build- Admin-Oberfläche: http://localhost:8080
- Benutzer
admin, das initiale Passwort steht nach dem ersten Start in/data/initial_admin_password.txtim Core-Container:
docker compose exec core cat /data/initial_admin_password.txt- Display-Client (z. B. auf einem Fernseher/Tablet öffnen und in der Admin-UI unter Displays mit dem angezeigten Code koppeln): http://HOST:8080/display
- Geräte-App: Handy, Tablet oder PC als Mikrofon, Lautsprecher, Kamera und Bildschirm, installierbar als App: https://HOST:8443/app (Einrichtung unter Einstellungen → Geräte-App, siehe DISPLAYS.md)
Wakeword, Spracherkennung, Sprachausgabe, Embeddings und Bildanalyse laufen lokal
(openWakeWord, faster-whisper, Piper, fastembed, OpenCV). Für die Antworten braucht
es ein Sprachmodell: entweder einen Google-API-Key (GOOGLE_API_KEY=… in .env,
siehe .env.example, oder in der Admin-UI unter Plugins → Gemini), damit sind alle
Rollen sofort belegt; oder ein lokales LLM (z. B. Ollama über das Plugin
OpenAI-kompatibel), das unter KI-Provider den Rollen zugeordnet wird
(AI.md).
Erste Schritte
Abschnitt betitelt „Erste Schritte“- Räume anlegen (z. B. Wohnzimmer, Küche).
- Geräte hinzufügen – per Netzwerksuche (ONVIF/mDNS/Tapo) oder manuell. Ohne Hardware: Treiber simulated (simuliertes Gerät mit akustischem Echo).
- Endpoints: Mikrofon und Lautsprecher (optional Kamera/Display) eines Raums zu einem Endpoint kombinieren, Kalibrieren ausführen.
- „Hey Justy“ sagen. Antworten kommen über den Lautsprecher desselben Endpoints.
Dokumentation
Abschnitt betitelt „Dokumentation“| Thema | Datei |
|---|---|
| Installation Schritt für Schritt | INSTALLATION.md |
| Beispiele: was man fragen kann | BEISPIELE.md |
| Architektur, Module, Datenflüsse | ARCHITECTURE.md |
| Technologie-Entscheidungen | TECH_STACK.md, adr/ |
| Entwicklung | DEVELOPMENT.md |
| Selbst weiterentwickeln (Vibe Coding) | VIBE_CODING.md |
| Plugins & SDK | PLUGINS.md |
| Geräte (Tapo, ONVIF, RTSP, simuliert) | DEVICES.md |
| Räume & Endpoints, Output Router | ROOMS.md |
| Audio: AEC, VAD, Wakeword, Arbitrierung, Duplex | AUDIO.md |
| KI-Provider, Rollen, Fallbacks, Datenschutz | AI.md |
| Vision, Identität | VISION.md |
| PTZ-Tracking | PTZ.md |
| Gedächtnis | MEMORY.md |
| Automationen | AUTOMATIONS.md |
| Displays | DISPLAYS.md |
| Sicherheit & Datenschutz | SECURITY.md |
| Betrieb, Backup, Update | DEPLOYMENT.md |
| Tests & Teststatus | TESTING.md |
Projektstruktur
Abschnitt betitelt „Projektstruktur“backend/ Core (Python 3.12, FastAPI) – src/justai/<modul>sdk/python/ Plugin-SDK (justai_sdk): Manifest, Ports, Tools, Events, Testhilfensandbox/ Sandbox-Dienst für nicht vertrauenswürdige Pluginsplugins/ Mitgelieferte Plugins (Treiber, KI-Provider, Beispiel-Plugin)frontend/ Admin-UI und Display-Client (React, Mantine, Vite)docker/ Dockerfiles, Secret-Initialisierunggo2rtc/ Basis-Konfiguration des Medienservers (ohne Zugangsdaten)scripts/ Installation, Modell-Download, Backup, Restoredocs/ Dokumentation und ADRsWas mit echter Hardware geprüft wurde und was nur simuliert ist, steht ehrlich in TESTING.md.
Copyright (C) 2026 Julian Stricker
JuStAI steht unter der GNU Affero General Public License v3.0 (AGPL-3.0). Du darfst den Code nutzen, ändern und weitergeben. Wer eine geänderte Version als Dienst im Netzwerk anbietet, muss den Quelltext seiner Änderungen ebenfalls unter der AGPL bereitstellen.
Ausnahmen:
- Das Plugin-SDK (sdk/python) steht unter der MIT-Lizenz, damit Plugins beliebig lizenziert werden können.
- Die mitgelieferten Plugins geben ihre Lizenz in der jeweiligen
plugin.yamlan.
Drittkomponenten behalten ihre eigenen Lizenzen. Das gilt auch für die Modelle, die
scripts/fetch_models.py lädt (zum Beispiel die vortrainierten openWakeWord-Wake-Words und
die Piper-Stimmen). Prüfe deren Bedingungen, bevor du sie kommerziell einsetzt.
Beiträge sind derzeit nicht vorgesehen. Der Rechteinhaber behält sich vor, den Code zusätzlich unter anderen Bedingungen zu lizenzieren.