Alle Seiten
Auf dieser Seite

config.json

config.json ist die eigene Konfigurationsdatei des Relays: sein Port, wer es erreichen darf, das Zugriffstoken, die Timer, die entscheiden, wann ein Turn als hängend gilt, und die optionalen Tunnel und die Preview-Lane. oar setup legt sie an. Alles, wonach das Setup nicht fragt, bearbeitest du von Hand.

Das meiste, was du in der Weboberfläche einstellst, steht nicht in dieser Datei. Siehe Einstellungen in der Weboberfläche und der Umgebung.

Wo die Datei liegt #

Installation Pfad
Globale Installation unter macOS, Linux und WSL ~/.oar/config.json
Globale Installation unter Windows %APPDATA%\oar\config.json
Globale Installation mit gesetztem OAR_STATE_ROOT config.json in diesem Ordner
Git-Checkout server/config.json im Checkout

OAR_STATE_ROOT verschiebt den ganzen Zustandsordner einer globalen Installation (Config, Daten und Logs); siehe Wo OAR seine Dateien ablegt.

COPILOT_WEB_RELAY_CONFIG richtet das Relay auf eine bestimmte Datei aus, egal wo sie liegt, aber nur dort, wo das Relay ohne den eigenen Starter von oar gestartet wird: node server/server.js oder oar copilot (wenn die Datei existiert). oar setup, oar start, oar restart und der Dienst nutzen immer die eigene config.json der Installation, egal was die Variable sagt. In einem Checkout ohne server/config.json legt oar copilot seine Datei stattdessen in ~/.config/copilot-remote an (%LOCALAPPDATA%\copilot-remote unter Windows). Siehe Umgebungsvariablen.

Das Relay hält die Datei nur für ihren Besitzer lesbar (Modus 0600 unter macOS und Linux), weil sie das Zugriffstoken im Klartext enthält. Behandle eine Kopie davon wie ein Passwort.

Wer sie schreibt #

  • oar setup schreibt das Token, localhostOnly und port und lässt jeden anderen Key so, wie es ihn vorfindet. Eine Datei, die es anlegt, oder eine, der sie fehlen, bekommt außerdem pollIntervalMs, processingTimeoutMs (600000) und conversationSessionMode. Siehe oar setup und Erster Start.
  • Das Relay schreibt cliBinaries, wenn du eine Provider-CLI aus Settings (Einstellungen) installierst oder aktualisierst. Es ändert nur diesen Key. Kann es die Datei nicht als JSON lesen, verweigert es das Schreiben und behält die Zuordnung nur für den laufenden Prozess.
  • Das Relay legt die Datei an, wenn beim Start keine existiert, mit leerem authToken, Port 3333, localhostOnly: true, pollIntervalMs und conversationSessionMode. Außerdem entfernt es einen features-Key, der von älteren Releases übrig ist (siehe Veraltete, ignorierte und interne Keys).
  • Du, in einem beliebigen Texteditor.

Von Hand bearbeiten #

Die Datei ist ein einziges JSON-Objekt. Keys, die du weglässt, bekommen ihren Standardwert, und ein verschachtelter Block wie previews wird als Ganzes gelesen. Bearbeite sie und starte dann das Relay neu: Das Relay liest die Datei einmal, beim Start. Nichts, was ein laufendes Relay hält, ändert sich, wenn du die Datei speicherst. Starte neu mit oar restart (globale Installationen) oder mit 🌄 Restart web relay (Web-Relay neu starten) im ⋯-Menü einer Konversation.

  • Ein unbekannter Key wird ignoriert und bleibt erhalten. Das Setup und die eigenen Schreibvorgänge des Relays lassen ihn stehen.
  • Ungültiges JSON hält das Relay nicht auf. Es loggt Failed to read config.json, using defaults. und läuft mit den Standardwerten: Port 3333, nur dieser Rechner und ein zufälliges Token, das bei jedem Start neu ist und im Log steht. Dein gespeichertes Token funktioniert nicht mehr, bis du die Datei reparierst. Ein zweiter Leser, der den Datenordner wählt, fällt auf den Standardordner zurück. Das Relay rührt die kaputte Datei nicht an.
  • Ein falscher Wert wird Key für Key behandelt. Die Standardwerte unten nutzt das Relay, wenn ein Timer oder ein Limit fehlt oder unbrauchbar ist. Die Tunnel und die Preview-Lane bleiben aus und loggen den Grund; das Relay selbst läuft weiter.
  • Die Befehlszeile gewinnt gegen die Datei, für einen Lauf: --token <value> und --port <number> bei node server/server.js (oar copilot gibt sie auch weiter; oar start nicht) überschreiben authToken und port und werden nie in die Datei gespeichert. Ein --port, der keine Zahl von 1 bis 65535 ist, wird mit einer Warnung ignoriert.

