Alle Seiten
Auf dieser Seite

Dateien und Ordner

OAR legt alles, was ihm gehört, in einem Ordner ab, dem Zustandsordner: die Config-Datei, die Datenbank mit deinen Konversationen, die Logs und die hochgeladenen Dateien. Diese Seite sagt, wo dieser Ordner liegt, was darin ist, welche Teile du löschen kannst, welche Geheimnisse enthalten und was das Relay von selbst entfernt. Manche Daten liegen gar nicht im Zustandsordner: Jeder Provider hält seine eigenen Session-Daten und Anmeldungen in eigenen Ordnern.

Der Zustandsordner #

Installation Zustandsordner
Installer oder npm install -g, macOS, Linux und WSL ~/.oar
Installer oder npm install -g, Windows %APPDATA%\oar
Globale Installation mit gesetztem OAR_STATE_ROOT der Ordner, den sie nennt
Git-Checkout im Checkout: server/config.json, server/data/, server/uploads/, server/logs/

npm install -g und oar update ersetzen das Paket, fassen den Zustandsordner aber nie an. OAR_STATE_ROOT muss in jeder Shell gesetzt sein, in der du oar ausführst, sonst sucht der Befehl im Standardordner; siehe Umgebungsvariablen. oar doctor gibt die verwendeten Pfade aus: den Zustandsordner, die Config-Datei, die Datenbank und ihre Größe. Dieselben Pfade stehen für jede Installationsart unter Installation.

Drei Umgebungsvariablen verschieben einzelne Teile: COPILOT_WEB_RELAY_CONFIG die Config-Datei, COPILOT_WEB_RELAY_DATA_DIR den Datenordner (Datenbank, Lock und Uploads) und COPILOT_WEB_RELAY_LOG_DIR den Log-Ordner. In config.json verschiebt der Key dataDir den Datenordner ebenfalls; die Umgebungsvariable hat Vorrang. Ein relatives dataDir gilt ab dem Ordner von config.json.

Neu in 0.9.14 Auch Uploads folgen dem Datenordner: <dataDir>/uploads. Uploads, die frühere Versionen in server/uploads hinterlassen haben oder die eine Migration in uploads/ des Zustandsordners kopiert hat, werden weiter an Ort und Stelle gelesen.

Neu in 0.9.14 Das Relay einer globalen Installation läuft auf dem Datenordner des Zustandsordners, egal, wie es gestartet wird: oar start, der Linux-Dienst, beide Windows-Autostart-Modi und ein einfaches gh copilot mit OARs Extension. Aus einem dataDir in config.json, das ein früheres Autostart-Relay genutzt hat, wird einmal kopiert; der Ordner selbst bleibt, wie er ist.

Vor 0.9.14: Windows-Autostart und gh copilot

Bis 0.9.13 setzten die zwei Windows-Autostart-Einträge und das Relay, das ein einfaches gh copilot startete, nur die Config-Datei (gh copilot nicht einmal die). Ein so gestartetes Relay hielt seine Datenbank, Lock-Datei, Uploads und Logs in server\data, server\uploads und server\logs im installierten Paketordner, den npm install -g und oar update ersetzen. Das Update auf 0.9.14 kopiert diese Daten, bevor npm sie entfernt; siehe den Upgrade-Hinweis.

Unter macOS und Linux macht das Relay den Datenordner nur für dich lesbar (Modus 700) und die Config-Datei und die Datenbankdateien nur für den Besitzer zugänglich (Modus 600).

Eine alte Installation umziehen #

Vor der Umbenennung des Projekts lag der Zustand im Ordner server/ eines git-Checkouts, und Config-Datei und Logs des Launchers eines Checkouts in ~/.config/copilot-remote ($XDG_CONFIG_HOME/copilot-remote, wenn das gesetzt ist; Windows: %LOCALAPPDATA%\copilot-remote). Eine globale Installation kopiert Config-Datei und Logs dieses Ordners einmal in den Zustandsordner, bei ihrem ersten oar setup oder oar copilot. oar start migriert nicht. Um den Zustand eines Checkouts samt Datenbank zu importieren:

oar setup --migrate-from /home/dev/projects/old-oar

