Alle Seiten
Auf dieser Seite

Fehlerbehebung

Fang hier an, wenn etwas nicht funktioniert. Die ersten Abschnitte sind die Prüfungen, die für fast alles gelten. Die Tabellen danach führen von dem, was du siehst, zu der Seite mit der Lösung. Die meisten dieser Seiten enden mit einem eigenen Abschnitt zur Fehlerbehebung; diese Seite wiederholt sie nicht.

Erste Schritte #

Auf dem Rechner des Relays, in einem Terminal:

oar status
oar doctor
  1. oar status sagt, ob das Relay antwortet. Lies die ersten Zeilen anhand der Tabelle unten.
  2. oar doctor gibt die Installation, die Config und die Provider-CLIs aus, die es findet. Es ändert nichts und endet immer mit 0, lies also die Zeilen.
  3. Schau in den Browser. Der Statuspunkt und die Banner zeigen, ob das Problem zwischen Browser und Relay liegt oder hinter dem Relay.
  4. Lies das Log, das zum Problem gehört (Logs).
  5. Starte das Kleinste neu, das helfen könnte (Neu starten).

Beide Befehle sind unter Der Befehl oar beschrieben.

oar status lesen #

Zeile Worauf sie hinweist
Not set up yet — run: oar setup Keine Config in dieser Installation. Führ oar setup aus. Erster Start
The relay is running on port <port> (<access>): <url> Das Relay ist in Ordnung. Öffne die URL; oar url gibt sie mit dem Token aus. Ein Problem liegt dann im Browser, bei der Anmeldung oder in einer Session
The relay is stopped (port <port>, <access>). Start it with: oar start Auf dem Port antwortet nichts. Führ oar start aus und lies Installieren und starten, wenn es fehlschlägt
Port <port> is held by another program, or by a relay with another token. Ein anderes Programm nutzt den Port, oder ein altes Relay mit einem früheren Token läuft noch. Siehe Wenn es nicht startet
The relay runs with its earlier settings; restart it to apply the new ones. Du hast Port, Token oder Zugriff mit oar setup geändert. Führ oar restart aus
Service: <state> Der Dienst für den Start bei der Anmeldung. Siehe Start bei der Anmeldung
Tunnel: <state> Der eingebaute Cloudflare-Tunnel. Siehe Cloudflare-Tunnel

Exit-Code 3 heißt, dass das Relay nicht läuft, der Port von etwas anderem belegt ist oder es keine Config gibt. Exit-Code 0 heißt, dass das Relay läuft.

oar doctor lesen #

Zeile Was sie dir sagt
OAR <version> und node Die OAR-Version und das Node.js, auf dem oar läuft. Nimm beides in einen Bericht auf
mode git checkout: oar update und oar service verweigern dort die Arbeit. global install ist der Normalfall
state root und config Welche Installation der Befehl betrachtet. Zwei Installationen auf einem Rechner haben von beidem zwei. (missing — run: oar setup) hinter dem Config-Pfad heißt, dass es keine Config gibt; port, auth token und tunnel fehlen dann
port Der Port und wer ihn erreicht. localhostOnly: yes heißt nur dieser Rechner; andere Geräte brauchen oar setup --lan oder einen Tunnel
auth token MISSING heißt, dass kein Token gesetzt ist. Führ oar setup aus
tunnel disabled, managed (cloudflared: <path>) oder managed, cannot start: <reason>. Der Grund nennt, was falsch ist, zum Beispiel ein fehlendes cloudflared
database Die Datenbank, die diese Installation nutzt, mit ihrer Größe. (not created yet) heißt, dass das Relay nie aus dieser Installation lief. Fehlen deine Konversationen oder bleiben Nachrichten ausstehend, prüf, ob das die Datenbank ist, die du erwartest (Ein Relay pro Datenordner)
provider CLIs gh (Copilot), claude und grok zeigen ihre Version oder not found. Doctor sucht mit dem PATH deines Terminals; ein Dienst hat den PATH von seiner Installation (Start bei der Anmeldung). cursor zeigt immer bundled (@cursor/sdk), ob ein Key gespeichert ist oder nicht
warning In WSL belegt Windows den Port des Relays. Wähl mit oar setup --port <port> einen anderen

Doctor gibt den Zustandsordner aus, nicht den Log-Ordner, und sagt nicht, ob das Relay läuft: Das macht oar status. Wo die Logs liegen, steht unter Dateien und Ordner.

Logs #