Führ oar setup nicht auf einer Datei aus, die kein gültiges JSON ist

oar setup behandelt eine Datei, die es nicht parsen kann, als fehlend. Dann schreibt es eine neue config.json mit einem neuen Token darüber, und jeder andere Key der alten Datei geht verloren. Repariere zuerst das JSON. Behalte eine Kopie einer Datei, die du von Hand bearbeitest.

Netzwerk und Zugriff #

Key Typ Standard Was er tut
authToken String keiner: ein zufälliges Token pro Start Das Token, mit dem sich jeder Browser, jeder Worker und jeder API-Client anmeldet. Ist es leer, erzeugt das Relay bei jedem Start ein zufälliges, schreibt es in sein Log und speichert es nicht. oar setup schreibt ein festes.
port Zahl 3333 Der HTTP- und WebSocket-Port, eine ganze Zahl von 1 bis 65535.
localhostOnly Boolean true true bindet das Relay an 127.0.0.1, sodass nur dieser Rechner es erreicht. Jeder andere Wert, auch false, null, 1 und "yes", bindet an alle Schnittstellen (0.0.0.0), sodass dein LAN es erreicht. Nur true und der Text "true" (in beliebiger Schreibung) gelten als an; der Standardwert gilt nur, wenn der Key fehlt. Auf die Tunnel unten wirkt er nicht.
remotePath String "" Ein Pfadpräfix, wenn ein Reverse Proxy das Relay unter einem Unterpfad ausliefert, z. B. /oar. Ein führender Schrägstrich wird ergänzt, abschließende Schrägstriche werden entfernt. Das Relay nimmt das Präfix von eingehenden Anfragen ab und setzt es in den Pfad des Anmelde-Cookies, den Socket-Pfad und die Adressen von Dateien und geteilten Links.
trustProxy Express-Wert für trust proxy "loopback" Welche Proxys die X-Forwarded-*-Header setzen dürfen, denen das Relay glaubt. Die Client-Adresse (Rate-Limits, die Anmeldesperre, das Zugriffsprotokoll geteilter Links) sowie Host und Schema neuer geteilter Links werden darüber gelesen, sodass ein direkter Client sie nicht fälschen kann. Der Standard passt zu einem Proxy oder Tunnel auf demselben Rechner. Nutze eine Hop-Anzahl (1), eine Adresse oder ein Subnetz ("10.0.0.0/8") oder eine Liste davon, wenn ein Proxy auf einem anderen Host an das Relay weiterleitet (Reverse Proxy).
allowedOrigins String-Array [] Neu in 0.9.11 Zusätzliche Browser-Origins (Schema, Host und ein Port, der nicht der Standardport ist, z. B. "https://relay.example.com"), die die Live-Verbindung über Socket.IO neben der eigenen des Relays annimmt. Nötig für einen Proxy, der den Host-Header umschreibt. Siehe Reverse Proxy.
publicHostnames String-Array [] Hostnamen, die das Relay selbst erreichen. Die Preview-Lane lehnt eine previews.publicBaseUrl auf einem davon ab (auch localhost und 127.0.0.1), damit eine Preview-App nie ein Anmelde-Cookie mit dem Relay teilt.
tunnelMarkerHeaders String-Array [] Zusätzliche Header-Namen, die der Edge eines Tunnels dem Verkehr hinzufügt. Eine Anfrage mit cf-ray oder einem dieser Header kann die Session-Worker-Pfade nicht erreichen (die Sockets, die die Worker deiner eigenen Agents nutzen und die nur auf diesem Rechner laufen). cf-ray steht immer auf der Liste. Ein kommagetrennter String geht auch. Die Namen in der Umgebungsvariable COPILOT_TUNNEL_MARKER_HEADERS (kommagetrennt) kommen hinzu; eine leere Liste hier schaltet sie nicht ab.
pushVapidSubject String mailto:copilot-remote@example.com Die Kontaktadresse, die das Relay mit Web-Push-Anfragen an Push-Dienste schickt (Benachrichtigungen). Setz sie auf eine eigene mailto:-Adresse.
sharedPresenceMaxPerConversation Zahl 200 Höchstzahl gezählter Live-Betrachter für den Link einer geteilten Konversation. Mindestens 1. Ist sie erreicht, wird der am längsten untätige Betrachter entfernt, um Platz zu machen.
sharedPresenceMaxGlobal Zahl 5000 Höchstzahl gezählter Live-Betrachter geteilter Links insgesamt, gleiche Regel. Nie niedriger als das Limit pro Konversation.