Der Ordner ist der Checkout selbst, nicht sein Ordner server/. Was passiert:

  • Es kopiert die Datenbank (mit ihren Dateien -wal und -shm), die Config-Datei, die Cursor-Agent-Speicher, die in data/ lagen (nur wenn es eine Datenbank gab), den Ordner uploads und den Ordner logs, wenn dieser 50 MB oder kleiner ist.
  • Es ändert die Quelle nie. Lösch den alten Ordner selbst, wenn du zufrieden bist.
  • Es verweigert, solange noch ein Relay aus der Quelle läuft, und sagt das.
  • Es prüft die Kopie, bevor sie zählt: Die Datenbank muss die Integritätsprüfung von SQLite bestehen und dieselbe Zahl an Konversationen und Nachrichten enthalten. Wenn nicht, entfernt es, was es kopiert hat, Neu in 0.9.14 nicht mehr den ganzen Zustandsordner, und hinterlässt eine Meldung.
  • Neu in 0.9.14 Es überschreibt nie. Eine config.json, die schon im Zustandsordner liegt, bleibt. Die leere Datenbank, die das Relay eines Installers angelegt hat, wird nach backups/ verschoben (stopp vorher das Relay: oar stop); eine Datenbank mit Konversationen lässt es verweigern und sagen, was du stattdessen tun kannst. Während es eine Datenbank kopiert, hält es den Lock des Relays, damit währenddessen kein Relay darauf startet.
  • Es schreibt eine Quittung nach backups/MIGRATION.md und eine Markerdatei .migrated in den Zustandsordner.

Nach dem Installer Neu in 0.9.14

Der Marker wird nur nach einer echten Kopie geschrieben, und ein Ordner, den du mit --migrate-from nennst, wird immer migriert, mit einer Zeile, die sagt, was kopiert wurde oder warum nichts. Die Option funktioniert also auch, nachdem ein Installer oar setup ausgeführt hat. Derselbe Ordner ein zweites Mal meldet nur, dass er schon migriert ist. Vor 0.9.14 schrieb das erste oar setup oder oar copilot den Marker auch, wenn es nichts zu importieren gab, und ein späteres --migrate-from tat wortlos nichts.

Neu in 0.9.14 Migrierte Uploads landen in data/uploads/, wo das Relay sie liest, und die Cursor-Agent-Speicher in data/cursor-agents/, das das Relay standardmäßig liest. Uploads, die eine frühere Migration in uploads/ des Zustandsordners hinterlassen hat, werden beim nächsten Start des Relays in data/uploads/ zusammengeführt; nichts wird überschrieben oder gelöscht. Ordner im Checkout, die Symlinks sind, werden als echte Ordner kopiert.

Was darin liegt #

Die Pfade sind relativ zum Zustandsordner. „Gefahrlos löschbar“ heißt, dass das Relay danach funktioniert; es sagt nichts darüber, was du verlierst.

