Zum Inhalt springen
↑↓Navigieren ↵Öffnen escSchließen

Sicherheit

OpenChamber gewährt Zugriff auf Ihren Rechner und Ihren Code. Sperren Sie es also ab, bevor jemand außer Ihnen darauf zugreifen kann. Diese Seite behandelt das UI-Passwort, Passkeys und was Sie wissen sollten, bevor Sie OpenChamber in ein Netzwerk exponieren.

UI-Passwort setzen

Starten Sie OpenChamber mit einem Passwort, und die Browser-UI fragt danach:

Terminal-Fenster
openchamber --ui-password be-creative-here

Sie können es auch über die Umgebungsvariable OPENCHAMBER_UI_PASSWORD setzen, statt es in die Befehlszeile zu schreiben. Nach der Anmeldung merkt sich OpenChamber das Gerät für eine Weile, damit Sie nicht jedes Mal gefragt werden.

Setzen Sie immer ein Passwort, wenn die Instanz für andere erreichbar ist — besonders über einen Tunnel oder das öffentliche Internet.

Passkeys

Sobald ein Passwort gesetzt ist, können Sie Passkeys (Face ID, Touch ID, ein Sicherheitsschlüssel) für eine schnellere Anmeldung hinzufügen. Fügen Sie sie unter Einstellungen → OpenChamber → Passkeys hinzu.

Passkeys sind an das aktuelle Passwort gebunden. Wenn Sie das Passwort ändern oder entfernen, werden gespeicherte Passkeys gelöscht und Sie fügen sie erneut hinzu.

Geräte-Tokens

Geräte, die über Ein Gerät verbinden gekoppelt werden, authentifizieren sich mit eigenen gerätespezifischen Tokens, nicht mit dem UI-Passwort. Pairing-Links sind nur einmal nutzbar und laufen ab, wenn sie nicht verwendet werden; jedes gekoppelte Gerät wird unter Einstellungen → Remote-Instanzen → Mit diesem Server verbinden aufgeführt, wo Sie es jederzeit widerrufen können. Verbindungen von außerhalb laufen über das Private Relay, das Ende-zu-Ende verschlüsselt ist und Ihren Traffic nicht lesen kann.

Bevor Sie es freigeben

  • Standardmäßig lauscht OpenChamber nur auf Ihrem eigenen Rechner (127.0.0.1). Es braucht eine bewusste Änderung, um breiter zu lauschen, und Sie sollten vorher ein Passwort setzen.
  • Für Ihre eigenen Geräte bevorzugen Sie Pairing mit dem Private Relay — dabei wird überhaupt nichts öffentlich freigegeben.
  • Wenn Sie eine öffentliche URL brauchen, verwenden Sie lieber einen Tunnel oder ein privates Netzwerk (z. B. VPN), statt einen Port ins Internet zu öffnen.
  • Wenn Sie OpenChamber hinter Ihrem eigenen HTTPS-Server betreiben, sehen Sie sich Reverse Proxy an.

Enterprise-Modus

Wenn Ihr Team Gesprächsinhalte nur an die Modellanbieter senden darf, die Sie in OpenCode konfiguriert haben, schalten Sie den Enterprise-Modus ein. Dafür gibt es zwei Wege, und einer davon reicht.

Eine Richtliniendatei auf dem Rechner

Das ist der Weg für Laptops, die Sie verwalten. Legen Sie eine Datei namens policy.json in einen Ordner, in den nur ein Administrator schreiben darf:

SystemPfad
macOS/Library/Application Support/OpenChamber/policy.json
WindowsC:\ProgramData\OpenChamber\policy.json
Linux/etc/openchamber/policy.json

Der Pfad hängt nicht davon ab, wie OpenChamber installiert ist. Die Desktop-App, der über npm gestartete Webserver, die CLI und die VS Code-Erweiterung lesen alle dieselbe Datei. Verteilen können Sie sie über Ihre Geräteverwaltung (Jamf, Intune und Ähnliche). Für einen Server in Docker binden Sie die Datei unter dem Linux-Pfad ein.