Zur ersten Verbindung, zum Token und zum LAN-Zugriff siehe Erster Start.

Turns und Timer #

Key Typ Standard Was er tut
processingTimeoutMs Zahl, ms 600000 Wie lange ein Turn ohne Lebenszeichen seines Workers bleiben darf, bevor das Relay ihn zurück in die Queue stellt. Es ist kein Limit für die Länge eines Turns. Ein Wert von 0 oder weniger nutzt den Standard. Siehe Wenn ein Turn hängt.
maxRequeueRetries Zahl 5 Wie oft eine Nachricht versucht werden darf, bevor sie endgültig fehlschlägt. Mindestens 1. Siehe Erneutes Einreihen.
contextIndicatorMode "default" oder "bar" "default" Wie der Eingabebereich zeigt, wie voll der Kontext ist, als Linie entlang seiner Oberkante. default ist eine Linie über die volle Breite, deren Farbe von Grün nach Rot wandert, während sich der Kontext füllt. bar ist dieselbe Linie, die von links bis zum genutzten Anteil des Kontexts wächst. Jeder andere Wert, in beliebiger Schreibung, ist default.

Die maximale Turn-Dauer, das Timeout für Hintergrund-Tasks und die Stillstand-Überwachungen stehen nicht hier: siehe Wenn ein Turn hängt.

Neustarts und Herunterfahren #

Diese Keys formen den geplanten Neustart des Relays (🌄 Restart web relay). Siehe Neustarts und Fortsetzen. Jeder Timer nimmt Millisekunden; ein Wert von 0 oder weniger oder einer, der keine Zahl ist, nutzt den Standard.

Key Typ Standard Was er tut
restartShutdownTimeoutMs Zahl, ms 45000 Wie lange ein Neustart darauf wartet, dass der laufende Turn fertig wird, bevor er mit einem shutdown-timeout-Fehler aufgibt.
restartGracefulTimeoutMs Zahl, ms 8000 Wie lange das Relay auf ein geordnetes Beenden wartet, bevor es den Neustart erzwingt.
restartSpawnTimeoutMs Zahl, ms 18000 Wie lange ein Versuch auf die Neustart- oder Fortsetzungsphase wartet, bevor er als fehlgeschlagen gilt (spawn-timeout).
restartRebindTimeoutMs Zahl, ms 20000 Wie lange ein Versuch nach dem Neustart darauf wartet, dass sich die Sessions neu verbinden (rebind-timeout).
restartReadyCooldownMs Zahl, ms 1000 Wie lange die Queue pausiert bleibt, direkt nachdem ein Neustart Bereitschaft meldet.
restartMaxAttempts Zahl 3 Wie viele Versuche ein Neustart bekommt, bevor das Ergebnis endgültig ist. Mindestens 1.
restartRetryBackoffMs Zahlen-Array, ms [1000, 3000, 7000] Die Wartezeit vor Versuch 2, 3 und so weiter. Gibt es mehr Versuche als Einträge, wiederholt sich der letzte Eintrag. Einträge, die keine positiven Zahlen sind, fallen weg; ein leeres Ergebnis nutzt den Standard.