Problem Lies
Das Relay startet nicht oder stoppt server-err.log im Log-Ordner, aber nur, wenn oar start das Relay selbst im Hintergrund gestartet hat. Unter dem Linux-Dienst stehen die Startfehler im Journal (journalctl --user -u oar), nicht in server-err.log; siehe Status und Logs
Alles, was das Relay getan hat: Previews, Tunnel, Updates, Neustarts relay-console.log. Es zeigt dein Zugriffstoken als [token]
Eine Konversation antwortet nicht, oder ihr Agent stoppt worker-<session>.log, der Worker dieser Konversation. Die Copilot-Extension-Engine hat keines; siehe ext-debug.log und das Copilot-Terminal
Der Dienst startet nicht systemctl --user status oar, dann journalctl --user -u oar

Alle Log-Dateien, ihre Rotation und den Ordner bei einem git-Checkout findest du unter Dateien und Ordner.

Im Browser #

  • Der Statuspunkt oben in der Konversationsliste: Grau ist Web relay unreachable (Web-Relay nicht erreichbar; der Browser erreicht das Relay nicht), Grün ist Web relay reachable (Web-Relay erreichbar), Bernstein ist das Relay, erreicht über einen verbundenen Cloudflare-Tunnel. Der Tooltip sagt mehr, zum Beispiel wie viele Worker beschäftigt sind. Der Statuspunkt
  • Das Banner CLI is offline — messages will queue until it reconnects und CLI offline in der Seitenleiste heißen, dass sich 10 Sekunden lang kein Session-Worker gemeldet hat. Bei einem untätigen Relay ist das normal: Schick eine Nachricht, und das Banner verschwindet. Bleibt es, lies das Worker-Log. Wenn der Agent nicht erreichbar ist

Neu starten #

Was Wann Wie
Der Agent einer Konversation Eine Konversation hängt, Stop (Stoppen) wirkt nicht, oder der Agent soll neue Einstellungen übernehmen ☠️ Kill session (Session beenden) im ⋯-Menü. Verlauf und Queue bleiben; die nächste Nachricht startet einen frischen Worker. Kill session
Das Relay Eine neue Version, eine geänderte Config, eine neu installierte Provider-CLI oar restart auf dem Rechner des Relays oder 🌄 Restart web relay (Web-Relay neu starten) im ⋯-Menü. Beide warten auf laufende Turns, außer unter dem Linux-Dienst, wo oar restart sie beendet. Das Relay neu starten

Symptome #

Installieren und starten #