Pfad Was er enthält Gefahrlos löschbar?
config.json Port, Zugriff, das Zugriffstoken, Timer und optional Tunnel und Previews. Siehe config.json Stopp zuerst das Relay. oar setup schreibt eine neue mit einem neuen Token, was jedes Gerät abmeldet. Tunnel-Einstellungen darin gehen verloren
data/copilot.db Die Datenbank: deine Konversationen und Einstellungen. Siehe Die Datenbank Nein: Das ist dein Verlauf. Sichere ihn vorher
data/copilot.db-wal, data/copilot.db-shm Das Write-Ahead-Log der Datenbank und sein Index, vorhanden, während das Relay läuft Nie allein. Lösch sie nur zusammen mit copilot.db
data/uploads/<sha256> Eine Datei pro hochgeladenem oder eingefügtem Anhang, benannt nach ihrem SHA-256-Hash, sodass dieselbe Datei nur einmal gespeichert wird. Eine Datei <sha256>.<pid>.<number>.tmp existiert, während ein Upload geschrieben wird Nicht von Hand: Die Datenbank verweist auf diese Dateien, und eine Konversation, die eine davon genutzt hat, zeigt einen fehlenden Anhang. Das Relay entfernt ungenutzte, siehe Aufbewahrung
data/relay-server.lock Der Lock für ein Relay pro Ordner, siehe Ein Relay pro Datenordner Nur, wenn kein Relay läuft
data/cursor-agents/ Neu in 0.9.14 Ein Ordner pro Cursor-Konversation: der Zustand ihres Agents. Siehe Außerhalb des Zustandsordners Nicht, solange du Cursor nutzt: Eine Konversation ohne ihren Speicher bekommt einen neuen Agent
data/deepseek-claude/ Neu in 0.9.17 Der Claude-Code-Zustand von DeepSeek-Chats: Verläufe und Session-Ordner unter projects/, was jeder Claude-Code-Prozess hinterlässt (sessions/, session-env/, shell-snapshots/), die eigenen Einstellungen von Claude Code und oar-cli-starts.json, die Aufzeichnung des Relays über jeden Start von Claude Code, mit der ein Löschen die richtigen Shell-Snapshots findet. Keine Claude-Anmeldung. Nur für dich lesbar (Modus 700 unter macOS und Linux). Das Löschen einer DeepSeek-Konversation entfernt ihren Teil, siehe Aufbewahrung Nicht, solange du DeepSeek-Chats nutzt: Deren Claude-Code-Sessions liegen hier. Der Worker legt den Ordner beim Start neu an
data/diagnostics/ Neu in 0.9.19 Heap-Snapshots (*.heapsnapshot), die das Relay schreibt, wenn sein Heap sich dem Limit nähert, siehe Das Relay hatte keinen Speicher mehr. Nur für dich lesbar (Modus 700 unter macOS und Linux). Ein Snapshot enthält das Zugriffstoken und die API-Keys Ja. Das Relay löscht Snapshots nie: Lösch jeden, sobald er gelesen ist
data/rescued-package-data/<time>/ Neu in 0.9.14 Die Daten, die eine frühere Version im Paket hielt, dorthin kopiert vom Update, bevor npm sie entfernte. Das Relay übernimmt sie bei seinem nächsten Start Sobald das Relay sie übernommen hat ([data] Brought over the database … in relay-console.log)
backups/<time>/ Neu in 0.9.14 Eine Datenbank, die das Relay durch eine neuere, übernommene ersetzt hat; außerdem die leere Datenbank, die eine Migration beiseitegelegt hat Sobald du sicher bist, dass du sie nicht brauchst
data/relay-previous.json Port und Token, mit denen das laufende Relay gestartet ist, aufbewahrt zwischen einem oar setup, das sie geändert hat, und dem Neustart, der sie anwendet. Wird von selbst entfernt Ja
logs/server.log, logs/server-err.log Was oar start oder oar copilot ausgegeben hat, als es das Relay selbst gestartet hat, Standardausgabe und Fehler. Wird nur geschrieben, wenn oar das Relay selbst startet; der Dienst und ein Relay, das in einem Terminal läuft, schreiben sie nicht Ja. Sie rotieren nie und wachsen
logs/relay-console.log Eine Kopie der Konsole des Relays mit Zeitstempel pro Zeile, geschrieben von jedem Relay Ja
logs/worker-<session>.log Ausgabe eines Session-Workers, siehe Logs Ja
logs/worker-<session>.mcp.json Die Tool-Konfiguration einer Session. Sie enthält keine Geheimnisse Ja. Das Relay schreibt eine neue, wenn der Worker der Session startet
logs/ext-debug.log, logs/relay-banner-state.json Geschrieben von der Extension der Copilot-Extension-Engine Ja
npm/ Das OAR-Paket, wenn der Installer es hier abgelegt hat, weil der globale Ordner von npm Root-Rechte brauchte Nicht, solange du diese Installation nutzt. Es ist das Programm
runtime/node/ OARs eigenes Node.js, wenn der Rechner keines hatte, das neu genug war Nicht, solange oar darauf läuft
logs/oar-uninstall.log Neu in 0.9.15 Das Ergebnis von npm nach oar uninstall und jeder versteckte Ordner .oar-*, den npm zurückgelassen hat. Mit --purge landet es stattdessen im Temp-Ordner des Systems Ja
oar-web-relay-launcher.cmd, oar-relay-task.xml (Windows) Der Launcher, den der Start-Task ausführt, und die Task-Definition, die OAR registriert. Siehe Autostart Nicht, solange das Relay beim Hochfahren startet. oar autostart off entfernt beide
*.bak, *.bak-2, <task>.task.xml.bak (Windows) Neu in 0.9.15 Kopien von selbst angelegten Autostart-Einträgen, die oar autostart --replace ersetzt hat, und der Tasks, die ein fehlgeschlagener Wechsel zurückgestellt hat: ein Launcher, ein Autostart-Eintrag, das exportierte XML eines Tasks (schtasks /create /xml nimmt es zurück). Kopien von Einträgen, die OAR erzeugt hat, verschwinden, sobald ein Wechsel geklappt hat Ja, sobald du den Eintrag nicht zurückwillst
backups/MIGRATION.md, .migrated Quittung und Marker einer Migration Die Quittung: ja. Den Marker: lass ihn liegen, sonst könnte die automatische Migration aus dem früheren Config-Ordner noch einmal laufen