{
"enterpriseMode": true,
"organization": "Acme",
"relayUrl": "wss://relay.acme.com/ws",
"allowNetworkAccess": false,
"allowedExtensions": ["https://github.com/acme/"],
"jev": {
"url": "https://llm.acme.com/v1/systemone",
"model": "acme-classifier",
"apiKey": "..."
}
}

Nötig ist nur enterpriseMode. organization erscheint in den Einstellungen als „Verwaltet von Acme“, damit alle wissen, wer das entschieden hat. Mit relayUrl und jev legen Sie Ihr eigenes Relay und Ihren eigenen Jev-Endpunkt fest, allowNetworkAccess lässt andere Geräte OpenChamber über das Netzwerk erreichen, und allowedExtensions listet die Erweiterungs-Repositories auf, denen Sie vertrauen. Alle sind unten beschrieben.

  • Nichts, was ein Nutzer einstellt, weder in den Einstellungen noch in der Umgebung, schaltet aus, was die Datei einschaltet.
  • Wenn die Datei den Enterprise-Modus einschaltet, entscheidet nur die Datei. Die Umgebungsvariablen unten für Relay, Jev und Netzwerkzugriff werden ignoriert, weil ein Nutzer sie selbst setzen kann.
  • Wenn die Datei existiert, sich aber nicht lesen lässt oder kein gültiges JSON ist, bleibt der Enterprise-Modus an und nichts wird festgelegt. Die Einstellungen zeigen dann, dass die Richtlinie nicht gelesen werden konnte. Eine kaputte Datei hebt den Schutz nie stillschweigend auf.
  • Änderungen greifen ohne Neustart.
  • OpenChamber läuft unter dem Konto des Nutzers, also kann der Nutzer die Datei lesen. Denken Sie daran, bevor Sie einen API-Schlüssel hineinschreiben.

Eine Umgebungsvariable

Auf einem Server oder in einem Container, wo Sie die Umgebung selbst in der Hand haben, genügt das:

Terminal-Fenster
OPENCHAMBER_ENTERPRISE_MODE=1

Auf einem Laptop ist das die schwächere Sperre: Die Desktop-App liest die Variable aus dem Profil der Login-Shell (zum Beispiel ~/.zshrc), und das kann der Nutzer bearbeiten. Nehmen Sie dort die Richtliniendatei.

Mit der Variable kommen auch Relay, Jev, Netzwerkzugriff und erlaubte Erweiterungen aus eigenen Variablen: OPENCHAMBER_RELAY_URL, OPENCHAMBER_JEV_URL, OPENCHAMBER_ALLOW_NETWORK_ACCESS=1, OPENCHAMBER_ALLOWED_EXTENSIONS (Repository-URLs, durch Kommas getrennt) und OPENCHAMBER_ALLOW_LOCAL_EXTENSIONS=1. In Docker brauchen Sie die für den Netzwerkzugriff, weil der Server über den Container hinaus lauschen muss.

Die OpenCode-CLI festlegen

Wenn OpenCode auf deinen Rechnern schon installiert ist und OpenChamber genau diese Installation nutzen soll, trag ihren Pfad in die Richtliniendatei ein. Das funktioniert mit und ohne Enterprise-Modus.