Was du siehst Übliche Ursache Lösung
npm install -g @oar-sh/oar schlägt mit EACCES fehl Der globale Ordner von npm braucht Root-Rechte Nutze den Installer, nicht sudo. Installation
Node.js zu alt oder nicht gefunden; oar: command not found; oar in PowerShell blockiert Node.js unter 22.13, oder der PATH ist nicht neu geladen Installation
Die Installation schlägt mit Fehlern von node-gyp oder prebuild fehl Kein vorgebautes better-sqlite3 für deine Plattform Installation
Das Relay startet nach einer Installation mit npm 12 nicht, mit einem Fehler von better-sqlite3 npm 12 hat die Installationsskripte übersprungen Installiere neu mit --allow-scripts=@oar-sh/oar,better-sqlite3,koffi, nie mit --ignore-scripts. Installation. Der Fehler steht in server-err.log, wenn oar start das Relay gestartet hat, sonst im Journal
Port 3333 is in use by another program ... Ein anderes Programm oder ein altes Relay belegt den Port Wenn es nicht startet
The relay did not come up — see …/server-err.log Das Relay ist gestartet und hat sich beendet Wenn es nicht startet
Relay already running oder Relay appears to be owned by another live process, Exit-Code 78 Ein zweites Relay auf demselben Datenordner Folg dem Hinweis am Ende der Zeile (oar stop, or end process <pid>). Ein Relay pro Datenordner
[data] Not starting: each database has changes newer than the other's Neu in 0.9.14 Das Relay hat eine frühere Datenbank gefunden, auf der es lief, und beide enthalten Arbeit Behalte eine, verschieb copilot.db, -wal und -shm der anderen in einen eigenen Ordner, dann oar start. Upgrade-Hinweise für 0.9.14
[oar] The relay … is bringing over the database it ran on until now … Neu in 0.9.14 Der erste Start nach dem Update kopiert eine große Datenbank Warte; es antwortet, sobald das erledigt ist. Starte kein zweites Relay. Upgrade-Hinweise für 0.9.14
Nach dem Update sind die Konversationen eines Relays aus dem Windows-Autostart oder von gh copilot weg Vor 0.9.14 hielt dieses Relay seine Daten im Paket Upgrade-Hinweise für 0.9.14
[startup] Cannot create … oder … is a file, not a folder, Exit-Code 78 Neu in 0.9.14 Der Daten- oder Upload-Ordner kann nicht angelegt werden, zum Beispiel weil sein Laufwerk fehlt Mach das Laufwerk oder den Ordner verfügbar. Warten auf TEMP und das Datenlaufwerk
No systemd user session here, Could not enable lingering, das Relay ist nach einem Neustart weg Keine systemd-Benutzersitzung, oder Lingering ist aus Start bei der Anmeldung
WSL: Der Windows-Browser zeigt eine andere Seite oder lehnt das Token ab Windows belegt den Port oar setup --port <port>. Wenn es nicht startet
Unter dem Dienst wird ein Tool oder node in Sessions nicht gefunden Der Dienst behält den PATH von seiner Installation Start bei der Anmeldung
Nothing changed: OAR does not delete or overwrite an autostart entry it did not make. (Windows) Neu in 0.9.15 Ein Autostart-Eintrag, Start-Task oder Launcher, von Hand angelegt oder bearbeitet, steht dem Wechsel im Weg Entferne ihn selbst, oder führ den Wechsel mit --replace aus, das eine Kopie behält. Einträge, die OAR nicht angelegt hat
Nothing changed: the boot task could not be read (…) (Windows) Neu in 0.9.15 Der Task ist da, aber OAR kann ihn nicht lesen, oft Access is denied, weil er das Passwort eines anderen Kontos speichert Sieh ihn dir in der Aufgabenplanung als Administrator an. Einträge, die OAR nicht angelegt hat
oar uninstall stoppt mit Not done: … Neu in 0.9.15 Ein Schritt ist fehlgeschlagen: Das Relay hat nicht gestoppt, eine Administrator-Abfrage wurde abgelehnt, ein Ordner ließ sich nicht löschen Kläre die Zeile davor und führ denselben Befehl erneut aus. oar uninstall
Ein versteckter Ordner .oar-* bleibt neben dem entfernten Paket zurück Neu in 0.9.15 Ein Session-Worker lief noch aus dem Paket, während npm es entfernte Lösch den Ordner, sobald diese Programme beendet sind, spätestens nach einem Neustart. oar uninstall

Anmelden und das Relay erreichen #

Was du siehst Übliche Ursache Lösung
Invalid token (Ungültiges Token) im Anmeldefeld Ein altes oder falsches Token Nutze das Token aus oar url. Wenn es nicht startet
Too many failed sign-in attempts. Try again in … seconds. (Zu viele fehlgeschlagene Anmeldeversuche. Versuch es in … Sekunden erneut.) Zehn falsche Tokens von dieser Adresse innerhalb einer Minute Warte, bis die Minute um ist, und nutze dann das richtige Token. Hinter einem Proxy auf einem anderen Rechner setz trustProxy, sonst teilen sich alle Besucher eine Sperre. Schutz bei der Anmeldung
Ein Skript bekommt 401 auf API- oder Dateiadressen mit ?token= Seit 0.9.11 meldet ?token= nur die Seite an Schick Authorization: Bearer <token>. Wie du es vorzeigst
Jedes Gerät fragt erneut nach dem Token oar setup --new-token meldet alle Geräte ab Wenn du das Token verlierst
Der Statuspunkt ist grau: Web relay unreachable Das Relay ist gestoppt, oder die Adresse ist falsch Führ oar status auf dem Rechner des Relays aus. Der Statuspunkt
Ein Handy kann die Adresse nicht öffnen Der Zugriff ist this machine only (nur dieser Rechner) oar setup --lan oder ein Tunnel. Vom Handy aus
Der Tunnel ist aus (cloudflared is not installed) oder verbindet sich ständig neu cloudflared fehlt, das Token ist falsch, oder die SSH-Anmeldung schlägt fehl Cloudflare-Tunnel, SSH-Tunnel
Nachrichten bleiben eingereiht, und die Queue ist pausiert Der Tunnel ist als required eingestellt und nicht verbunden Dieselben zwei Abschnitte
Hinter Caddy oder nginx verbindet sich die Seite endlos neu, ist unter einem Präfix leer oder fragt immer wieder nach dem Token Der Proxy blockiert WebSockets, entfernt ein Präfix oder braucht mehr Einstellungen Reverse Proxy
Hinter einem Proxy lädt die Seite, aber nichts aktualisiert sich live, und das Relay-Log sagt Refused a handshake from origin Der Proxy schreibt den Header Host um Trag die öffentliche Herkunft in allowedOrigins ein. allowedOrigins