Außerhalb des Zustandsordners liegt der Launcher oar des Installers in ~/.local/bin/oar (nur in den Fällen, in denen er nach ~/.oar/npm installiert), und der Linux-Dienst ist ~/.config/systemd/user/oar.service. Wie du sie entfernst, steht unter OAR entfernen. Neu in 0.9.15 oar uninstall entfernt den Dienst und das Paket und lässt den Zustandsordner, wie er ist; oar uninstall --purge löscht ihn, nachdem du delete eingetippt hast.

Ein git-Checkout hält dieselben Dateien in server/. Generierte Bilder liegen nicht im Zustandsordner, siehe Außerhalb des Zustandsordners.

Die Datenbank #

Die Datenbank ist eine einzelne SQLite-Datei, copilot.db. Das Relay legt sie beim ersten Start an. Sie enthält, was du deine Daten nennen würdest:

  • Konversationen und ihre Nachrichten, mit dem Verlauf, dem Index der Anhänge und angepinnten Nachrichten
  • die Nachrichten-Queue, eingereihte und wartende Nachrichten und Fragen, die ein Agent gestellt hat
  • die Einstellungen des Relays, die du in der Weboberfläche änderst (die App-weiten Schalter, Provider-Einstellungen, die Wahl der Aufbewahrung, Update-Vorlieben, die Modelllisten)
  • die API-Keys von OpenAI, Cursor und Neu in 0.9.17 DeepSeek, wenn du sie eingegeben hast
  • gekoppelte Relays und ihre Tokens und die Abonnements, die Sessions beobachten, auf diesem und auf gekoppelten Relays
  • die Web-Push-Abonnements deiner Geräte und die Push-Keys des Relays
  • Links geteilter Konversationen
  • Aufzeichnungen von Subagents und Workflows, Aktivität und Überlegungen pro Konversation
  • den Index der hochgeladenen Dateien und welche Nachrichten sie nutzen
  • Verbrauchs-Snapshots für die Plan-Anzeigen in Check Usage (Verbrauch prüfen), und Neu in 0.9.17 was die DeepSeek-Karte zählt: die Tokens und Suchen von DeepSeek-Turns pro Modell und Tag, die letzten Summen, die jede DeepSeek-Session gemeldet hat, und die Guthabenstände, an denen ihr Balken gemessen wird
  • Bild-Chats: ihre Operationen und die Verbindungen zwischen generierten Bildern
  • Preview-Karten

Migrationen laufen bei jedem Start des Relays von selbst. Sie legen an, was fehlt, und fügen Spalten hinzu, und ein erneuter Lauf ändert nichts. Du führst sie nicht aus und kannst sie nicht überspringen.

Sichern #

OAR hat keinen Befehl für Backups. Die Datenbank läuft im Write-Ahead-Modus von SQLite, neuere Änderungen können also in der Datei -wal daneben liegen. So sicherst du sie:

  1. Stopp das Relay mit oar stop.
  2. Kopier copilot.db und, falls vorhanden, copilot.db-wal und copilot.db-shm zusammen.
  3. Starte das Relay wieder.

Zum Wiederherstellen stoppst du das Relay und legst die kopierten Dateien so zurück, wie sie waren. Kopier copilot.db nicht allein, während das Relay läuft, und misch keine Datenbankdatei mit der Datei -wal einer anderen Kopie. Ein Backup enthält deine API-Keys und Tokens, siehe Wo Geheimnisse liegen; halte es so privat wie den Zustandsordner.

