Ga naar inhoud
↑↓Navigeren ↵Openen escSluiten

Beveiliging

OpenChamber geeft toegang tot uw computer en code. Beveilig het daarom voordat anderen het kunnen bereiken. Deze pagina behandelt het interfacewachtwoord, passkeys en aandachtspunten voor netwerktoegang.

Een interfacewachtwoord instellen

Start OpenChamber met een wachtwoord om de browserinterface daarom te laten vragen:

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

U kunt het ook instellen via de omgevingsvariabele OPENCHAMBER_UI_PASSWORD in plaats van op de opdrachtregel. Na het aanmelden onthoudt OpenChamber het apparaat een tijd, zodat u niet telkens opnieuw hoeft in te loggen.

Stel altijd een wachtwoord in als anderen de instantie kunnen bereiken, zeker via een tunnel of het openbare internet.

Passkeys

Zodra een wachtwoord is ingesteld, kunt u passkeys toevoegen voor sneller aanmelden, bijvoorbeeld via Face ID, Touch ID of een beveiligingssleutel. Doe dit bij Instellingen → OpenChamber → Passkeys.

Passkeys zijn aan het huidige wachtwoord gekoppeld. Als u het wachtwoord wijzigt of verwijdert, worden opgeslagen passkeys gewist en moet u ze opnieuw toevoegen.

Apparaattokens

Apparaten die via Een apparaat verbinden zijn gekoppeld, gebruiken een eigen apparaattoken en niet het interfacewachtwoord. Koppelingslinks zijn eenmalig en verlopen als ze niet worden gebruikt. Alle gekoppelde apparaten staan bij Instellingen → Remote-instanties → Verbinden met deze server, waar u hun toegang op elk moment kunt intrekken. Verbindingen buitenshuis lopen via de end-to-endversleutelde Privérelay, die uw verkeer niet kan lezen.

Voordat u netwerktoegang geeft

  • Standaard luistert OpenChamber alleen op uw eigen computer, op 127.0.0.1. Breder luisteren vereist een bewuste wijziging. Stel eerst een wachtwoord in.
  • Gebruik voor eigen apparaten bij voorkeur koppeling met de Privérelay. Daarmee wordt niets openbaar bereikbaar.
  • Hebt u een openbare URL nodig, kies dan liever een tunnel of een privénetwerk zoals een VPN dan een rechtstreeks geopende internetpoort.
  • Gebruikt u een eigen HTTPS-server vóór OpenChamber, zie Reverse proxy.

Enterprise-modus

Als uw team gespreksinhoud alleen naar de modelproviders uit uw OpenCode-configuratie mag sturen, schakel dan de enterprise-modus in. Dat kan op twee manieren. Eén daarvan is voldoende.

Een beleidsbestand op de computer

Gebruik dit op laptops die u beheert. Plaats een bestand met de naam policy.json in een map waarin alleen een beheerder kan schrijven:

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

Het pad is onafhankelijk van de installatie van OpenChamber. De desktopapp, de via npm gestarte webserver, de CLI en de VS Code-extensie lezen hetzelfde bestand. U kunt het verspreiden met uw apparaatbeheer, zoals Jamf of Intune. Koppel het bestand voor een Docker-server op het Linux-pad.

{
"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": "..."
}
}

Alleen enterpriseMode is verplicht. organization verschijnt in Instellingen als ‘Beheerd door Acme’, zodat duidelijk is wie dit heeft ingesteld. relayUrl en jev leggen uw eigen relay en Jev-adres vast, met allowNetworkAccess kunnen andere apparaten OpenChamber via het netwerk bereiken, en allowedExtensions somt de extensierepository’s op die u vertrouwt. Ze worden allemaal hieronder beschreven.

  • Gebruikers kunnen wat het bestand inschakelt niet uitschakelen via Instellingen of omgevingsvariabelen.
  • Als het bestand de enterprise-modus inschakelt, beslist alleen het bestand. De omgevingsvariabelen hieronder voor de relay, Jev en netwerktoegang worden genegeerd, omdat een gebruiker die zelf kan instellen.
  • Als het bestand bestaat maar onleesbaar is of geen geldige JSON bevat, blijft de enterprise-modus aan zonder vastgelegde adressen. Instellingen meldt dat het beleid niet kon worden gelezen. Een ongeldig bestand heft de bescherming nooit stilzwijgend op.
  • Wijzigingen gelden zonder herstart.
  • OpenChamber draait onder de gebruiker, dus die kan het bestand lezen. Houd daar rekening mee voordat u er een API-sleutel in zet.

Een omgevingsvariabele

Op een server of in een container waarvan u de omgeving beheert, is dit voldoende:

Terminal window
OPENCHAMBER_ENTERPRISE_MODE=1