Eine Konversation startet nicht, oder der Agent antwortet nicht #

Jede Provider-Seite endet mit den Fehlern, die dieser Provider erzeugen kann. Eine fehlgeschlagene Antwort nennt meist ihre Ursache und hat oft einen Button, der sie behebt.

Provider Typische Fehler Lösung
GitHub Copilot Speichern von SDK wird abgewiesen (COPILOT_SDK_PATH did not resolve), die Runtime konnte sich nicht authentifizieren, kein KI-Guthaben mehr, oar copilot sagt, dass die GitHub CLI fehlt GitHub Copilot, Wenn das Speichern von SDK abgewiesen wird
OpenAI OpenAI API key is not configured, die Modellerkennung ist fehlgeschlagen, OpenAI image API failed (401) OpenAI
Claude Fehlt in New Chat (Neuer Chat), Not logged in, eine Antwort, die auf die Abrechnung verweist, Neu in 0.9.18 relay.subscription-key-source Claude
Claude API Neu in 0.9.18 Der Key liegt außerhalb eines Workspace (HTTP 400), das Monatslimit ist erreicht, erkennbar an relay.claude-api-cap-reached oder daran, dass New Chat Start on subscription (Mit Abo starten) anbietet, der Key wird nicht akzeptiert (relay.claude-api-key), das Guthaben- oder Ausgabenlimit des Kontos (relay.claude-api-credit, relay.claude-api-spend-limit), die Karte zeigt no price known für ein Modell Claude API, Fehler
Claude Cloud Die Anmeldung ist abgelaufen, GitHub ist nicht verbunden, keine Cloud-Umgebung Claude Cloud
Cursor Cursor API key is not configured, Cursor model "…" is not available Cursor
Grok Grok CLI was not found on PATH, Grok authentication failed Grok
DeepSeek Neu in 0.9.17 Das Guthaben ist aufgebraucht (relay.deepseek-balance), der Key wird nicht akzeptiert (relay.deepseek-api-key), zu viele Anfragen gleichzeitig (relay.deepseek-rate-limit); andere Fehler erscheinen als relay.deepseek-…, zum Beispiel relay.deepseek-api-error DeepSeek, Fehler
Was du siehst Übliche Ursache Lösung
Ein Provider fehlt in New Chat Er ist abgeschaltet oder hat keinen Key oder keine Anmeldung Die Seite des Providers oben; Ein abgeschalteter Provider
Set up a provider (Provider einrichten) auf dem ersten Bildschirm Kein Provider ist bereit Der erste Blick
Die Modellliste ist alt oder falsch Die Erkennung muss noch einmal laufen 🤗 Select Models → Refresh (Modelle auswählen → Aktualisieren); pro Provider auf seiner Seite oben
Keine Verbrauchszeile unter einer Antwort Nur Copilot-Turns zeichnen Plan-Verbrauch auf GitHub Copilot
Eine Karte in Check Usage (Verbrauch prüfen) zeigt Error (Fehler), Unavailable (Nicht verfügbar) oder nur Schätzungen Das Live-Auslesen ist fehlgeschlagen; die Karte greift auf das zurück, was sie hat Aktualisieren und wie frisch die Zahlen sind

Ein Turn hängt, schlägt fehl oder startet neu #