Logs #

Datei Geschrieben von Rotation
relay-console.log dem Relay, immer Bei 5 MB wird die Datei zu relay-console.log.1, die älteren rücken nach .2 und .3, und die älteste fällt weg. Zeilen zeigen dein Zugriffstoken als [token]. OAR_NO_CONSOLE_LOG=1 schaltet die Datei ab
server.log, server-err.log der Shell von oar start oder oar copilot, wenn sie das Relay im Hintergrund startet keine
worker-<session>.log jedem Node-Session-Worker (Claude, Claude Cloud, Cursor, Grok, Neu in 0.9.17 DeepSeek und die Copilot-SDK-Engine), über Worker-Neustarts hinweg fortgeschrieben Bei jedem Start wird eine Datei über 10 MB zu worker-<session>.log.1 und ersetzt die vorige. Dateien gelöschter Konversationen bleiben
ext-debug.log der Extension der Copilot-Extension-Engine keine

Die Copilot-Extension-Engine hat kein Worker-Log: Sie ist das eigene Terminal der Copilot CLI. Ein Relay, das als systemd-Dienst läuft, schreibt außerdem ins Journal, siehe Das Relay automatisch starten.

Ein git-Checkout, der mit npm start gestartet wurde, hält seine Logs in server/logs. Einer, der mit oar start oder oar copilot gestartet wurde, hält sie in ~/.config/copilot-remote/logs (Windows: %LOCALAPPDATA%\copilot-remote\logs), sofern COPILOT_WEB_RELAY_LOG_DIR keinen anderen Ordner nennt.

Wo Geheimnisse liegen #

Geheimnis Wo es gespeichert ist
Das Zugriffstoken config.json, im Klartext. Behandle die Datei, Kopien davon und die Anmeldeadresse (?token=) wie ein Passwort. Ein Browser hält es 30 Tage lang als Anmelde-Cookie. Die Lock-Datei des Relays enthält nur einen Hash davon
Das vorige Zugriffstoken, zwischen oar setup und dem Neustart data/relay-previous.json, im Klartext, nur für dich lesbar; wird von selbst entfernt
Ein Cloudflare-Tunnel-Token (verwalteter Tunnel) config.json, Key cloudflaredTunnel.token, oder die Umgebungsvariable COPILOT_CLOUDFLARED_TOKEN
OpenAI-API-Key Die Datenbank. Das Panel zeigt ihn nie wieder an, und er wird nicht an Browser geschickt
Cursor-API-Key Die Datenbank, auf dieselbe Weise
DeepSeek-API-Key Neu in 0.9.17 Die Datenbank, auf dieselbe Weise (Einstellung deepseek_api_key). Das Relay schickt ihn nur an die DeepSeek-Basis-URL und gibt ihn nur an die Worker von DeepSeek-Chats. Siehe DeepSeek
Das Token eines gekoppelten Relays Die Datenbank. Wird nie an Browser oder Agents geschickt. Eine Kopplung, die das eigene Token dieses Relays nutzt, speichert keines
Link-Tokens geteilter Konversationen Die Datenbank
Web-Push-Keys und Geräte-Abonnements Die Datenbank
Heap-Snapshots Neu in 0.9.19 data/diagnostics/: alles, was im Speicher des Relays war, auch das Zugriffstoken und die API-Keys. Teile nie einen unverändert. Siehe Das Relay hatte keinen Speicher mehr
Claude-Anmeldung Der eigene Ordner der Claude CLI auf dem Rechner des Relays: ~/.claude oder der Ordner in CLAUDE_CONFIG_DIR. Das Relay speichert keine. Claude Cloud liest dieselbe Anmeldung und hält sie im Speicher. DeepSeek-Chats nutzen sie nicht
Grok-Anmeldung Der eigene Ordner der Grok CLI: ~/.grok/auth.json
GitHub-Copilot-Anmeldung Die eigene Anmeldung der Copilot CLI auf dem Rechner des Relays