Arbeitsspeicher Neu in 0.9.19 #

Key Typ Standard Was er tut
heapLimitMb Zahl, MB 60 % des RAM, von 2.048 bis 8.192 Das Heap-Limit des Relays, eine ganze Zahl von mindestens 512. Jede Art, das Relay zu starten, liest es: oar start, der systemd-Dienst, der Windows-Autostart und die CLI-Erweiterung. Es gilt ab dem nächsten Start. Ein Wert, der keine ganze Zahl von mindestens 512 ist, wird mit einer Zeile im Log ignoriert; einer über dem RAM des Rechners oder über dem Speicherlimit eines Containers wird auf diesen Wert gesenkt. Ein --max-old-space-size in NODE_OPTIONS oder auf der node-Befehlszeile, die server.js startet, hat Vorrang. Siehe Das Relay hatte keinen Speicher mehr.

Workspace und Daten #

Key Typ Standard Was er tut
workspaceRootAllowList String-Array nicht gesetzt Absolute Ordner, in denen Konversationen starten dürfen, samt allem darin. Nicht gesetzt oder leer erlaubt jeden existierenden Ordner. Ein Eintrag, der kein existierender Ordner ist, wird geloggt und ausgelassen. Die Umgebungsvariable COPILOT_WORKSPACE_ROOT_ALLOW_LIST gewinnt, wenn sie gesetzt ist. Siehe Begrenzen, wo Chats starten dürfen.
dataDir String data/ neben dem Server Wo die Datenbank und die Lock-Datei des Relays liegen, und Neu in 0.9.17 deepseek-claude, der Claude-Code-Zustand von DeepSeek-Chats. Ein relativer Pfad zählt ab dem Ordner, der config.json enthält. Uploads folgen ihm nach uploads/ darin; nur ein Relay auf dem Standard data/ neben dem Server, ohne COPILOT_WEB_RELAY_DATA_DIR, behält sie in uploads/ neben dem Server. COPILOT_WEB_RELAY_DATA_DIR gewinnt, wenn sie gesetzt ist. oar start, oar restart und der systemd-Dienst unter Linux setzen sie immer (auf ~/.oar/data, %APPDATA%\oar\data oder deinen eigenen Wert), daher hat dieser Key für ein so gestartetes Relay keine Wirkung. Er ist für einen direkt gestarteten Checkout gedacht. Der Windows-Starter für den Autostart legt nur die Config-Datei fest, nicht diese Variable.

Provider-CLIs #

Key Typ Standard Was er tut
cliBinaries Objekt vom Relay geschrieben Pfade zu Provider-CLIs, nach Provider: claude und grok. Das Relay schreibt ihn, wenn eine Installation aus Settings einen Pfad ermittelt, und nutzt ihn beim nächsten Start, damit dasselbe Programm wieder gefunden wird. Du kannst einen Pfad von Hand setzen. Ein Eintrag, der keine ausführbare Datei ist, wird geloggt und ignoriert. Andere Namen, auch copilot, werden nicht genutzt.
sdkPath String erkannt Pfad zur index.js des Copilot SDK. Die Suche nach einer installierten Copilot CLI entfällt nur, wenn sdkPath und cliPath beide gesetzt sind. Allein sagt er dem Relay außerdem, wo es die Startdatei der Extension-Engine suchen soll, nämlich daneben.
cliPath String erkannt Pfad zum Runtime-Einstieg der Copilot CLI (app.js). Wird mit sdkPath genutzt. Das Relay gibt ihn auch den Copilot-Workern, die es startet, als ihr CLI-Programm mit, sofern die Umgebung nicht schon eines nennt.
sdkVersion String neueste gefundene Eine genaue Version wie 1.0.63. Die Suche nach einer installierten Copilot CLI akzeptiert dann nur diese Version. Wird ignoriert, wenn sdkPath und cliPath beide gesetzt sind.