{
"opencodeBinary": "/usr/local/bin/opencode"
}
  • OpenChamber startet OpenCode nur von diesem Pfad. Der Pfad aus den Einstellungen, OPENCODE_BINARY und die mit der Desktop-App gelieferte Kopie werden ignoriert; die Kopie bleibt ungenutzt auf der Festplatte.
  • Liegt unter dem Pfad nichts Ausführbares, weicht OpenChamber nicht auf eine andere Kopie aus. Es stoppt mit einer Fehlermeldung, die den Pfad nennt.
  • Die Einstellungen zeigen den Pfad schreibgeschützt, mit dem Hinweis, dass der Administrator ihn festgelegt hat.
  • OpenChamber installiert oder aktualisiert ein festgelegtes OpenCode nicht und meldet keine neuen Versionen. Updates kommen mit deinem Rollout.
  • Die CLI muss OpenCode 2.x sein, mindestens die Version, die OpenChamber verlangt. Mit einer älteren bleibt OpenChamber beim Bildschirm „OpenCode aktualisieren“ stehen.
  • Ein Ordner geht auch, wenn er opencode enthält (opencode.exe unter Windows). Eine Umgebungsvariable dafür gibt es nicht, weil Nutzer diese selbst setzen können.

Integrierte Skill-Kataloge ausblenden

OpenChamber bringt einige öffentliche Skill-Kataloge mit (Anthropic, OpenAI, Cursor, Matt Pocock). Wenn deine Organisation einen eigenen pflegt, füge ihn als eigenen Katalog hinzu und blende die integrierten in der Richtliniendatei aus. Das funktioniert mit oder ohne Enterprise-Modus.

{
"hideBuiltinSkillCatalogs": true
}

Die Einstellungen bieten dann nur Kataloge an, die Personen selbst hinzufügen, und OpenChamber lädt keinen integrierten, auch nicht auf direkte Anfrage. Eine Umgebungsvariable gibt es dafür nicht, da Nutzer diese selbst setzen können.

Beispiele

Die Richtliniendatei auf einem Mac ablegen. Führen Sie im Terminal als Administrator aus:

Terminal-Fenster
sudo mkdir -p "/Library/Application Support/OpenChamber"
sudo tee "/Library/Application Support/OpenChamber/policy.json" > /dev/null <<'JSON'
{
"enterpriseMode": true,
"organization": "Acme"
}
JSON

Unter Linux geht es genauso, nur mit /etc/openchamber als Ordner.

Unter Windows starten Sie PowerShell als Administrator. Die letzte Zeile sorgt dafür, dass nur Administratoren und das System in den Ordner schreiben können:

Terminal-Fenster
New-Item -ItemType Directory -Force "C:\ProgramData\OpenChamber" | Out-Null
@'
{
"enterpriseMode": true,
"organization": "Acme"
}
'@ | Set-Content -Encoding UTF8 "C:\ProgramData\OpenChamber\policy.json"
icacls "C:\ProgramData\OpenChamber" /inheritance:r /grant:r "Administrators:(OI)(CI)F" "SYSTEM:(OI)(CI)F" "Users:(OI)(CI)RX"

Ein Server in Docker, ergänzt im environment von docker-compose.yml. Der Container lauscht über sich hinaus und braucht deshalb erlaubten Netzwerkzugriff:

environment:
OPENCHAMBER_UI_PASSWORD: ${OPENCHAMBER_UI_PASSWORD}
OPENCHAMBER_ENTERPRISE_MODE: "1"
OPENCHAMBER_ALLOW_NETWORK_ACCESS: "1"
# Optional:
OPENCHAMBER_RELAY_URL: wss://relay.acme.com/ws
OPENCHAMBER_JEV_URL: https://llm.acme.com/v1/systemone
OPENCHAMBER_JEV_MODEL: acme-classifier
OPENCHAMBER_JEV_API_KEY: ${ACME_JEV_KEY}
OPENCHAMBER_ALLOWED_EXTENSIONS: https://github.com/acme/

Zur Kontrolle öffnen Sie Einstellungen → Anbieter: Oben erscheint ein Hinweis zum Enterprise-Modus mit dem Namen Ihrer Organisation.