Während ein Worker unter tmux startet, schreibt das Relay seinen Provider-Key (den Key von OpenAI, Cursor oder Neu in 0.9.17 DeepSeek oder ein CLAUDE_CODE_OAUTH_TOKEN aus der Umgebung des Relays für einen Claude-Cloud- oder, Neu in 0.9.17, einen Claude-Worker) in eine temporäre Datei im Temp-Ordner des Systems, nur für dich lesbar. Die Shell des Workers liest sie einmal und löscht sie. Jeder Worker bekommt nur den Key seines eigenen Providers.

Aufbewahrung #

Das Relay entfernt Folgendes von selbst. Sonst wird nichts gelöscht, außer du löschst eine Konversation.

Was Regel
Ungenutzte Uploads Eine Datei, auf die keine Nachricht und kein Entwurf verweist, wird entfernt, sobald sie älter als 24 Stunden ist. Die Prüfung läuft beim Start des Relays und alle 6 Stunden. Es gibt keine Einstellung. Das Löschen einer Konversation entfernt auch die Dateien, die nur sie genutzt hat
Aufzeichnungen von Subagents Die Tool-Eingaben und -Ergebnisse abgeschlossener Subagents werden nach Keep sub-agent tool output (Tool-Ausgaben von Subagents behalten) Tagen entfernt, in Settings → General (Einstellungen → Allgemein): 7, 14, 30 oder 90 Tage oder Always (Immer). Der Standard ist 90. Überlegungen, Antworten, Notizen und die einzeilige Zusammenfassung jedes Aufrufs bleiben. Die Prüfung läuft 30 Sekunden nach dem Start, einmal am Tag und 5 Sekunden, nachdem du die Einstellung änderst. Die Datenbankdatei schrumpft nicht; SQLite verwendet den frei gewordenen Platz wieder
Relay-Ereignisse für beobachtete Sessions Ereignisse, die die beobachtende Konversation bekommen hat, werden nach 2 Stunden entfernt. Ein beendetes Abonnement wird nach 7 Tagen entfernt. Details unter Sessions beobachten. Das Aufräumen läuft alle 10 Minuten
Ereignisse, die ein gekoppeltes Relay nicht abgeholt hat Pro Abonnement bleiben die neuesten 500, keines älter als 7 Tage, und ein Abonnement, das 7 Tage lang niemand abgeholt hat, endet. Fragen und Fehler fallen zuletzt weg. Siehe Remote-Relays
relay-console.log Rotiert bei 5 MB und behält drei ältere Dateien, siehe Logs
worker-<session>.log Wird beim Start über 10 MB zu .1. Nichts entfernt die Logs gelöschter Konversationen
Generierte Bilder Nie nach Alter. Das Löschen der Konversation löscht ihre Bilder
Die Lock-Datei Wird entfernt, wenn das Relay stoppt. Nach einem Absturz ersetzt der nächste Start sie, siehe Ein Relay pro Datenordner

Das Löschen einer Konversation entfernt ihre Nachrichten, Queue-Einträge, Fragen und Subagent-Aufzeichnungen aus der Datenbank sowie den Claude-Verlauf und die generierten Bilder, die zu ihr gehören. Neu in 0.9.17 Bei einer DeepSeek-Konversation entfernt es außerdem in data/deepseek-claude/ den Verlauf, die Ordner der Session, was ihr gestopptes Claude Code hinterlassen hat (seine Registrierung, die Hook-Umgebung und den Shell-Snapshot) und den Projektordner, sobald keine andere Session ihn nutzt, und aus der Datenbank die letzten Summen, die ihre Sessions gemeldet haben. Was sie zu den Summen und Tagen der DeepSeek-Karte beigetragen hat, bleibt. Was jeder Provider selbst aufbewahrt, steht im nächsten Abschnitt.

Außerhalb des Zustandsordners #