Was du siehst Übliche Ursache Lösung
Das Banner CLI is offline Kein Worker hat sich gemeldet Wenn der Agent nicht erreichbar ist
Ein langer Turn geht zurück in die Queue und startet neu Max turn duration (Maximale Turn-Dauer) (standardmäßig 60 Minuten) oder das Inaktivitätsfenster (10 Minuten) ist abgelaufen Erhöhe oder leere Max turn duration in Settings → General (Einstellungen → Allgemein). Wenn ein Turn hängt
System note: the … runtime sent nothing for Ns ... Die Stille-Überwachung der Copilot-SDK-Engine, von Cursor oder Grok hat den Turn beendet Schick die Nachricht erneut. Wenn ein Turn fehlschlägt
Relay timeout after 5 attempts oder Relay recovery limit reached Der Turn wurde neu eingereiht, bis die Versuche aufgebraucht waren Wenn ein Turn fehlschlägt
Eine Konversation scheint festzustecken; Stop tut nichts Der Worker hängt ☠️ Kill session, dann schick die Nachricht erneut. Kill session
Nachrichten bleiben ausstehend Ein Neustart ist eingereiht und hält neue Nachrichten zurück, oder ein anderes Relay nutzt die Datenbank Der Neustart wartet, Ein Relay pro Datenordner
Neue Nachrichten bleiben eingereiht, und ein Banner sagt Relay restart queued — waiting for N sessions Ein Neustart ist eingereiht und wartet auf die laufenden Turns der Sessions, die er nennt; bis dahin wird keine Nachricht an eine Session übergeben Warte, oder drück Restart now (Jetzt neu starten) oder Cancel restart (Neustart abbrechen) im Banner. Nach Ask after a queued relay restart has waited (Nachfragen, nachdem ein eingereihter Relay-Neustart gewartet hat) (standardmäßig 30 Minuten) fragt das Banner, statt weiter zu warten. Der Neustart wartet
Nachrichten an eine Konversation bleiben nach einem Neustart des Relays eingereiht Ihr Worker hat sich noch nicht wieder verbunden. Er versucht es von selbst erneut, höchstens 8 Sekunden auseinander, und seit 0.9.13 auch, wenn sein Verbindungsaufbau hängt Ihr worker-<session>.log hat pro fehlgeschlagenem Versuch eine Zeile worker ws disconnected (die ersten drei, dann eine pro Minute), die sagt, warum. ☠️ Kill session startet einen neuen Worker. Wenn der Agent nicht erreichbar ist
Nach einem Neustart des Relays hat eine Session mitten im Turn aufgehört und nichts mehr getan Ihr Turn konnte nicht erneut laufen: Der Agent hatte die Nachricht schon übernommen Schick ein kurzes „carry on“, oder schalte After a relay restart, tell interrupted sessions to carry on (Nach einem Relay-Neustart unterbrochene Sessions weitermachen lassen) in Settings → General ein. Eine Zeile relay, die sagt, dass das Relay neu gestartet ist, ist diese Notiz. Einer unterbrochenen Session sagen, dass sie weitermachen soll
Ein Senden schlägt fehl mit This conversation's model "…" is no longer available. Choose a model and send again. Das Senden nannte kein Modell, und das Copilot-Modell, auf das die Konversation eingestellt war, ist aus dem Katalog verschwunden. Seit 0.9.13 wechselt das Relay nicht mehr von selbst auf ein anderes Modell Wähl im Eingabebereich ein Modell und sende erneut. Modelle und Reasoning
Restart web relay oder Empty queue (Queue leeren) zeigt einen Fehler Das Relay hat die Anfrage abgewiesen und nennt den Grund, oder es hat nicht geantwortet Restart web relay, Empty queue
Eine für das Relay gesetzte Variable wirkt nicht auf die Agents Unter tmux erreicht sie nur eine feste Liste von Variablen Welche Variablen die Agents erreichen
Eine Antwort hat mit einer Notiz Paused (Pausiert) aufgehört Ein Nutzungslimit Wenn ein Nutzungslimit erreicht ist
Ein Hintergrund-Agent oder eine Shell hat von selbst aufgehört Er hat den Background task timeout (Timeout für Hintergrund-Tasks) erreicht (standardmäßig 4 Stunden) Timeout für Hintergrund-Tasks
Eine Task-Zeile zeigt in Bernstein no output for N min Der Befehl hat länger als Mark a background task as quiet after (Hintergrund-Task als still markieren nach) (standardmäßig 10 Minuten) nichts geschrieben Öffne seine Konsole, um die letzten Zeilen zu sehen. Manche Schritte sind lange still; erhöhe die Einstellung, oder stoppe den Task mit Stop, wenn er hängt. Stille Tasks
Die Konsole eines Befehls sagt This session did not report an output file for this task. Eine Session, deren Agent vor dem Update auf 0.9.12 gestartet ist, oder eine Shell ohne Stop auf der SDK-Engine von Copilot Im zweiten Fall ☠️ Kill session auf einer untätigen Session; die nächsten Befehle haben eine Konsole. Nach Provider
Eine Konsole sagt This task's output is no longer available. Der Task ist vor mehr als einer Stunde zu Ende gegangen, oder er lief vor dem Update auf 0.9.13, und das Relay hat seitdem neu gestartet Abgeschlossene Befehle, Nach einem Neustart des Relays
Eine Konsole endet bei Output stops here: this command pipes into tail Ein Befehl, der in tail geleitet wird, schreibt nichts, bis er endet; die Ausgabe kommt dann Um einen solchen Lauf live zu verfolgen, lass ihn in eine Datei loggen (> run.log 2>&1) und verfolge diese Datei. Befehle, die in tail geleitet werden
Nach einem Neustart des Relays sagt eine Konsole, dass sie auf ihren Worker wartet, ohne Stop Das Relay hat die Ausgabe des Befehls behalten, aber nur sein Worker kann sagen, ob er noch läuft Warte ein paar Sekunden. Ein Befehl, dessen Worker nicht zurückgekommen ist, wird nach etwa anderthalb Minuten als beendet markiert. Nach einem Neustart des Relays
Der Wechsel zurück zu einer langen Konversation bringt nicht alle älteren Nachrichten zurück, die du geladen hattest Nur Messages kept per conversation for switching back (Pro Konversation behaltene Nachrichten fürs Zurückwechseln) (standardmäßig 200) bleiben um deine Stelle herum erhalten, für die letzten acht Konversationen Erhöhe den Wert in Settings → General. Neu laden, wechseln, drehen
Eine Konversation lässt sich nicht löschen oder archivieren Ein Turn oder ein Hintergrund-Task läuft noch Löschen
Eine fehlgeschlagene Antwort zeigt einen Button Das Relay kennt die Lösung Buttons an einer fehlgeschlagenen Antwort
Das Relay hat angehalten oder neu gestartet, und sein Log sagt JavaScript heap out of memory Neu in 0.9.19 Der Speicher des Relays hat sein Heap-Limit erreicht Das Relay startet von selbst wieder. Das Relay hatte keinen Speicher mehr