Diese Keys zählen dort, wo das Relay selbst mit der installierten Copilot CLI spricht, z. B. um vorhandene Copilot-Sessions zu importieren und Modelle aufzulisten. Die Suche schaut in den Paket-Cache der Copilot CLI (COPILOT_PKG_DIR fügt einen Ordner hinzu, der zuerst durchsucht wird). Siehe GitHub Copilot.

Previews #

Der Block previews schaltet die Preview-Lane ein: einen zweiten Listener auf eigenem Port und Hostnamen, der lokale Dev-Server und Ordner veröffentlicht. Einrichtung, Hostnamen und der vorgelagerte Proxy stehen auf der Seite des Preview-Tools.

Key Typ Standard Was er tut
previews.enabled Boolean false Schaltet die Lane ein. Nur true zählt.
previews.port Zahl port des Relays + 1 Der Port des Preview-Listeners. Mindestens 1024 und nicht der Port des Relays; 0 wählt bei jedem Start einen freien Port.
previews.bindHost String 127.0.0.1 Die Adresse, an die der Listener bindet. Eine Adresse, die kein Loopback ist, braucht previews.allowPublicBind.
previews.allowPublicBind Boolean false Erlaubt einen previews.bindHost, der kein Loopback ist. Jede Preview ist dann ohne den vorgelagerten Proxy aus dem Netzwerk erreichbar.
previews.publicBaseUrl String keiner Die öffentliche http(s)-Adresse der Lane. Pflicht, wenn Previews an sind. Ihr Hostname muss sich von dem des Relays unterscheiden (siehe publicHostnames). Ein abschließender Schrägstrich wird entfernt.
previews.allowedTargetHosts String-Array [] Hosts außer diesem Rechner, auf die eine Port-Preview zeigen darf, z. B. die Adresse eines Containers oder einer VM.
previews.maxLive Zahl 8 Höchstzahl gleichzeitiger Previews für das ganze Relay. Ein Wert, der keine positive ganze Zahl ist, nutzt 8.

Schlägt eine dieser Regeln fehl, während Previews an sind, loggt das Relay PREVIEW LANE disabled mit dem Grund, lässt die Lane aus und läuft weiter.

Diese Umgebungsvariablen überschreiben die passenden Keys: COPILOT_PREVIEWS_ENABLED (1, true, 0, false), COPILOT_PREVIEWS_PORT, COPILOT_PREVIEWS_BIND_HOST, COPILOT_PREVIEWS_PUBLIC_BASE_URL und COPILOT_PREVIEWS_ALLOWED_TARGET_HOSTS (kommagetrennt).

Tunnel #

Zwei Tunnel können das Relay von außerhalb deines Netzwerks erreichbar machen. Sie sind unabhängig voneinander und können gleichzeitig laufen. Beide sind standardmäßig aus, und ein verwalteter Tunnel, dem ein Pflichtwert fehlt, bleibt aus und loggt den Grund.

sshTunnel #

Ein Reverse-SSH-Tunnel zu einem Server von dir. Siehe SSH-Tunnel.