Was Wo
Claude-Verläufe und Session-Ordner Unter projects im Claude-Konfigurationsordner (~/.claude oder CLAUDE_CONFIG_DIR). Das Löschen einer Konversation löscht ihren Verlauf. Siehe Claude. Neu in 0.9.17 DeepSeek-Chats halten ihre stattdessen im Datenordner: data/deepseek-claude/ oben
Session-Zustand von GitHub Copilot ~/.copilot/session-state oder der Ordner in COPILOT_SESSION_STATE_DIR
Bilder aus OpenAI-Image-Chats Im Session-State-Ordner von Copilot, in <session>/generated-images/ unter der Konversation. Siehe OpenAI
Cursor-Agent-Speicher Neu in 0.9.14 Ein Ordner pro Konversation, in cursor-agents im Datenordner des Relays (~/.oar/data/cursor-agents, %APPDATA%\oar\data\cursor-agents) oder in dem Ordner, den CURSOR_AGENT_STORE_DIR nennt. Bei einer globalen Installation im Zustandsordner; hier aufgeführt, weil frühere Versionen sie anderswo hielten. Siehe Cursor
Die Grok CLI und ihre Anmeldung ~/.grok
Der Copilot-Extension-Wrapper ~/.copilot/extensions/web-relay/, geschrieben von oar copilot oder oar copilot --install-extension. Neu in 0.9.15 oar uninstall entfernt ihn, wenn es der ist, den OAR für diese Installation geschrieben hat
Claude Cloud Nichts auf der Platte. Eine Cloud-Session läuft bei Anthropic; ihre Ergebnisse kommen als gepushte Branches zurück
Temporäre Dateien Die kurzlebige Provider-Key-Datei oben, im Temp-Ordner des Systems

Vor 0.9.14 lagen die Cursor-Speicher standardmäßig in server/data/cursor-agents im Paketordner, den ein Update ersetzt, sodass eine Konversation ihren gespeicherten Agent verlieren und einen neuen bekommen konnte (siehe Cursor). Eine Konversation, deren Speicher noch am alten Ort liegt, nutzt ihn dort weiter, und eine mit einem Speicher an beiden Orten nutzt den zuletzt geänderten; nichts wird verschoben oder gelöscht.

Die Arbeit deiner Agents, die Dateien in deinen Projektordnern, liegt ganz außerhalb von OARs Speicher.

Ein Relay pro Datenordner #

Das Relay legt beim Start relay-server.lock im Datenordner an und entfernt die Datei, wenn es stoppt. Die Datei enthält die Prozessnummer des Relays, einen Hash seines Tokens und seine Startzeit.

Startet ein zweites Relay auf demselben Datenordner, während das erste läuft, gibt das zweite eine Zeile aus und beendet sich, Neu in 0.9.14 mit Code 78 (vorher Code 1), den der Linux-Dienst nicht neu versucht:

Relay already running (pid=4242, startedAt=2026-01-05T09:12:40.000Z; lock /home/dev/.oar/data/relay-server.lock). It is held by relay process 4242: oar stop, or end process 4242.

Relay appears to be owned by another live process statt Relay already running heißt, dass das laufende Relay ein anderes Token hat. Lässt sich vom Halter nicht sagen, ob er ein Relay ist, lautet der Hinweis If no relay is running, end process 4242 or delete the lock. oar start gibt denselben Hinweis nach The relay did not come up aus. Das erste Relay wird nicht angefasst. Nachrichten bleiben ausstehend, wenn das Relay, das du erwartest, nicht das ist, das läuft; oar doctor zeigt die verwendete Config und Datenbank.

Nach einem Absturz oder Stromausfall bleibt die Lock-Datei liegen. Neu in 0.9.14 Ein Lock von vor dem letzten Hochfahren, oder dessen Prozessnummer jetzt einem später gestarteten Prozess gehört, ist veraltet: Der nächste Start legt ihn beiseite, protokolliert Recovered stale singleton lock und übernimmt den Lock. Das richtet sich nicht mehr nach der Uhr, ein Sprung der Uhr lässt ein laufendes Relay also nicht wie verschwunden aussehen, und zwei Starts, die denselben Lock übernehmen, laufen nicht beide. Ein Lock, der sich nicht lesen lässt (ein leerer, den ein Stromausfall hinterlassen hat), wird noch einmal gelesen und gilt als gehalten, außer seine Zeit weicht um mehr als 10 Sekunden ab. oar start entfernt einen Lock, den diese Version geschrieben hat, nicht mehr; einen einer früheren Version entfernt es weiter, wenn auf dem Port des Relays nichts antwortet.

Zwei Relays können nebeneinander laufen, wenn sie getrennte Datenordner und Ports haben. Wie oar das Relay findet, steht unter Der Befehl oar, und was ein Neustart behält, unter Neustarts und Fortsetzen.