Fragen und Freigaben #

Was du siehst Übliche Ursache Lösung
Der Agent wartet, und nichts passiert Eine Rückfrage- oder Freigabekarte ist offen, vielleicht auf einem anderen Gerät. Ein Turn, der auf eine Karte wartet, gilt nie als hängend Beantworte die Karte oder drück Stop. Während eine Karte offen ist
Eine Freigabekarte nimmt deine getippte Antwort nicht an Getippter Text ist kein Weg, Ja zu sagen Nutze Allow (Erlauben) oder Deny (Ablehnen). Freigabekarten
Die Karte ist verschwunden, und der Agent hat weitergemacht Niemand hat in 8 Stunden geantwortet (2 auf der Extension-Engine von Copilot), oder Stop hat sie geschlossen Während eine Karte offen ist
Der Senden-Button lautet Queue (Einreihen) Eine Karte ist offen; die Nachricht geht hinein, nachdem du geantwortet hast Während eine Karte offen ist
You are offline. Answer queued Keine Verbindung, als du geantwortet hast Von woanders antworten
Ein Grok-Agent stellt eine Frage, und keine Karte erscheint Grok hat keine Karten Antworte im Eingabebereich. Grok
In einer Benachrichtigung fehlt ein Antwort-Button Die Frage hat keine Auswahlmöglichkeiten, oder sie sind zu lang Benachrichtigungen

Agents, die mit anderen Sessions und Relays arbeiten #

Was du siehst Übliche Ursache Lösung
Der Agent hat kein Tool für Sessions oder meldet REMOTE_RELAY_SESSION_LIMIT, REMOTE_RELAY_NESTED_SESSION oder REMOTE_RELAY_PROVIDER_UNAVAILABLE Der Schalter ist aus, oder ein Limit greift Agent-Sessions
REMOTE_RELAY_LOCKED Du hast das Relay in dieser Konversation nicht erwähnt Gekoppelte Relays
Ein Relay zeigt Offline oder Token not accepted (Token nicht akzeptiert) Das andere Relay ist aus, oder sein Token hat sich geändert Gekoppelte Relays
Die Agents eines anderen Relays können hier keine Prompts senden (REMOTE_INBOUND_DISABLED) Accept prompts from other relays' agents (Prompts von Agents anderer Relays annehmen) ist aus Gekoppelte Relays
Das Beobachten einer Session auf einem gekoppelten Relay sagt, dass es ein Update braucht Das andere Relay läuft mit einem älteren OAR Sessions auf einem gekoppelten Relay
REMOTE_RELAY_UNKNOWN_MODEL Der Agent hat ein Modell genannt, das das Ziel-Relay für den Provider nicht listet, zum Beispiel gpt-5-4 für gpt-5.4 Die Antwort nennt die ähnlichen Treffer und die gültigen IDs. Welche Modelle akzeptiert werden
Ein beobachtender Agent wird nicht mehr geweckt, wenn ein Shell-Befehl endet Seit 0.9.13 lassen die Standard-Ereignisse Shell-Befehle weg, die gut geendet haben; Fehler wecken ihn weiterhin Abonniere mit task_finished in events. Die Standard-Ereignisse
Jeder andere Code REMOTE_… Fehler

