← back to dev.johannesbrunner.de

Jarvis-3 Docs

Server Access & Authentication — v0.3.0pre

Overview

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.

Connection Details

PropertyValue
Hostnamedev.johannesbrunner.de
Port (SSH)22
Port (HTTPS)443 (redirect from 80)
IPv4 + IPv6 werden beide unterstützt.

Authentication

SSH Certificate Authority

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).

User Certificates

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.

Host Certificate

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.

How to Get Access

Zugang zu Jarvis-3 kann nur durch den Administrator gewährt werden. Der Ablauf:

  1. Du erstellst lokal ein Ed25519-Schlüsselpaar:
    ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_j3 -C "dein-name@dev"
  2. Du sendest den Public Key (~/.ssh/id_ed25519_j3.pub) an den Administrator.
  3. Der Administrator signiert den Key mit der CA und stellt dir das Zertifikat (id_ed25519_j3-cert.pub) sowie den CA-Host-Key aus.
  4. Du legst alle Dateien in ~/.ssh/ ab:
    chmod 600 ~/.ssh/id_ed25519_j3
    chmod 644 ~/.ssh/id_ed25519_j3.pub ~/.ssh/id_ed25519_j3-cert.pub
  5. Optional: Host-CA in known_hosts eintragen:
    echo '@cert-authority *.johannesbrunner.de <CA-Host-Key>' >> ~/.ssh/known_hosts
Note: Der Private Key verlässt niemals deinen Rechner. Nur der Public Key wird zum Signieren eingereicht.

Client Setup

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.

JBot WebSocket Protocol

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.

AbschnittInhalt
VerbindungsaufbauURL-Schema, Authentifizierung, Token-Management, TLS, Konfiguration
Client → ServerAlle Envelope-Typen (message, new_chat, attach, fork_chat, set_workspace_scope, transcribe_audio)
Server → ClientAlle 14 Event-Typen mit Feldspezifikation
NachrichtenflussSequenzdiagramme: Verbindung, einfache Interaktion, Streaming, Reasoning, Tool-Ausführung, Reconnect
Medien-UploadUnterstützte MIME-Typen, Größenlimits, Base64-Data-URL-Format, Fehlerbehandlung
Node.js-ClientReferenzimplementierung: JBotClient-Klasse, CLI-Chat, Streaming, Bilder senden, Reconnect, TypeScript-Typen
Quickstart: ws://<host>:8765/?client_id=<id>&token=<token> — nach dem ready-Event eine Nachricht senden → Streaming-Response empfangen.

→ Vollständige WebSocket-Protokoll-Dokumentation öffnen

Security Notes