Was sich ändert

  • Modellanbieter kommen nur aus Ihrer OpenCode-Konfiguration. Einen Anbieter verbinden, sich bei einem anmelden, einen Schlüssel hinzufügen oder einen eigenen Anbieter anlegen ist in OpenChamber ausgeschaltet; bestehende Konten entfernen oder wechseln funktioniert weiter. Das schließt nur den Weg über die App; die eigentliche Sperre ist die unten beschriebene OpenCode-Richtlinie. Die Anmeldung bei einem MCP-Server aus Ihrer OpenCode-Konfiguration funktioniert weiter, denn sie erreicht diesen Server und keinen Modellanbieter.
  • Klassifizierungsanbieter (Jev) bleiben aus, auch ein eigener Endpunkt, den jemand in den Einstellungen einträgt. Sicherheitsnetz und Auto werden nicht angeboten, und Sitzungen kommen nur von Hand in Arbeit. Um Jev über Ihre eigene Infrastruktur zu nutzen, legen Sie einen Endpunkt mit jev in der Richtliniendatei oder mit OPENCHAMBER_JEV_URL fest (dazu OPENCHAMBER_JEV_MODEL und, falls er einen braucht, OPENCHAMBER_JEV_API_KEY). Er wird zur Voreinstellung, lässt sich weiterhin ausschalten, und etwas anderes kann nicht gewählt werden.
  • Vorlesen über OpenAI ist aus. Ein eigener Server für Sprachausgabe oder Transkription muss auf demselben Rechner laufen. Lokale Stimmen und lokale Diktiermodelle funktionieren weiter.
  • Push-Benachrichtigungen an Telefone und Browser enthalten nur einen allgemeinen Titel wie „Agent response is ready“, ohne Nachrichtentext oder Sitzungsnamen. Desktop-Benachrichtigungen bleiben auf Ihrem Rechner und behalten den vollständigen Text.
  • Update-Prüfungen laufen weiter, damit Sicherheitsfixes Sie weiterhin erreichen, aber sie melden nie Nutzungsdaten, nicht einmal die anonyme Installations-ID.
  • Externe Tunnel (Cloudflare, ngrok) sind aus. Ein Tunnelanbieter entschlüsselt den Traffic an seinem Edge und sieht jede Anfrage im Klartext.
  • .drawio-Diagramme öffnen sich als XML-Text. Der Diagrammeditor ist eine Seite von diagrams.net, und ein dort geöffnetes Diagramm wird ihr übergeben.
  • Schriften für Oberfläche und Code, die von einem öffentlichen CDN geladen werden, fallen auf die Systemschriften zurück. Deine Auswahl bleibt für die Zeit ohne den Modus erhalten.
  • Das Private Relay funktioniert nur über Ihr eigenes Relay. Betreiben Sie ein selbst gehostetes Relay und richten Sie OpenChamber mit relayUrl in der Richtliniendatei oder mit OPENCHAMBER_RELAY_URL=wss://relay.example.com/ws darauf aus. Auch das gemeinsame Relay kann Ihren Traffic nicht lesen, da es Ende-zu-Ende verschlüsselt ist, aber Ihr eigenes hält die Verbindungsmetadaten und den Weg zu diesem Rechner in Ihrem Netzwerk. Ohne eigenes Relay lassen sich überhaupt keine Geräte koppeln.
  • OpenChamber lauscht nur auf dem Rechner, auf dem es läuft. Die Desktop-Einstellung, mit der andere Geräte im lokalen Netzwerk die App öffnen können, ist aus, und der Server startet nicht auf einer Netzwerkadresse, weder über die CLI (--host, --lan) noch über die Umgebung. Taucht die Richtliniendatei auf, während die App läuft, werden Verbindungen von anderen Rechnern bis zum nächsten Start getrennt. Netzwerkzugriff erlauben Sie mit "allowNetworkAccess": true in der Richtliniendatei oder mit OPENCHAMBER_ALLOW_NETWORK_ACCESS=1, wo die Umgebung den Enterprise-Modus einschaltet. Denken Sie daran, dass die Verbindung unverschlüsseltes HTTP ist, in einem gemeinsamen Netzwerk kann sie also jeder mitlesen; stellen Sie einen Server, den andere erreichen, hinter Ihr eigenes HTTPS.
  • Erweiterungen, die Daten vom Rechner nach außen senden können (weil sie eine externe API ansprechen, von externen Adressen laden oder einen Hintergrunddienst ausführen), lassen sich nur aus einem Git-Repository installieren, das in allowedExtensions steht. Erweiterungen, die nichts davon tun, installieren Sie wie gewohnt. Eine installierte Erweiterung aus einer anderen Quelle bleibt aus, und die Einstellungen sagen, warum. Die Liste enthält Repository-URLs, weil eine Erweiterung ihren Namen selbst wählt; ein Eintrag, der auf / endet, wie https://github.com/acme/, erlaubt jedes Repository darunter. Auf den Rechnern von Leuten, die Erweiterungen entwickeln, erlaubt "allowLocalExtensions": true außerdem die Installation aus einem lokalen Ordner. Ein ZIP bleibt in jedem Fall gesperrt.
  • Umgebungsvariablen aus Einstellungen → Allgemein und aus opencode service set env erreichen OpenCode nicht, weil eine davon einen Anbieterschlüssel enthalten könnte. Git, das Terminal und Projektaktionen bekommen sie weiterhin.
  • In der VS Code-Erweiterung ist das Verbinden von Anbietern aus, und Update-Prüfungen melden keine Nutzungsdaten. Jev, Relay, Tunnel, Push-Benachrichtigungen und Sprachdienste aus der Cloud gibt es dort ohnehin nicht.