Dateien, Previews und Teilen #

Was du siehst Übliche Ursache Lösung
File not found (Datei nicht gefunden) beim Klick auf einen Pfad in einer Antwort Ein absoluter Pfad außerhalb des Workspace wird als Workspace-Pfad gelesen Wohin ein Link in einer Antwort führt, Was der Viewer öffnen kann
Ein Dateilink schlägt fehl, oder eine Datei öffnet sich nicht Die Datei liegt außerhalb dessen, was der Viewer lesen darf Was der Viewer öffnen kann
Ein Ordner im Dateibrowser öffnet sich leer Das Relay kann ihn nicht lesen Grenzen
Der Agent soll committen, rückgängig machen oder pushen, aber Git changes (Git-Änderungen) hat keinen Button Diese Ansicht zeigt nur Änderungen Was es nicht tut
Ein Preview-Link öffnet sich nicht, zeigt No such preview oder Preview upstream unreachable, oder die Seite ist leer Die Lane ist aus, der Dev-Server ist gestoppt, oder die App schreibt absolute Pfade Previews
Preview lane is disabled oder Preview lane failed its startup checks Die Lane ist aus, oder eine Prüfung ist fehlgeschlagen Wenn die Lane nicht starten will
Too many live previews (max 8) Das Limit Previews
Ein geteilter Link verlangt vom Betrachter eine Anmeldung, zeigt einen alten Stand oder lässt sich von niemand anderem öffnen Cloudflare Access, eine Cache-Regel oder ein Relay, das nur auf diesem Rechner lauscht Das Relay erreichen
Ein geteilter Link antwortet 404 Das Teilen wurde beendet, der Link erneuert oder die Konversation gelöscht Settings → Sharing (Einstellungen → Teilen) listet die Links, die funktionieren. Deine geteilten Links
Ein Pfad erscheint noch in einer geteilten Ansicht Ein relativer Pfad oder einer in einem Bild Pfade und Dateinamen
Eine Preview erscheint in Settings → Previews (Einstellungen → Previews) als nicht ausgeliefert Das Relay konnte sie bei seinem Start nicht prüfen Sie wird alle 15 Sekunden erneut geprüft. Previews nach einem Neustart

Benachrichtigungen und die installierte App #

Was du siehst Übliche Ursache Lösung
Der Schalter für Benachrichtigungen ist ausgegraut Die Seite läuft nicht über HTTPS oder localhost Benachrichtigungen
Benachrichtigungen haben aufgehört oder kommen nur auf einem Gerät an Im Browser blockiert, Gerät deaktiviert, oder ein anderes Gerät hat OAR im Vordergrund offen Benachrichtigungen
Der Browser bietet keine Installation an Das Relay läuft nicht über HTTPS oder localhost Was es braucht
Die App zeigt Enter your access token to connect (Gib dein Zugriffstoken ein, um dich zu verbinden) Keine gültige Anmeldung in der App In der App anmelden
Suspend host (Host in den Ruhezustand versetzen) fehlt oder tut nichts Seine Einstellung ist aus, das Relay läuft nicht unter Windows, oder es läuft noch etwas Den Host in den Ruhezustand versetzen

Updates #

Was du siehst Übliche Ursache Lösung
Update (Aktualisieren) fehlt, oder die Prüfung findet nichts Ein git-Checkout, eine ausgeblendete Version, oder keine neuere Version bekannt Wenn es nicht funktioniert
Check for updates (Nach Updates suchen) ist ausgegraut OAR_NO_UPDATE_CHECK ist beim Relay gesetzt Wenn es nicht funktioniert
oar update endet mit 1 und Could not fetch … oder verweist auf --to Das Manifest lässt sich nicht abrufen, oder die Prüfung ist abgeschaltet oar update --to X.Y.Z funktioniert weiterhin. Wenn es nicht funktioniert
oar update --to=0.9.2 installiert das neueste Release --to= wird ignoriert Schreib --to 0.9.2 mit Leerzeichen. oar update
Ein Update schlägt mit EACCES fehl npm kann nicht in den Ordner des Pakets schreiben Wenn es nicht funktioniert
Nach einem Update läuft noch die alte Version Der Neustart wartet auf laufende Turns, oder das Update wurde nicht angewendet Der Neustart wartet, Wenn es nicht funktioniert
Die installierte App zeigt eine alte Seite Sie wechselt beim Start auf die neue Version Updates