Op een laptop is dit een zwakkere beperking. De desktopapp leest de waarde uit het profiel van de aanmeldshell, bijvoorbeeld ~/.zshrc, en de gebruiker kan dat bewerken. Gebruik daar het beleidsbestand.

Met de variabele komen de relay, Jev, netwerktoegang en toegestane extensies ook uit hun eigen variabelen: OPENCHAMBER_RELAY_URL, OPENCHAMBER_JEV_URL, OPENCHAMBER_ALLOW_NETWORK_ACCESS=1, OPENCHAMBER_ALLOWED_EXTENSIONS (repository-URL’s gescheiden door komma’s) en OPENCHAMBER_ALLOW_LOCAL_EXTENSIONS=1. In Docker hebt u die voor netwerktoegang nodig, omdat de server ook buiten de container moet luisteren.

De OpenCode-CLI vastzetten

Staat OpenCode al op je computers en moet OpenChamber die installatie gebruiken, zet het pad dan in het beleidsbestand. Dat werkt met en zonder bedrijfsmodus.

{
"opencodeBinary": "/usr/local/bin/opencode"
}
  • OpenChamber start OpenCode alleen vanaf dat pad. Het negeert het pad uit Instellingen, OPENCODE_BINARY en de kopie die bij de desktop-app zit; die kopie blijft ongebruikt op de schijf staan.
  • Staat er op dat pad niets uitvoerbaars, dan valt OpenChamber niet terug op een andere kopie. Het stopt met een foutmelding die het pad noemt.
  • Instellingen toont het pad alleen-lezen, met een opmerking dat de beheerder het heeft ingesteld.
  • OpenChamber installeert of werkt een vastgezette OpenCode niet bij en meldt geen nieuwe versies. Updates komen met je eigen uitrol.
  • De CLI moet OpenCode 2.x zijn, minstens de versie die OpenChamber vraagt. Met een oudere blijft OpenChamber staan op het scherm “OpenCode bijwerken”.
  • Een map kan ook, als die opencode bevat (opencode.exe op Windows). Een omgevingsvariabele hiervoor is er niet, omdat gebruikers die zelf kunnen instellen.

Ingebouwde skillcatalogi verbergen

OpenChamber wordt geleverd met een paar openbare skillcatalogi (Anthropic, OpenAI, Cursor, Matt Pocock). Heeft uw organisatie een eigen catalogus, voeg die dan toe als aangepaste catalogus en verberg de ingebouwde in het beleidsbestand. Dit werkt met of zonder enterprisemodus.

{
"hideBuiltinSkillCatalogs": true
}

Instellingen biedt dan alleen catalogi aan die mensen zelf toevoegen, en OpenChamber laadt geen ingebouwde, ook niet op direct verzoek. Hier is geen omgevingsvariabele voor, omdat een gebruiker die zelf kan instellen.

Voorbeelden

Om het beleidsbestand op een Mac te plaatsen, voert u dit in Terminal uit als beheerder:

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

Op Linux werkt het hetzelfde, met /etc/openchamber als map.

Start op Windows PowerShell als administrator. De laatste regel zorgt dat alleen beheerders en het systeem in de map kunnen schrijven:

Terminal window
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"

Een server in Docker, toegevoegd aan de environment van docker-compose.yml. De container luistert ook buiten zichzelf en heeft dus toegestane netwerktoegang nodig:

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/

Open Instellingen → Providers om te controleren of het werkt: bovenaan verschijnt een melding over de enterprise-modus met de naam van uw organisatie.

