Jarvis-3 läuft auf einem dedicated Server und ist ausschließlich per SSH und HTTPS erreichbar. Der Zugriff erfolgt passwortlos über signierte SSH-Zertifikate. Es gibt keine Benutzerverwaltung mit Passwörtern — jeder Zugang wird durch ein individuell signiertes Zertifikat autorisiert.
| Property | Value |
|---|---|
| Hostname | dev.johannesbrunner.de |
| Port (SSH) | 22 |
| Port (HTTPS) | 443 (redirect from 80) |
Der Server betreibt eine eigene, lokale Certificate Authority (CA). Statt Passwörtern oder einfachen Public Keys werden signierte SSH-Zertifikate verwendet. Ein Zertifikat ist ein Public Key, der mit dem CA-Key signiert wurde und zusätzliche Metadaten trägt (Principal, Gültigkeitsdauer, Berechtigungen).
Jeder Benutzer erhält ein eigenes Schlüsselpaar, dessen Public Key von der CA signiert wird. Das signierte Zertifikat wird zusammen mit dem Private Key auf dem Client abgelegt. Der Server vertraut ausschließlich der CA — autorisierte Benutzer sind alle, die ein gültiges, von der CA signiertes Zertifikat vorweisen können.
Der Server präsentiert ein signiertes Host-Zertifikat, sodass Clients
die Identität des Servers prüfen können, ohne sich auf TOFU
(Trust on First Use) verlassen zu müssen. Der öffentliche CA-Key
für Hosts wird via known_hosts auf dem Client hinterlegt.
Zugang zu Jarvis-3 kann nur durch den Administrator gewährt werden. Der Ablauf:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_j3 -C "dein-name@dev"
~/.ssh/id_ed25519_j3.pub)
an den Administrator.id_ed25519_j3-cert.pub) sowie den
CA-Host-Key aus.~/.ssh/ ab:
chmod 600 ~/.ssh/id_ed25519_j3
chmod 644 ~/.ssh/id_ed25519_j3.pub ~/.ssh/id_ed25519_j3-cert.pub
known_hosts eintragen:
echo '@cert-authority *.johannesbrunner.de <CA-Host-Key>' >> ~/.ssh/known_hosts
Für den täglichen Gebrauch empfiehlt sich ein Eintrag in
~/.ssh/config:
Host dev-j3
Hostname dev.johannesbrunner.de
User johannes
IdentityFile ~/.ssh/id_ed25519_j3
CertificateFile ~/.ssh/id_ed25519_j3-cert.pub
Danach reicht ssh dev-j3 für die Verbindung.
Vollständige Protokollspezifikation für den JBot WebSocket-Kanal. Diese Dokumentation richtet sich an Entwickler, die einen eigenen Client (z. B. in Node.js, Python, Go) für die JBot WebSocket-API implementieren möchten.
| Abschnitt | Inhalt |
|---|---|
| Verbindungsaufbau | URL-Schema, Authentifizierung, Token-Management, TLS, Konfiguration |
| Client → Server | Alle Envelope-Typen (message, new_chat, attach, fork_chat, set_workspace_scope, transcribe_audio) |
| Server → Client | Alle 14 Event-Typen mit Feldspezifikation |
| Nachrichtenfluss | Sequenzdiagramme: Verbindung, einfache Interaktion, Streaming, Reasoning, Tool-Ausführung, Reconnect |
| Medien-Upload | Unterstützte MIME-Typen, Größenlimits, Base64-Data-URL-Format, Fehlerbehandlung |
| Node.js-Client | Referenzimplementierung: JBotClient-Klasse, CLI-Chat, Streaming, Bilder senden, Reconnect, TypeScript-Typen |
ws://<host>:8765/?client_id=<id>&token=<token>
— nach dem ready-Event eine Nachricht senden → Streaming-Response empfangen.