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 |
~/. |
Installer oder npm install -g, Windows |
%APPDATA%\ |
Globale Installation mit gesetztem OAR_ |
der Ordner, den sie nennt |
| Git-Checkout | im Checkout: server/, server/, server/, server/ |
npm install -g und oar update ersetzen das Paket, fassen den
Zustandsordner aber nie an. OAR_ 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_
die Config-Datei, COPILOT_ den Datenordner (Datenbank,
Lock und Uploads) und COPILOT_ den Log-Ordner. In
config. verschiebt der Key data den Datenordner ebenfalls; die
Umgebungsvariable hat Vorrang. Ein relatives data gilt ab dem Ordner von
config..
Neu in 0.9.14 Auch Uploads folgen dem Datenordner: <data.
Uploads, die frühere Versionen in server/ 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 data in config., 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\, server\ und server\ 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
~/. ($XDG_, wenn das gesetzt
ist; Windows: %LOCALAPPDATA%\). 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
-walund-shm), die Config-Datei, die Cursor-Agent-Speicher, die indata/lagen (nur wenn es eine Datenbank gab), den Ordneruploadsund den Ordnerlogs, 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., die schon im Zustandsordner liegt, bleibt. Die leere Datenbank, die das Relay eines Installers angelegt hat, wird nachjson 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/und eine MarkerdateiMIGRATION. md .in den Zustandsordner.migrated
Nach dem Installer Neu in 0.9.14
Der Marker wird nur nach einer echten Kopie geschrieben, und ein Ordner, den
du mit --migrate- 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- tat wortlos nichts.
Neu in 0.9.14 Migrierte Uploads landen in data/, wo das Relay sie
liest, und die Cursor-Agent-Speicher in data/, 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/ 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. |
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/ |
Die Datenbank: deine Konversationen und Einstellungen. Siehe Die Datenbank | Nein: Das ist dein Verlauf. Sichere ihn vorher |
data/, data/ |
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. |
data/ |
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>. 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/ |
Der Lock für ein Relay pro Ordner, siehe Ein Relay pro Datenordner | Nur, wenn kein Relay läuft |
data/ |
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/ |
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-, shell-), die eigenen Einstellungen von Claude Code und oar-, 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/ |
Neu in 0.9.19 Heap-Snapshots (*.), 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/ |
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-) |
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/ |
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/, logs/ |
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/ |
Eine Kopie der Konsole des Relays mit Zeitstempel pro Zeile, geschrieben von jedem Relay | Ja |
logs/ |
Ausgabe eines Session-Workers, siehe Logs | Ja |
logs/ |
Die Tool-Konfiguration einer Session. Sie enthält keine Geheimnisse | Ja. Das Relay schreibt eine neue, wenn der Worker der Session startet |
logs/, logs/ |
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/ |
OARs eigenes Node.js, wenn der Rechner keines hatte, das neu genug war | Nicht, solange oar darauf läuft |
logs/ |
Neu in 0.9.15 Das Ergebnis von npm nach oar uninstall und jeder versteckte Ordner ., den npm zurückgelassen hat. Mit --purge landet es stattdessen im Temp-Ordner des Systems |
Ja |
oar-, oar- (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 |
*., *., <task>. (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 / 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/, . |
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
~/. (nur in den Fällen, in denen er nach ~/.
installiert), und der Linux-Dienst ist ~/..
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.. 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:
- Stopp das Relay mit
oar stop. - Kopier
copilot.und, falls vorhanden,db copilot.unddb- wal copilot.zusammen.db- shm - Starte das Relay wieder.
Zum Wiederherstellen stoppst du das Relay und legst die kopierten Dateien so
zurück, wie sie waren. Kopier copilot. 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- |
dem Relay, immer | Bei 5 MB wird die Datei zu relay-, die älteren rücken nach . und ., und die älteste fällt weg. Zeilen zeigen dein Zugriffstoken als [token]. OAR_ schaltet die Datei ab |
server., server- |
der Shell von oar start oder oar copilot, wenn sie das Relay im Hintergrund startet |
keine |
worker-<session>. |
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>. und ersetzt die vorige. Dateien gelöschter Konversationen bleiben |
ext- |
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/. Einer, der mit oar start oder oar copilot gestartet wurde,
hält sie in ~/. (Windows:
%LOCALAPPDATA%\), sofern COPILOT_
keinen anderen Ordner nennt.
Wo Geheimnisse liegen #
| Geheimnis | Wo es gespeichert ist |
|---|---|
| Das Zugriffstoken | config., 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/, im Klartext, nur für dich lesbar; wird von selbst entfernt |
| Ein Cloudflare-Tunnel-Token (verwalteter Tunnel) | config., Key cloudflared, oder die Umgebungsvariable COPILOT_ |
| 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_). 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/: 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: ~/. oder der Ordner in CLAUDE_. 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: ~/. |
| 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_ 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- |
Rotiert bei 5 MB und behält drei ältere Dateien, siehe Logs |
worker-<session>. |
Wird beim Start über 10 MB zu .. 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/ 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 (~/. oder CLAUDE_). Das Löschen einer Konversation löscht ihren Verlauf. Siehe Claude. Neu in 0.9.17 DeepSeek-Chats halten ihre stattdessen im Datenordner: data/ oben |
| Session-Zustand von GitHub Copilot | ~/. oder der Ordner in COPILOT_ |
| Bilder aus OpenAI-Image-Chats | Im Session-State-Ordner von Copilot, in <session>/ unter der Konversation. Siehe OpenAI |
| Cursor-Agent-Speicher | Neu in 0.9.14 Ein Ordner pro Konversation, in cursor- im Datenordner des Relays (~/., %APPDATA%\) oder in dem Ordner, den CURSOR_ 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 | ~/. |
| Der Copilot-Extension-Wrapper | ~/., geschrieben von oar copilot oder oar copilot --install-. 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/ 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- 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.