mcp server
JARVIS
SH-Jarvis: selbst gehostetes, deutschsprachiges KI-Assistenz-Oekosystem - Orchestrator/FastAPI, lokale LLM/STT/TTS, Gedaechtnis/RAG, Sprecher-ID, Autonomie, MCP, Pi- und ESP32-Sprachsatelliten mit Wak
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 17, 2026SH-Jarvis
Ein verteiltes, durchgängig deutschsprachiges KI-Assistenz-Ökosystem — selbst gehostet, mit lokalen Modellen (LLM/STT/TTS), Sprecher-Identität, Gedächtnis/RAG, Autonomie-Automatisierungen und Sprachsatelliten (Raspberry Pi & ESP32-S3, Wake-Word „Jarvis").
Aus der Windows-App Mark-XL wird SH-Jarvis: ein offenes, mehrschichtiges System, das auf eigener Hardware läuft — kein Cloud-Zwang, keine Daten außer Haus. Alles auf Deutsch.
✨ Highlights
- 🗣️ Voice-Loop: Mikrofon → STT → LLM (mit Tool-Calling) → TTS — im Browser, auf dem Pi und auf dem ESP32.
- 🇩🇪 Deutsch durchgängig (STT, LLM, TTS, UI) — bewusste Designvorgabe.
- 🧠 Gedächtnis & RAG auf pgvector, pro Nutzer getrennt, mit Auto-Recall und Dokument-Upload.
- 👤 Sprecher-Biometrie: erkennt wer spricht → eigener Namespace, Anrede und Rechte; konversationelles Onboarding für neue Stimmen.
- 🤖 Autonomie: JARVIS plant & handelt selbstständig — zeit- und ereignisgesteuert, unter Besitzer-Rechten + Admin-Blacklist.
- 🔌 MCP-Hub: externe Model-Context-Protocol-Server als Tools (z. B. Smart-Home).
- 🖥️ Client-Agent: steuert PCs (App-Start, Shell, Fenster, Medien, Zwischenablage …) über eine Capability-Registry.
- 📡 Sprachsatelliten: Raspberry Pi & ESP32-S3 (Waveshare Audio-Board) mit On-Device-Wake-Word, RGB-Status und Rückkanal (Timer/Benachrichtigungen werden am Gerät gesprochen).
- 💬 Telegram-Kanal: geräteunabhängig, ein- und ausgehend — Text, Sprachnachrichten und Fotos (Bildunterschrift = Aufgabe, z. B. „Was steht auf dem Schild?“ / „Notier das in Obsidian“).
- 🛡️ Auth & Admin-UI: Nutzer/Gruppen/Rechte, Geräteverwaltung, Debug-Trace — alles im Browser.
🏛️ Architektur
SH-Jarvis ist in Schichten (Tiers) aufgebaut:
┌─────────────────────────────────────────────┐
Browser-UI ─────────▶│ │
Pi-Satellit ─────────▶│ Tier 1 · Orchestrator (FastAPI) │
ESP32-Satellit ──────▶│ Chat-Loop · Tools · Auth · Sessions/WS │
Telegram ─────────▶│ Gedächtnis/RAG · Autonomie · MCP-Hub │
Client-PCs ─────────▶│ │
└───────┬───────────────┬─────────────┬───────┘
│ │ │
┌──────────▼─────┐ ┌───────▼──────┐ ┌────▼─────────┐
│ Tier 2 · GPU │ │ Tier 3 · Data│ │ Tier 3 · │
│ LLM/Vision │ │ Postgres + │ │ Code-Sandbox │
│ STT · TTS │ │ pgvector │ │ (Container) │
└────────────────┘ └──────────────┘ └──────────────┘
- Tier 1 — Orchestrator (
orchestrator/): FastAPI. Chat-Logik (adaptiver Tool-Loop, Streaming/SSE), WebSocket-I/O-Routing, Auth/Admin, Gedächtnis, Autonomie, MCP-Routing, Vision, Messaging. - Tier 2 — GPU-Inferenz: OpenAI-kompatibler LLM-/Vision-Server (z. B. llama.cpp/llama-swap), STT (faster-whisper, deutsches Whisper-Modell) und TTS (deutsches Kokoro/Piper/EdgeTTS).
- Tier 3 — Daten & Sandbox: Postgres + pgvector für Gedächtnis/RAG; isolierte Code-Sandbox (eigener Container).
- Edge — Satelliten & Clients: Pi-/ESP32-Sprachsatelliten und Thin-Client-Agenten auf PCs.
📂 Repo-Struktur
| Pfad | Inhalt |
|---|---|
orchestrator/ | Tier 1 — FastAPI-App, Web-UI + Admin-UI (static/), alle Kern-Module |
deploy/gpu/ | Compose/Configs für die GPU-Inferenz (Tier 2) |
deploy/data/ | Postgres + pgvector (Tier 3) |
deploy/sandbox/ | Code-Sandbox-Container (Tier 3) |
deploy/satellite/ | Raspberry-Pi-Sprachsatellit (Python-Thin-Client + systemd) |
deploy/satellite-esp/ | ESP32-S3-Firmware (ESP-IDF) für das Waveshare-Audio-Board |
roadmap.md · aktuellerstand.md | Roadmap (Phasen) und aktueller Gesamtstand (Wiedereinstieg) |
🧩 Orchestrator — Module (Auswahl)
app.py— Endpoints + Chat-Logik (Tool-Loop, Streaming, WebSocket, Admin, Debug)services.py— LLM (llm_call/llm_stream), STT/TTS-Proxy, lokale Embeddingstools.py— interne Tools + Autorisierung + MCP-Routingsession_hub.py— Sessions/WebSockets/Verlauf/Identität/Geräte-Telemetrieknowledge.py/store.py— Gedächtnis + RAG auf pgvectorauth.py/biometrics.py— Nutzer/Gruppen/Rechte · Sprecher-Erkennungautomations.py— Autonomie (zeit-/ereignisgesteuerte Selbstläufe)mcp_hub.py/messaging.py— MCP-Server-Anbindung · Telegram-Kanal
Endpoints (Auswahl)
/ Web-UI · /admin Admin-UI · /health · /api/chat · /api/chat/stream (SSE) ·
/api/stt · /api/tts · /api/vision · /api/knowledge/* ·
/ws · /ws/satellite (ESP-Audio) · /ws/client (Client-Agenten) ·
/api/admin/* (config, users, groups, mcp, devices, automations, debug …)
📡 ESP32-S3-Sprachsatellit
Firmware für das Waveshare ESP32-S3-AUDIO-Board (ES7210 Mic-ADC · ES8311 Speaker-DAC · 7× WS2812 RGB).
Wake-Word „Jarvis" läuft on-device (esp-sr WakeNet); danach wird sauberes 16-kHz-Mono-PCM an den
Orchestrator (/ws/satellite) gestreamt, die Antwort kommt als PCM zurück und wird abgespielt.
- Audio-Frontend über die esp-sr AFE-Pipeline: Noise Suppression + AGC + VAD, optional Dual-Mic (Array) per
#defineumschaltbar. - WLAN-Einrichtung via SoftAP/Captive-Portal (wie Tasmota): SSID/PW, Orchestrator-URL, Raumname → NVS.
- Rückkanal: Timer-Alarme/Benachrichtigungen werden am Gerät gesprochen.
- Lautstärke & Mic-Gain remote über die Admin-UI oder per Sprache („Jarvis, Lautstärke 1–10"); Lautstärke mit hartem Cap (Verstärkerschutz).
- Heartbeat/Telemetrie → Admin-Geräteliste (online/offline, Raum, Lautstärke, RSSI, Firmware).
Details, Pins und Build-Anleitung: deploy/satellite-esp/README.md.
🚀 Schnellstart
Voraussetzungen: ein Host für den Orchestrator (Python 3.11+), ein GPU-Server mit OpenAI-kompatiblem LLM-/STT-/TTS-Endpoint, sowie Docker für Postgres/pgvector und die Sandbox.
1. Daten (pgvector)
cd deploy/data && docker compose up -d
2. Orchestrator (Tier 1)
cd orchestrator
pip install -r requirements.txt
# Konfiguration in config.json bzw. später im Admin-UI (LLM/STT/TTS-URLs, Modelle …)
./run.sh # uvicorn auf 0.0.0.0:8088 mit selbstsigniertem TLS aus certs/
- Web-UI:
https://<orchestrator-host>:8088/(selbstsigniertes Cert akzeptieren — Browser-Mikrofon braucht HTTPS) - Admin-UI:
https://<orchestrator-host>:8088/admin— Erst-Loginadmin/admin→ Passwortwechsel erzwungen.
3. Code-Sandbox (optional, Tier 3)
cd deploy/sandbox && docker compose up -d --build # lauscht auf 127.0.0.1:8090
4. Satelliten
- Raspberry Pi: siehe
deploy/satellite/(Installer + systemd-Service). - ESP32-S3: siehe ESP-README; Build/Flash via VS Code (ESP-IDF-Extension) oder
idf.py build flash monitor.
🧩 Pluginsystem (/api/v1)
Externe Apps (z. B. der geplante ADHS-Helper als PWA) nutzen JARVIS über ein versioniertes,
Bearer-Key-authentifiziertes Gateway: LLM/Vision/STT/TTS, RAG, KV-Storage, Notify (Telegram/Satellit),
Tools, Scheduler und ein Event-WebSocket — verwaltet im Admin-UI (Tab 🧩, inkl. Rate-Limits & Telemetrie).
Vollständige Spezifikation + Template: pluginsystem.md · deploy/plugin-example/.
🗒️ Wartung & Weiterentwicklung
Der Projekt-Review mit allen Verbesserungen (umgesetzt + Backlog) liegt in
erweiterungen.md; bekannte Probleme + Lösungen in problems.md.
Tests: orchestrator/tests/ (run_unit.py, test_plugins.py, test_features.py,
test_phase1.py, Eval-Harness eval_tool_selection.py).
🔐 Sicherheit & Hinweise
- Selbst gehostet, LAN-orientiert. TLS ist selbstsigniert; für Produktion ein echtes Zertifikat einsetzen.
- Admin-Standardlogin
admin/administ nur ein Seed und erzwingt sofortigen Passwortwechsel — danach keine hartkodierten Nutzer. - Rechte-Modell: Tools/MCP-Server werden pro Gruppe freigeschaltet; Autonomie-Läufe respektieren Besitzer-Rechte und eine Admin-Blacklist.
- Code-Sandbox ist isoliert (Nicht-root,
cap_drop ALL, cgroup-/rlimit-Limits, Timeout); Internet pro Job per Admin-Toggle. - Konfiguriere host-spezifische Adressen/Tokens lokal — committe keine Secrets.
🗺️ Status & Roadmap
Lauffähig: Orchestrator (Tier 1), GPU-Inferenz (Tier 2), pgvector (Tier 3), Browser-Voice-Loop, Gedächtnis/RAG, Sprecher-Identität, Autonomie, MCP-Hub, Telegram, Code-Sandbox, Vision, Client-Agent (Protokoll + Thin-Client) sowie Pi- und ESP32-Sprachsatelliten.
Aktueller Gesamtstand: aktuellerstand.md · Detail-Phasen: roadmap.md.
📜 Lizenz
MIT © bmetallica
SH-Jarvis · selbst gehostet · Deutsch · made for the Smart Home im Keller 🏠