Key Typ Standard Was er tut
sshTunnel.mode "disabled" oder "managed" "disabled" Mit managed startet das Relay den Tunnel und startet ihn bei Bedarf neu.
sshTunnel.required Boolean false Solange der verwaltete Tunnel nicht verbunden ist, auch bevor er sich zum ersten Mal verbindet und wenn ein Pflichtwert fehlt, nimmt das Relay keine Nachrichten aus der Queue.
sshTunnel.user String keiner Der SSH-Benutzer auf dem Server. Pflicht im verwalteten Modus.
sshTunnel.host String keiner Hostname oder Adresse des Servers. Pflicht im verwalteten Modus.
sshTunnel.remotePort Zahl keiner Der Port, der sich auf dem Server öffnet (1 bis 65535). Pflicht im verwalteten Modus.
sshTunnel.remoteBind "loopback" oder "public" "loopback" Ob der entfernte Port nur auf dem Server selbst offen ist oder auf allen seinen Schnittstellen. Unabhängig von localhostOnly.
sshTunnel.command String ssh Das SSH-Programm. Nutze einen Namen auf dem PATH oder einen absoluten Pfad: Ein relativer Pfad zählt ab dem Programmordner des Relays.
sshTunnel.identityFile String keiner Der private Key, der genutzt wird; ~ wird aufgelöst. Ohne ihn nutzt SSH seinen Agent oder die Standard-Keys.
sshTunnel.autoReclaimPort Boolean true Ist der entfernte Port schon belegt, auf dem Server aufräumen und es erneut versuchen. Nur false schaltet es ab.
sshTunnel.reclaimStaleSshSessions Boolean false Beim Aufräumen auch deine eigenen SSH-Sessions auf dem Server beenden, in denen nichts läuft.
sshTunnel.remoteCleanupCommand String eingebaut Dein eigener Aufräumbefehl, der statt des eingebauten auf dem Server läuft.

cloudflaredTunnel #

Führt Cloudflares cloudflared aus, das du selbst installierst; OAR liefert es nicht mit. Siehe Cloudflare Tunnel.

Key Typ Standard Was er tut
cloudflaredTunnel.mode "disabled" oder "managed" "disabled" Mit managed führt das Relay cloudflared aus. COPILOT_CLOUDFLARED_MODE überschreibt ihn.
cloudflaredTunnel.required Boolean false Solange der verwaltete Tunnel nicht verbunden ist, auch wenn ein Pflichtwert fehlt, nimmt das Relay keine Nachrichten aus der Queue.
cloudflaredTunnel.token String keiner Das Token deines eigenen Cloudflare-Tunnels. Pflicht im verwalteten Modus. COPILOT_CLOUDFLARED_TOKEN überschreibt ihn.
cloudflaredTunnel.binary String cloudflared Das Programm, als absoluter Pfad oder als Name, der auf dem PATH gesucht wird. COPILOT_CLOUDFLARED_BINARY überschreibt ihn.
cloudflaredTunnel.extraArgs String-Array [] Argumente, die nach cloudflared tunnel run --token <token> angehängt werden.

Einstellungen in der Weboberfläche und der Umgebung #

Einstellungen in der Weboberfläche stehen nicht in dieser Datei. Provider-Schalter und Keys, die Modelllisten, die maximale Turn-Dauer, das Timeout für Hintergrund-Tasks und die Feature-Flags liegen in der Datenbank des Relays, im Datenordner. Die Datei enthält, was das Relay braucht, bevor sich die Datenbank öffnet (den Datenordner, den Port, das Token), und Fakten über den Rechner (CLI-Pfade, Tunnel). Das Einzige, was die Oberfläche in die Datei schreibt, ist cliBinaries. Neu in 0.9.17 Auch DeepSeek hat hier keinen Key: Sein API-Key, seine Basis-URL und sein Budget werden aus Settings → Providers → DeepSeek (Einstellungen → Provider → DeepSeek) in die Datenbank gespeichert.