Das Relay hatte keinen Speicher mehr Neu in 0.9.19 #

Das Relay startet mit einem festen Heap-Limit: 60 % des RAM des Rechners, in Schritten von 64 MB, mindestens 2.048 MB und höchstens 8.192 MB, und nie unter dem eigenen Standard von Node.js, aber nie über dem vorhandenen Speicher. In einem Container mit Speicherlimit zählt dieses Limit statt des RAM. Auf einem Rechner mit 4 GB sind das etwa 2,3 GB. Jeder Start schreibt das Limit und seine Herkunft ins Log:

[relay] heap limit 2368 MB (default: 60% of 3.9 GB RAM)

Beim Start und alle 10 Minuten bekommt das Log eine Zeile wie [relay] memory rss=812 heapUsed=640 heapLimit=2560, und eine zusätzliche Zeile [relay] memory high: …, wenn der belegte Heap 80 % des Limits überschreitet.

Hat das Relay keinen Speicher mehr, startet es von selbst wieder, wie nach jedem Absturz: bis zu 2-mal hintereinander, und der 3. Absturz in Folge beendet es mit Exit-Code 1, worauf der systemd-Dienst unter Linux es wieder startet. Ein Lauf von 10 Minuten oder mehr setzt die Zählung zurück. Vor 0.9.19 blieb ein Relay, dem der Speicher ausging, gestoppt. Nach einem Update von einer früheren Version wirken das Heap-Limit und dieser Neustart erst, wenn oar selbst einmal gestoppt und wieder gestartet wurde (Upgrade-Hinweise für 0.9.19).

Um das Limit selbst zu setzen, trag heapLimitMb (ganze MB, mindestens 512) in config.json ein und starte das Relay neu. Ein --max-old-space-size in NODE_OPTIONS oder auf der node-Befehlszeile, die server.js startet, hat Vorrang vor heapLimitMb. Anders als heapLimitMb geht ein in einer Shell gesetztes NODE_OPTIONS verloren, wenn etwas anderes das Relay neu startet.

Der Heap-Snapshot #

Nähert sich der Heap seinem Limit, schreibt Node.js einen Heap-Snapshot (Heap.<date>.<time>.<pid>.….heapsnapshot) in den Ordner diagnostics im Datenordner des Relays (Dateien und Ordner). Das Relay legt den Ordner an und schreibt beim Start seinen Pfad ins Log; unter Linux und macOS kannst nur du ihn öffnen.

  • Datenträger: Ein Snapshot ist etwa so groß wie der belegte Heap, also bis zum Limit groß. Hat das Laufwerk des Datenordners weniger als das Doppelte des Heap-Limits frei, startet das Relay ohne Snapshot und schreibt ins Log, warum.
  • Speicher: Das Schreiben kann bis zu etwa das Doppelte des belegten Heaps brauchen, und das Relay antwortet währenddessen nicht. Auf einem kleinen Rechner kann das Schreiben scheitern oder dazu führen, dass der Prozess beendet wird; das Relay endet dann so, wie es ohne Snapshot geendet hätte.
  • Lesen: Kopier ihn vom Rechner, öffne ihn in Chrome DevTools unter Memory → Load (Speicher → Laden) und sortier nach Retained size (beibehaltene Größe), um zu sehen, was den Speicher belegt. Ein Snapshot aus einem früheren, gesunden Lauf zeigt, was gewachsen ist.

Ein Snapshot enthält deine Geheimnisse

Ein Heap-Snapshot enthält alles, was im Speicher des Relays war, auch das Zugriffstoken und die API-Keys der Provider. Teile nie einen unverändert, und lösch ihn, sobald er gelesen ist: Das Relay löscht Snapshots nie.

Ein Problem melden #

Wenn nichts von oben hilft, eröffne ein Issue unter github.com/oar-sh/oar/issues. Gib an:

  • die Ausgabe von oar --version;
  • die Ausgabe von oar doctor und von oar status;
  • was du getan hast, was du erwartet hast und was passiert ist, mit der genauen Meldung;
  • die relevanten Zeilen des Logs, das zum Problem passt (Logs), nicht die ganze Datei.

Entferne zuerst Geheimnisse

Bevor du etwas postest, entferne Zugriffstokens (auch den Teil ?token= einer Adresse), API-Keys und Tunnel-Tokens, und ersetze persönliche Pfade, Hostnamen und Kontonamen. Das Issue ist öffentlich.