Wat verandert er?

  • Modelproviders komen alleen uit uw OpenCode-configuratie. Providers verbinden, aanmelden, sleutels toevoegen en aangepaste providers aanmaken zijn uitgeschakeld in OpenChamber. Bestaande accounts verwijderen of ertussen wisselen blijft mogelijk. Dit sluit alleen de toegang via de app af. De eigenlijke beperking wordt afgedwongen door het hieronder beschreven OpenCode-beleid. Aanmelden bij een MCP-server uit uw OpenCode-configuratie blijft werken, want dat bereikt die server en geen modelprovider.
  • Classificatieproviders en Jev blijven uit, ook een aangepast adres dat iemand in Instellingen invoert. Het vangnet en Auto worden niet aangeboden en sessies worden alleen handmatig naar In bewerking verplaatst. Leg voor Jev via uw eigen infrastructuur een adres vast met jev in het beleidsbestand of met OPENCHAMBER_JEV_URL, plus OPENCHAMBER_JEV_MODEL en zo nodig OPENCHAMBER_JEV_API_KEY. Dit wordt de standaard. Gebruikers kunnen Jev nog uitschakelen, maar geen andere bron kiezen.
  • Voorlezen via OpenAI staat uit. Een aangepaste spraak- of transcriptieserver moet op dezelfde computer draaien. Lokale stemmen en lokale dicteermodellen blijven werken.
  • Pushmeldingen naar telefoons en browsers bevatten alleen een algemene titel, zoals ‘Antwoord van de agent is klaar’, zonder berichttekst of sessienaam. Desktopmeldingen blijven op uw computer en behouden de volledige tekst.
  • Updatecontroles blijven werken, zodat beveiligingsupdates u bereiken, maar versturen nooit gebruiksgegevens, zelfs geen anonieme installatie-ID.
  • Externe tunnels via Cloudflare of ngrok staan uit. Een tunnelprovider ontsleutelt het verkeer aan de rand van zijn netwerk en kan elk verzoek lezen.
  • .drawio-diagrammen openen als XML-tekst. De diagrameditor is een pagina van diagrams.net, en een diagram daarin openen geeft het bestand aan die pagina.
  • Lettertypen voor interface en code die van een openbaar CDN laden, vallen terug op de systeemlettertypen. Uw keuze blijft bewaard voor als de modus uit staat.
  • De Privérelay werkt alleen via uw eigen relay. Draai een zelfgehoste relay en stel die in met relayUrl in het beleidsbestand of OPENCHAMBER_RELAY_URL=wss://relay.example.com/ws. De gedeelde relay kan uw verkeer ook niet lezen dankzij end-to-endversleuteling, maar een eigen relay houdt de verbindingsmetadata en de toegang tot deze computer binnen uw netwerk. Zonder eigen relay kunt u helemaal geen apparaten koppelen.
  • OpenChamber luistert alleen op de computer waarop het draait. De desktopinstelling waarmee andere apparaten op het lokale netwerk de app kunnen openen staat uit, en de server weigert te starten op een netwerkadres, via de CLI (--host, --lan) of via de omgeving. Verschijnt het beleidsbestand terwijl de app draait, dan worden verbindingen van andere computers verbroken tot de volgende start. Sta netwerktoegang toe met "allowNetworkAccess": true in het beleidsbestand, of met OPENCHAMBER_ALLOW_NETWORK_ACCESS=1 als de omgeving de enterprise-modus inschakelt. Houd er rekening mee dat de verbinding onversleuteld HTTP is, dus op een gedeeld netwerk kan iedereen meelezen. Zet een server die anderen bereiken achter uw eigen HTTPS.
  • Extensies die gegevens buiten de computer kunnen sturen (omdat ze met een externe API praten, van externe adressen laden of een achtergronddienst draaien), worden alleen geïnstalleerd vanuit een Git-repository die in allowedExtensions staat. Extensies die niets hiervan doen, installeert u zoals altijd. Een geïnstalleerde extensie van een andere bron blijft uit, en Instellingen vermeldt waarom. De lijst bevat repository-URL’s, omdat een extensie zelf haar naam kiest; een vermelding die eindigt op /, zoals https://github.com/acme/, staat elke repository daaronder toe. Op de computers van mensen die extensies bouwen, staat "allowLocalExtensions": true ook installeren vanuit een lokale map toe. Een ZIP blijft hoe dan ook geblokkeerd.
  • Omgevingsvariabelen uit Instellingen → Algemeen en uit opencode service set env bereiken OpenCode niet, omdat er een providersleutel tussen kan zitten. Git, de terminal en projectacties krijgen ze nog wel.
  • In de VS Code-extensie is providers verbinden uitgeschakeld en versturen updatecontroles geen gebruiksgegevens. De extensie heeft sowieso geen Jev, relay, tunnels, pushmeldingen of cloudspraak.

Taken voor kleine modellen, zoals sessietitels, samenvattingen, commitberichten en rondleidingen door diffs, vereisen geen speciale modus. Ze gebruiken altijd het kleine model dat u in Instellingen kiest, een klein model van de provider waarmee u werkt, of het standaardmodel uit uw OpenCode-configuratie. Ze vallen nooit terug op een andere provider die toevallig verbonden is.

OpenCode bepaalt welke modelproviders überhaupt gebruikt mogen worden, niet OpenChamber. Leg dit vast met OpenCode-beleid. Weiger eerst alle providers en sta daarna de goedgekeurde providers toe.

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

Een geweigerde provider verdwijnt ook als iemand er een sleutel voor toevoegt. Plaats het beleid in de algemene ~/.config/opencode/opencode.jsonc, waar een project het niet kan opheffen, of lever het via een OpenCode Console-werkruimte, die het laatste woord heeft. De enterprise-modus beperkt daarnaast wat OpenChamber zelf verstuurt.

Zoekopdrachten op het web en het ophalen van pagina’s door de agent lopen ook via OpenCode, naar de zoekdienst en de pagina’s zelf. Als die uw netwerk niet mogen verlaten, weiger ze dan met hetzelfde soort beleid:

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

Zie ook