Jarvis: Wie mein Sprachassistent aufgebaut ist. Ablauf, Entscheidungen, Grenzen.

Stand · privates Projekt, gebaut mit Claude Code

Jarvis ist mein persönlicher Sprachassistent. Ich spreche mit ihm, er versteht mich, nutzt Werkzeuge und antwortet mit Stimme. Gebaut habe ich ihn in Python, gemeinsam mit Claude Code. Der Code ist privat. Hier beschreibe ich, wie er funktioniert.

Ablauf einer Anfrage

Ich drücke eine Taste oder sage „Hey Jarvis“. Whisper macht aus meiner Sprache Text. Der Text geht an Claude, und Claude darf Werkzeuge benutzen, zum Beispiel für Wetter, Timer oder Musik. Die Antwort wird als Stimme ausgegeben. Es gibt außerdem eine Weboberfläche für den Browser und das iPhone.

Ablauf einer Anfrage an Jarvis Vier Stationen von links nach rechts: Eingabe per Taste oder Wake-Word, Whisper wandelt Sprache in Text, Claude mit Werkzeugen, Antwort als Stimme. Taste oder„Hey Jarvis“ WhisperSprache → Text Claudemit Werkzeugen Antwortals Stimme 1 Eingabe2 Text3 KI-Agent4 Ausgabe

Claude bekommt nicht alle Werkzeuge auf einmal. Die wichtigsten gehen in voller Beschreibung mit, der Rest steht als Ein-Zeilen-Liste da und wird bei Bedarf nachgeladen. Das spart Tokens. Dazu gibt es ein festes Budget für den Anfang jeder Anfrage. Wird eine Beschreibung zu lang, kürze ich sie. Das Limit erhöhe ich nicht.

3.619automatische Tests (28.10.2026, Laufzeit rund 5 Minuten)
1Codebasis für Mac und Windows
4Stationen pro Anfrage

Entscheidungen und was dagegen sprach

Verschlüsselte Daten, Schlüssel im Schlüsselbund

Persönliche Daten liegen verschlüsselt auf dem Mac. Der Schlüssel steckt im macOS-Schlüsselbund, nicht im Projektordner. Dafür gibt es mehr Aufwand und ein Risiko: Geht der Schlüssel verloren, sind die Daten weg. Dieses Risiko nehme ich in Kauf.

Eine extra Bestätigung für heikle Werkzeuge

Werkzeuge, die etwas verändern oder Persönliches anfassen, brauchen eine extra Bestätigung, am Mac auch per Touch ID. Jedes neue Werkzeug muss ich bewusst einordnen, ob es hinter diese Sperre gehört. Genau diese Lücke hat eine meiner Sicherheitsprüfungen gefunden: ein Werkzeug, das ich vergessen hatte einzuordnen.

Tests schützen die echten Daten

Die Tests laufen mit umgeleiteten Datenpfaden, damit sie nie meine echten Daten ändern. Wie ich das gelernt habe, steht in der Notiz über Tests.

Tests lokal, Cloud nur nachts

Das Repo ist privat, und die kostenlosen Rechenminuten bei GitHub sind begrenzt. Im Oktober waren sie einmal aufgebraucht. Seitdem teste ich lokal und pushe sparsam. Zusätzlich läuft nachts ein Cloud-Lauf auf Linux, die „Nachtwache“. Sie führt die Tests aus und meldet Fehler. Das fängt Dinge, die nur bei mir am Mac funktionieren. Nachteil: Der Lauf sieht keine Mac-spezifischen Tests.

Nachtschicht-Routine mit Draft-PRs

Ich schreibe ein Issue und gebe ihm ein Label. Nachts nimmt eine Routine das älteste dieser Issues, baut es auf einem eigenen Branch, lässt die Tests laufen und öffnet einen Draft-PR. Sie merged nie. Das mache ich morgens selbst. Gibt es kein Issue, tut sie nichts. Mehr dazu in der Notiz über Agents.

Eine Codebasis für Mac und Windows

Ich wollte keine zweite Version pflegen. Mac-Code liegt deshalb hinter einer Plattform-Schicht, und Windows läuft in der CI. Der Preis: Alles, was nur am Mac geht, muss ich sauber markieren.

Was ich gelernt habe

Grenzen

Einige Tests schlagen gelegentlich fehl, etwa bei Zeitabhängigkeit, Netzproblemen oder hoher Last. Ein Teil der neueren Funktionen ist noch nicht im Alltag erprobt. Und 3.619 Tests sagen nur, dass die Fälle klappen, an die ich gedacht habe.

Warum der Code privat ist

Jarvis arbeitet mit sehr persönlichen Daten. Selbst ein sauberer Code gibt Hinweise darauf, was es gibt und wo es liegt. Ich zeige deshalb den Aufbau, aber keinen Code und keine Screenshots mit Inhalten. Öffentlich und vorzeigbar ist dafür Agent-Board.

Gebaut mit Claude Code. Ich entscheide, was gebaut wird, und prüfe, was zurückkommt. Persönliche Daten nenne ich hier bewusst nicht.