Aufgaben des kleinen Modells (Sitzungstitel, Zusammenfassungen, Commit-Nachrichten, die Durchsicht der Änderungen) brauchen keinen besonderen Modus. Sie laufen immer auf dem kleinen Modell, das Sie in den Einstellungen gewählt haben, auf einem kleinen Modell des Anbieters, mit dem Sie gerade arbeiten, oder auf dem Standardmodell aus Ihrer OpenCode-Konfiguration. Sie weichen nie auf einen anderen Anbieter aus, der zufällig ebenfalls verbunden ist.

Welche Modellanbieter überhaupt genutzt werden dürfen, entscheidet OpenCode, nicht OpenChamber. Sperren Sie das mit OpenCode-Richtlinien: alle Anbieter verbieten, dann die freigegebenen erlauben.

{
"experimental": {
"policies": [
{ "action": "provider.use", "resource": "*", "effect": "deny" },
{ "action": "provider.use", "resource": "anthropic", "effect": "allow" }
]
}
}

Ein verbotener Anbieter verschwindet, selbst wenn jemand einen Schlüssel dafür hinzufügt. Legen Sie die Richtlinien in die globale ~/.config/opencode/opencode.jsonc, wo ein Projekt sie nicht aufheben kann, oder liefern Sie sie aus einem OpenCode-Console-Workspace aus, der das letzte Wort hat. Der Enterprise-Modus deckt ab, was OpenChamber selbst darüber hinaus sendet.

Die Websuchen und Seitenabrufe des Agenten laufen ebenfalls über OpenCode, zum Suchdienst und zu den Seiten selbst. Wenn sie Ihr Netzwerk nicht verlassen sollen, verbieten Sie sie mit derselben Art von Richtlinie:

{ "action": "permission", "resource": "websearch:*", "effect": "deny" },
{ "action": "permission", "resource": "webfetch:*", "effect": "deny" }

Verwandt

  • Ein Gerät verbinden — einmaliges Pairing und gerätespezifische Tokens
  • Private Relay — Ende-zu-Ende-verschlüsselter Zugriff von überall
  • Tunnel — eine öffentliche URL freigeben, wenn Sie eine brauchen
  • Reverse Proxy — OpenChamber hinter Ihrem eigenen Server betreiben