Umgebungsvariablen. Die vollständige Liste steht unter Umgebungsvariablen. Wo es für einen Key eine Variable gibt, gewinnt die Variable gegen die Datei: COPILOT_WEB_RELAY_DATA_DIR (dataDir), COPILOT_WORKSPACE_ROOT_ALLOW_LIST, COPILOT_CLOUDFLARED_* und COPILOT_PREVIEWS_* (in ihren Abschnitten aufgeführt). COPILOT_TUNNEL_MARKER_HEADERS ist die Ausnahme: Ihre Namen kommen zu tunnelMarkerHeaders hinzu. Die Optionen --token und --port gewinnen für einen Lauf gegen beide. COPILOT_WEB_RELAY_CONFIG selbst ist unter Wo die Datei liegt beschrieben.

Ein Beispiel #

Alle Werte sind erfunden. Lösch die Blöcke, die du nicht nutzt.

{
  "authToken": "0f3c1a9e-example-token-do-not-copy",
  "port": 3333,
  "localhostOnly": false,
  "remotePath": "",
  "trustProxy": "loopback",
  "allowedOrigins": [],
  "publicHostnames": ["relay.example.com"],
  "tunnelMarkerHeaders": ["x-edge-request-id"],
  "processingTimeoutMs": 600000,
  "maxRequeueRetries": 5,
  "contextIndicatorMode": "bar",
  "workspaceRootAllowList": ["/home/dev/projects", "/srv/sites"],
  "dataDir": "data",
  "cliBinaries": {
    "claude": "/home/dev/.local/bin/claude",
    "grok": "/home/dev/.grok/bin/grok"
  },
  "restartShutdownTimeoutMs": 45000,
  "restartGracefulTimeoutMs": 8000,
  "restartSpawnTimeoutMs": 18000,
  "restartRebindTimeoutMs": 20000,
  "restartReadyCooldownMs": 1000,
  "restartMaxAttempts": 3,
  "restartRetryBackoffMs": [1000, 3000, 7000],
  "previews": {
    "enabled": true,
    "port": 3334,
    "bindHost": "127.0.0.1",
    "allowPublicBind": false,
    "publicBaseUrl": "https://preview.example.com",
    "allowedTargetHosts": [],
    "maxLive": 8
  },
  "sshTunnel": {
    "mode": "managed",
    "required": false,
    "user": "ubuntu",
    "host": "vps.example.com",
    "remotePort": 4444,
    "remoteBind": "loopback",
    "identityFile": "~/.ssh/id_ed25519"
  },
  "cloudflaredTunnel": {
    "mode": "disabled",
    "token": "",
    "binary": "cloudflared",
    "extraArgs": []
  }
}

Veraltete, ignorierte und interne Keys #

Findest du einen davon in einer Datei, kannst du ihn stehen lassen oder löschen:

Key Was er ist
features Abgelöst. Feature-Flags liegen jetzt in der Datenbank des Relays: Settings → Features (Einstellungen → Funktionen). Beim Start kopiert das Relay die Werte, die es hier findet, in die Datenbank, sofern dort nicht schon ein Wert gespeichert ist, und entfernt den Key aus der Datei.
sshTunnel.enabled, cloudflaredTunnel.enabled Alte Form von mode. true bedeutet managed und wird nur gelesen, wenn mode weder disabled noch managed ist.
pollIntervalMs Wird in neue Dateien geschrieben, aber das Relay liest ihn nicht. Er hat keine Wirkung.
conversationSessionMode isolated oder shared. Wird in neue Dateien geschrieben. Das Relay speichert den Wert in jedem Session-Datensatz und meldet ihn in seinem Status, aber nichts in OAR verhält sich bei einem der Werte anders. Für dich hat er keine Wirkung.
cliPort, model Nur von einem eigenständigen Modus genutzt, den du von Hand startest (ein Notausgang für Entwickler; kein oar-Befehl startet ihn). Das Relay, das du mit oar start startest, ignoriert model. cliPort liest es für genau eine Sache: Die Preview-Lane wählt nie diesen Port.
host Nur von den Programmen gelesen, die sich mit dem Relay verbinden (den Session-Workern und der Copilot-Extension), um die Adresse zu bilden, die sie nutzen; der eigene Listener des Relays ignoriert ihn (siehe localhostOnly). Lass ihn weg.