Der Befehl oar
oar ist die Befehlszeile des Relay-Rechners. Es schreibt die Config, startet
und stoppt das Relay, gibt die Adresse aus, die du im Browser öffnest,
installiert den Dienst für den Start bei der Anmeldung, aktualisiert OAR,
prüft die Installation und entfernt sie wieder. Es arbeitet mit der
Installation, aus der es gestartet wurde, auf dem Rechner, auf dem es läuft;
mit einem Relay auf einem anderen Rechner spricht es nicht.
Führ oar ohne etwas dahinter aus, um ein Menü zu bekommen, oder oar help
für den Hilfetext. Wie du OAR installierst, steht unter
Installation, der erste Start unter
Erster Start.
Die Befehle #
| Befehl | Was er tut |
|---|---|
oar |
Ein Menü in einem Terminal; anderswo der Status und der Hilfetext |
oar setup |
Schreibt die Config: Auth-Token, Zugriff (dieser Rechner oder LAN) und Port; unter Windows auch den Autostart-Modus |
oar start |
Startet das Relay im Hintergrund |
oar stop |
Stoppt das Relay, sobald kein Turn läuft |
oar restart |
Startet ein laufendes Relay neu oder startet ein gestopptes |
oar status |
Sagt, ob das Relay läuft; Exit-Code 0 oder 3 |
oar url |
Gibt die Relay-Adresse mit dem Token aus und einen QR-Code, wo ein Handy sie nutzen kann |
oar update |
Installiert das neueste Release oder eines, das du nennst, und startet das Relay neu |
oar service |
Installiert, entfernt oder meldet den Dienst für den Start bei der Anmeldung |
oar autostart |
Neu in 0.9.15 Stellt um, wie das Relay von selbst startet: bei der Anmeldung, beim Hochfahren oder gar nicht |
oar uninstall |
Neu in 0.9.15 Entfernt die Autostart-Einträge und das Paket; die Daten bleiben, außer du gibst --purge an |
oar copilot |
Startet das Relay und eine GitHub-Copilot-Session im Terminal |
oar doctor |
Gibt die Installation, die Config und die Provider-CLIs aus, die es findet |
oar help |
Gibt den Hilfetext aus |
oar version |
Gibt die Version aus |
Die meisten Meldungen beginnen mit [oar]. Fehler gehen auf die
Standardfehlerausgabe, normale Ausgaben auf die Standardausgabe.
Wie die Befehlszeile gelesen wird #
- Der Befehl ist das erste Wort, das keine Option ist. Optionen dürfen davor
stehen:
oar --port 3400 setupistoar setup --port 3400. --port,--migrate-,from --tound--autostartnehmen einen Wert, als nächstes Wort oder als--port=. Ohne Wert gibt3400 oar--port needs a value.aus und endet mit 2. Füroar update --toundoar copilot --migrate-nutze die Form mit Leerzeichen; siehe die Hinweise bei diesen Befehlen.from --helpoder-hvor einem--gibt den Hilfetext aus und endet mit 0, egal was sonst in der Zeile steht.--setup,--start,--stopund--statusnennen einen Befehl, wenn kein anderer angegeben ist:oar --setup --startistoar setup --start.--install-,extension --no-,install- extension --migrate-oder einfrom ---Teil ohne Befehl bedeutenoar copilot.--versionoder-vohne Befehl geben die Version aus.- Jeder Befehl akzeptiert nur seine eigenen Optionen und gibt nach einer dieser Meldungen (auf die Standardfehlerausgabe) den Hilfetext aus, Exit-Code 2:
[oar] Unknown command: backup
[oar] Unknown option: --verbose
[oar] Unknown option for oar start: --port
[oar] Unexpected argument: extra
[oar] --lan needs a command.
[oar] oar start takes no "--" part.
Nur oar copilot nimmt einen ---Teil.
Das Menü: oar #
In einem Terminal zeigt oar die Version, ob das Relay läuft, die URL (ohne
das Token), den Port, den Zugriff, den Zustand des Dienstes und jede Warnung,
dann diese Einträge:
| Taste | Eintrag | Führt aus |
|---|---|---|
1 |
Start (Starten) | oar start |
2 |
Stop (Stoppen) | oar stop |
3 |
Restart (Neu starten) | oar restart |
4 |
Show URL and QR code (URL und QR-Code zeigen) | oar url |
5 |
Settings (Einstellungen) | oar setup, mit seinen Fragen |
6 |
Install or remove the service (Dienst installieren oder entfernen) | oar service install, wenn keiner installiert ist; oar service remove nach Remove the service? [y/, wenn einer installiert ist; oar service status, wo kein Dienst verfügbar ist |
7 |
Update (Aktualisieren) | oar update. Nach einem erfolgreichen Update schließt sich das Menü, weil seine eigenen Dateien ersetzt wurden |
8 |
Doctor | oar doctor |
9 |
Copilot session (Copilot-Session) | oar copilot |
q |
Quit (Beenden) |
Bewege dich mit den Pfeiltasten (oder j und k) und drück Enter, oder drück
eine Ziffer oder q. Nachdem ein Eintrag gelaufen ist, führt jede Taste
zurück ins Menü. Strg+C in einer Frage führt zurück ins Menü; im Menü beendet
es oar mit Exit-Code 130. Die Umgebungsvariable NO_ schaltet Farben
ab. Ein Terminal, das keine einzelnen Tasten lesen kann, bekommt dieselbe
Liste mit einer Eingabeaufforderung Choose (1-.
Ist die Standardeingabe oder -ausgabe kein Terminal, gibt oar aus, was
oar status ausgibt, eine Leerzeile und den Hilfetext, und endet
mit 0, egal wie der Status ist.
oar setup #
oar setup [--port <port>] [--lan | --local] [--new-token] [--autostart signin|boot|off] [--defaults] [--start] [--migrate-from <dir>]
Schreibt config. in den Zustandsordner von OAR (Wo oar seine Dateien ablegt;
die Keys stehen unter config.json). Führ es nach
der Installation aus und immer dann, wenn du einen anderen Port, Zugriff oder
ein anderes Token willst. Einstellungen, die der Befehl nicht anfasst, bleiben
in einer bestehenden Config, wie sie sind.
In einem Terminal und wenn du keine der Optionen --port, --lan, --local,
--new-, --autostart oder --defaults angibst, stellt es drei Fragen
und zeigt den aktuellen Wert in eckigen Klammern; Enter behält ihn.
Neu in 0.9.15 Unter Windows fragt eine vierte, wie das Relay startet, mit dem
geltenden Modus als Vorgabe; sie entfällt, wenn der Start-Task nicht gelesen
werden kann. Erster Start
geht sie durch.
New auth token? It signs every device out. [y/N]
Access: 1 = this machine only, 2 = LAN (other devices on your network) [1]:
Port [3333]:
Autostart: 1 = at sign-in, 2 = at boot, before anyone signs in (one administrator prompt), 3 = off [3]:
| Option | Wert | Standard | Wirkung |
|---|---|---|---|
--port |
Ziffern, 1 bis 65535 | der Port der Config; bei einer neuen Config der erste freie Port ab 3333 aufwärts (von 20 probierten, sonst 3333) | Setzt den Port, ohne zu fragen. Ein Port, den etwas anderes belegt, wird abgelehnt |
--lan |
keiner | der Zugriff der Config | Zugriff für andere Geräte in deinem Netzwerk (localhost). Nicht zusammen mit --local |
--local |
keiner | der Zugriff der Config; bei einer neuen Config this machine only (nur dieser Rechner) | Zugriff nur für diesen Rechner |
--new- |
keiner | Token behalten; eine neue Config bekommt ein zufälliges | Schreibt ein neues Auth-Token. Es meldet jedes Gerät ab |
--autostart |
signin, boot oder off |
der geltende Modus | Neu in 0.9.15 Stellt den Autostart um, ohne zu fragen, wie es oar autostart tut: unter Windows den Anmelde-Eintrag oder den Start-Task (eine Administrator-Abfrage), unter Linux den Dienst. Nur globale Installationen: Ein Git-Checkout wird abgelehnt, und nichts wird geschrieben |
--defaults |
keiner | aus | Fragt nichts, auch nicht in einem Terminal, und startet ein laufendes Relay ohne Nachfrage neu |
--start |
keiner | aus | Nur globale Installationen (der Installer nutzt es). Wo es eine systemd-Benutzersitzung gibt, schreibt es auch die Unit des Dienstes; dann startet es das Relay, über den Dienst, wenn es einen gibt. Wird in einem Git-Checkout ignoriert |
--migrate- |
ein Ordner | keiner | Kopiert den Zustand eines Git-Checkouts aus der Zeit vor der Umbenennung des Projekts (<folder>/) in den Zustandsordner von OAR. Die Quelle wird nie verändert. Ein Relay, das noch daraus läuft, blockiert das Kopieren. Nur globale Installationen. Es läuft jedes Mal, wenn du einen Ordner nennst: Ein schon übernommener Ordner, dessen Datenbank noch da ist, sagt nur <state folder> is already migrated from <folder>; nothing to do.; ein Ordner ohne etwas zu übernehmen ist ein Fehler (Nothing to migrate from <folder>: <reason>.); ein Zustandsordner, dessen Datenbank schon Konversationen hat, lehnt es ab, und nichts wird überschrieben. Siehe Dateien und Ordner |
Ein Port ist frei, wenn nichts auf ihm antwortet und er auf diesem Rechner
gebunden werden kann. Der Port des eigenen laufenden Relays dieser
Installation zählt als frei. In WSL wird auch ein Port abgelehnt, den Windows
belegt. Bei einer neuen Config, deren Port 3333 belegt ist, sagt das Setup
Port 3333 is in use — using <port>. Eine globale Installation übernimmt
außerdem einmal den Zustand aus dem früheren verwalteten Config-Ordner, ohne
die Option.
Was es tut:
- Migriert alten Zustand (globale Installationen): den früheren verwalteten
Config-Ordner einmal von selbst oder den Ordner, den
--migrate-nennt.from [oar] Migrated <folder or "earlier relay state"> into <state folder> (<n> items, sources untouched; receipt in backups/MIGRATION. md). - Schreibt
config.(Rechte 600 außerhalb von Windows) und gibtjson [oar] Wrote <path>aus. Eine neue Config enthältauth,Token port,localhost,Only poll(3000),Interval Ms processing(600000) undTimeout Ms conversation(Session Mode isolated). - Neu in 0.9.15 Stellt den Autostart um, wie
--autostartoder die Frage es sagt (globale Installationen). Es führtoar autostartmit diesem Modus aus und gibt dessen Zeilen aus. - Läuft das Relay und haben sich Token, Port oder Zugriff geändert, startet es
das Relay neu und wartet, bis es mit den neuen Einstellungen antwortet. In
einem Terminal fragt es
The relay is running. Restart it now to apply the change? [Y/; bei Nein gibt esn] The running relay keeps its earlier settings until it restarts: oar restartaus. Ohne Terminal startet es ohne Nachfrage neu. - Gibt die Relay-URL mit dem Token aus und einen QR-Code, wenn ein Handy die
Adresse erreichen kann (LAN-Zugriff mit einer Netzwerkadresse, die nicht
WSL-intern ist). Ist der Autostart-Schritt nicht durchgegangen, sagt es dann
The config is written; the autostart step did not go through (see above).und endet mit 1. - Läuft das Relay nicht, sagt es, wie du es startest:
oar start(mit einem Hinweis aufoar service install, wenn kein Dienst existiert); in einem Git-Checkoutnpm start.
| Exit-Code | Wann |
|---|---|
| 0 | Die Config ist geschrieben, und der verlangte Neustart oder Start hat funktioniert |
| 1 | Der Port ist belegt; das Relay ist nicht neu gestartet oder nicht hochgekommen; die Migration wird abgelehnt oder schlägt fehl (ein Relay läuft aus der Quelle oder auf dem Zustandsordner, eine Datenbank mit Konversationen ist schon da, aus dem genannten Ordner gibt es nichts zu migrieren); der Autostart-Schritt ist nicht durchgegangen; --autostart in einem Git-Checkout |
| 2 | --port ist keine Zahl von 1 bis 65535 (--port expects a number from 1 to 65535.), --autostart ist nicht signin, boot oder off (--autostart expects signin, boot or off.), oder --lan und --local sind beide angegeben |
| 130 | Strg+C in einer Frage |
oar start #
oar start
Startet das Relay im Hintergrund und gibt die Relay-URL aus (mit dem Token,
ohne QR-Code). Es hat keine Optionen. Es braucht eine Config: Ohne eine gibt es
No config yet — run: oar setup aus. Ein Git-Checkout wird abgelehnt (This is a git checkout — start the relay with: npm start). Beides endet mit 1.
- Ein Relay, das schon antwortet, bleibt unberührt:
The relay is already running. It keeps the version and settings it started with until you restart it: oar restart. - Läuft das Relay mit Einstellungen von vor einem
oar setup, sagtoar startdas und verweist aufoar restart. - Ist ein systemd-Benutzerdienst installiert (Linux), wird der Dienst aktiviert
und gestartet. Sonst startet das Relay als Hintergrundprozess, der das
Terminal überlebt und
server.undlog server-in den Log-Ordner schreibt. Führ nach einem Neustart des Rechnerserr. log oar starterneut aus oder richte den Start bei der Anmeldung ein. - Es wartet bis zu 20 Sekunden, bis das Relay antwortet, und hört früher auf
zu warten, wenn der Prozess, den es gestartet hat, endet. Dann:
The relay did not come up — see <log folder>/(über den Dienst:server- err. log see journalctl --user -u oar). Neu in 0.9.14 Hält ein lebendes Relay den Lock, nennt eine zweite Zeile den Lock und sagt, was zu tun ist:The lock <path> is held by relay process <pid> (started <time>): oar stop, or end process <pid>.Nennt der Lock einen Prozess, von dem sich nicht sagen lässt, ob er ein Relay ist:The lock <path> names process <pid>, which cannot be told to be a relay: if no relay is running, end process <pid> or delete the lock. - Neu in 0.9.14 Ein Relay, das noch die Datenbank übernimmt, auf der es bisher
lief (der erste Start nach dem Update auf 0.9.14), gilt nicht als
fehlgeschlagen:
oar startsagtThe relay (process <pid>) is bringing over the database it ran on until now (…) and is still running; it answers once that is done.und nennt sein Log. - Auf einen Lock, dessen Relay noch startet, wird bis zu 5 Sekunden gewartet.
Der Lock einer früheren Version, deren Relay nicht antwortet, wird entfernt
(
Removing a leftover relay lock); Neu in 0.9.14 einen Lock, den diese Version geschrieben hat, überlässt es dem Relay, das einen veralteten selbst erkennt (siehe Ein Relay pro Datenordner). - Ein Port, den ein anderes Programm belegt, oder ein Relay mit einem anderen
Token:
Port <port> is in use by another program, or by a relay with another token.und ein Hinweis, mitoar setup --port <port>einen anderen Port zu wählen. - In WSL warnt es, wenn Windows den Port belegt (WSL).
Exit-Code 0: Das Relay läuft oder übernimmt noch seine Datenbank. Exit-Code 1: keine Config, ein Git-Checkout, der Port ist belegt oder das Relay ist nicht hochgekommen.
oar stop #
oar stop
Keine Optionen; braucht eine Config (Exit 1 ohne eine).
- Läuft der systemd-Dienst, führt es sofort
systemctl --user stop oaraus und sagtThe relay service is stopped. It starts again at the next boot (without lingering: at the next login); to take it out: oar service remove. - Jedes andere Relay wird über seine eigene Schnittstelle gebeten zu stoppen
und stoppt, sobald kein Turn läuft. Laufen Turns, wird
Waiting for the relay's running turns to finish …ausgegeben.oar stopwartet bis zu 30 Sekunden und gibt dannThe relay is stopped.oderThe relay is still busy; it stops by itself when its running turns finish.aus. Beides endet mit 0. - Kein Relay läuft:
The relay is not running., Exit 0. - Port von etwas anderem belegt:
Port <port> is in use by another program, or by a relay with another token., Exit 1. Nennt die Lock-Datei einen lebenden Prozess dieser Installation, gibt eine zweite Zeile seine Prozess-ID an und sagt dir, ihn aus seiner Weboberfläche neu zu starten, mit ⋯ → Restart web relay (⋯ → Web-Relay neu starten), oder diesen Prozess zu beenden. The relay did not accept the stop request.oder ein fehlgeschlagenessystemctl: Exit 1.
Unter Windows und dort, wo der Dienst installiert ist, aber nicht läuft, wird das Relay über seine eigene Schnittstelle gestoppt. Was ein Stopp mit laufenden Turns macht, steht unter Das Relay neu starten.
oar restart #
oar restart
Startet ein laufendes Relay neu, damit es eine neue Version lädt und die Config
erneut liest, und gibt dann die Relay-URL aus. Ein gestopptes Relay wird
stattdessen gestartet, wie bei oar start. Keine Optionen; braucht
eine Config.
- Läuft der systemd-Dienst, startet systemd ihn sofort neu; ein laufender Turn endet (Das Relay neu starten).
- Jedes andere Relay wird gebeten neu zu starten und wartet auf seine
laufenden Turns. Der Befehl wartet bis zu 60 Sekunden, bis das Relay auf dem
Port der Config mit dem Token der Config antwortet, und gibt dann
The relay restarted.aus. Laufen noch Turns:The relay is still busy; it restarts by itself when its running turns finish., Exit 0. Neu in 0.9.13 Der Neustart wird eingereiht wie bei 🌄 Restart web relay: Die Browser zeigen sein Banner, und nach Ask after a queued relay restart has waited (Nachfragen, nachdem ein eingereihter Relay-Neustart gewartet hat) fragt es dort, ob jetzt neu gestartet, weiter gewartet oder abgebrochen werden soll (Der Neustart wartet). - Exit 1 mit
The relay came back on its earlier port and token: it was started with fixed ones (oar copilot). End that session, then run: oar start: Ein Relay, dasoar copilotgestartet hat, behält den Port und das Token, die es bekommen hat. - Exit 1 mit
The relay did not accept the restart request. Restart it from the web UI (⋯ → Restart web relay).(Restart web relay),systemctl --user restart oar failedoderThe relay did not come back — see <log folder>/(über den Dienst:server- err. log see journalctl --user -u oar). - Ein Port, den etwas anderes belegt: die Meldung von
oar stop, Exit 1.
oar status #
oar status
Gibt den Zustand des Relays aus und endet mit einem Code, den ein Skript prüfen kann.
[oar] OAR 0.9.19
[oar] The relay is running on port 3333 (this machine only): http://localhost:3333/
[oar] Service: installed, running
| Zeile | Bedeutung |
|---|---|
Not set up yet — run: oar setup |
Keine Config; nur die Versionszeile steht davor |
The relay is running on port <port> (<access>): <url> |
Das Relay antwortet mit dem Token der Config. Access ist LAN access (LAN-Zugriff) oder this machine only. Die URL hat kein Token; oar url gibt es aus |
The relay is stopped (port <port>, <access>). Start it with: oar start |
Nichts antwortet auf dem Port |
Port <port> is in use by another program, or by a relay with another token. |
Etwas antwortet, aber es ist nicht dieses Relay mit diesem Token |
Service: <state> |
installed, running (installiert, läuft), installed (installiert) oder not installed (nicht installiert). Entfällt, wo es nichts zu melden gibt: bei einem Git-Checkout, unter macOS, unter einem Linux ohne systemd-Benutzersitzung |
Tunnel: <state> |
Nur wenn der eingebaute Cloudflare-Tunnel in der Config an ist. Für ein laufendes Relay: running, not connected, not connected (<reason>) oder off: <reason>. Sonst managed (cloudflared: <path>) oder managed, cannot start: <reason> |
| eine Warnung | The relay runs with its earlier settings; restart it to apply the new ones. nach einem oar setup, das Port oder Token geändert hat; in WSL, dass Windows den Port belegt |
Exit-Code 0: Das Relay läuft. Exit-Code 3: Es ist gestoppt, der Port ist von etwas anderem belegt oder es gibt keine Config.
oar url #
oar url
Gibt die Adresse aus, die du im Browser öffnest, mit dem Auth-Token, so wie
oar setup endet. Keine Optionen; braucht eine Config (Exit 1 ohne eine).
Sonst Exit 0.
[oar] Relay URL: http://localhost:3333/?token=...
[oar] This machine only. For a phone, switch on LAN access (oar setup --lan) or use a tunnel (README: Remote access).
- Mit LAN-Zugriff ist die Adresse die erste nicht interne IPv4-Adresse des Rechners, und ein QR-Code dafür folgt auf die erste Zeile.
- Mit LAN-Zugriff, aber ohne Netzwerkadresse:
LAN access is on, but this machine has no network address.Im Standard-Netzwerkmodus (NAT) von WSL ist die Adresse WSL-intern; die Ausgabe sagt das und nennt einen Tunnel oder den Mirrored-Netzwerkmodus als Auswege. In diesen Fällen kein QR-Code. - Meldet das laufende Relay eine Tunnel-Adresse, folgt eine Zeile
Tunnel URL:mit angehängtem Token und ein QR-Code dafür. - Eine letzte Zeile sagt
The relay is not running. Start it with: oar startoder, nach einer geänderten Einstellung, dass das Relay bis zuoar restartmit seinen früheren Einstellungen läuft.
oar update #
oar update [--beta] [--to <version>]
Installiert ein neueres Release von OAR aus npm und bittet ein laufendes Relay,
neu zu starten. Es ist das Gegenstück im Terminal zum Button Update
(Aktualisieren) in Settings → General (Einstellungen → Allgemein) (OAR aktualisieren). Ein
Git-Checkout gibt This install runs from a git checkout — update with git pull, then restart the relay. aus und endet mit 1.
| Option | Wert | Standard | Wirkung |
|---|---|---|---|
--beta |
keiner | aus | Nimmt die Version des Beta-Kanals aus dem Update-Manifest (Kanäle). Ohne die Option folgt eine Beta-Version dem Beta-Kanal und jede andere dem stabilen Kanal. Ein Kanal ohne Version fällt auf den stabilen zurück |
--to |
X., optional mit Vorabversion (X.) |
die neueste des Kanals | Installiert genau diese Version direkt aus npm, ohne das Manifest. Ältere Versionen gehen auch; es vergleicht nicht mit der laufenden |
Schreib --to mit Leerzeichen
--to 0. funktioniert. --to= besteht die Prüfung der Befehlszeile,
wird aber ignoriert: oar update installiert dann das neueste Release des
Kanals.
Was es tut:
- Ohne
--toholt eshttps://(5 Sekunden), bei jedem Lauf, egal ob die automatische Prüfung in der Weboberfläche an ist.oar. sh/ latest. json - Ist die Version des Kanals nicht neuer als die laufende:
Already up to date (<version>)., Exit 0. - Gibt
Updating @oar-aus und führtsh/ oar <old> -> <new> ... npm install -g @oar-aus, mit dem Flag, das die Installationsskripte von OAR und seinen nativen Abhängigkeiten laufen lässt. Außerhalb von Windows nutzt es das npm neben dem Node.js, dassh/ oar@<version> oarausführt, und installiert in das Präfix, in dem das Paket liegt; unter Windowsnpm.. npm gibt seine eigene Ausgabe aus; danncmd Installed @oar-sh/ oar@<version>. - Läuft ein Relay, bittet es dieses, neu zu starten, sobald die Queue untätig
ist (
Relay restart requested — it restarts once the queue is idle.); ohne RelayNo running relay detected — the update loads on the next start.Eine Ablehnung gibtCould not request a relay restart; restart it manually to load the update.aus.
Exit-Code 0: installiert oder schon aktuell. Exit-Code 1: ein Git-Checkout;
--to ist keine Version wie 0.; das Manifest kann nicht geholt werden
(Could not fetch <url>.), hat eine andere schema als 1 oder enthält keine
nutzbare Version; npm install ist fehlgeschlagen (the running install is unchanged).
| Variable | Wirkung |
|---|---|
OAR_ |
Blockiert die Anfrage nach dem Manifest. oar update endet dann mit 1 und verweist auf oar update --to X., das weiter funktioniert |
OAR_ |
Liest das Manifest stattdessen von dieser URL |
oar service #
oar service [install | remove | status]
Startet das Relay bei jeder Anmeldung. oar service allein ist
oar service status. Ein Git-Checkout wird abgelehnt (Exit 1). Die Seite
Das Relay automatisch starten erklärt den
Dienst aus Sicht des Besitzers.
Linux #
Eine systemd-Benutzer-Unit, oar., in ~/.. Sie
führt das Relay mit dem Config-, Daten- und Log-Ordner dieser Installation aus
und mit dem PATH deiner Shell plus ~/. und dem Ordner des
genutzten Node.js. systemd startet es 5 Sekunden nach einem Absturz neu.
| Wort | Was es tut |
|---|---|
install |
Braucht eine Config. Schreibt die Unit; führt loginctl enable- aus, damit das Relay ein Abmelden überlebt (schlägt das fehl, gibt es den Befehl aus, den du selbst ausführen kannst); lädt systemd neu; stoppt ein Relay, das du von Hand gestartet hast, damit der Dienst den Port übernehmen kann; aktiviert und startet den Dienst. Stoppt dieses Relay nicht, wird der Dienst aktiviert und übernimmt beim nächsten Hochfahren (ohne Lingering bei der nächsten Anmeldung) oder sobald dieses Relay gestoppt ist und du oar start ausführst |
remove |
Deaktiviert und stoppt den Dienst, löscht die Unit, lädt systemd neu. The service is not installed., wenn es keinen gibt |
status |
Service: installed, running, installed, not running oder not installed |
Ohne systemd-Benutzersitzung sagt der Befehl das und endet mit 1. In WSL nennt
die Meldung zusätzlich, wie du systemd einschaltest: systemd= unter
[boot] in /, dann wsl --terminate <distro> aus Windows.
Windows #
Ein Eintrag in deinem Autostart-Ordner startet das Relay, wenn du dich anmeldest.
| Wort | Was es tut |
|---|---|
install |
Braucht eine Config. Schaltet den Start bei der Anmeldung ein; es startet das Relay nicht sofort (Start it now with: oar start) |
remove |
Schaltet ihn ab: Autostart is off. A running relay keeps running; stop it with: oar stop |
status |
Autostart: on, at sign-, on, at boot (scheduled task) oder off |
Ein Start beim Hochfahren über eine geplante Aufgabe wird mit
oar autostart boot eingerichtet oder in der Weboberfläche unter
Settings → General → Autostart (Windows) (Einstellungen → Allgemein → Autostart, Windows) (Windows). Solange diese Aufgabe bereit ist, lehnen install und remove
ab (Exit 1) mit The relay starts at boot through a scheduled task. Change that with oar autostart signin|off, or in the web UI: Settings → General → Autostart (Windows).; status meldet sie.
macOS #
The service is not supported on mac,
Exit 1 für jedes Wort.
Exit-Code 0: erledigt oder status. Exit-Code 1: ein Git-Checkout, macOS,
keine systemd-Benutzersitzung, keine Config bei install, ein geplanter
Start-Task unter Windows oder das Relay ist nach install nicht
hochgekommen. Exit-Code 2: ein anderes Wort als die drei oder ein zweites Wort.
oar autostart Neu in 0.9.15 #
oar autostart [signin | boot | off | status] [--replace]
Stellt um, wie das Relay dieser Installation von selbst startet.
oar autostart allein ist oar autostart status. Ein Git-Checkout wird
abgelehnt (This is a git checkout — autostart is for global installs., Exit 1). signin und boot brauchen eine
Config; off und status nicht. Autostart
erklärt die Modi aus Sicht des Besitzers.
Windows #
| Wort | Was es tut |
|---|---|
signin |
Schreibt den Eintrag in deinen Autostart-Ordner und entfernt den Start-Task, falls es einen gibt (eine Administrator-Abfrage). Gibt The relay starts when you sign in to Windows. aus. Es startet das Relay nicht sofort |
boot |
Registriert die geplante Aufgabe oar- und ihren Starter (eine Administrator-Abfrage: Confirm the administrator prompt to register the boot task …) und entfernt den Anmelde-Eintrag. Gibt The relay starts at boot, before anyone signs in (scheduled task \ aus. Ist es schon im Boot-Modus, ändert es nichts und fragt nichts ab; fehlt der erzeugte Starter oder stammt er aus einer früheren Version, registriert es die Aufgabe erneut, mit einer Administrator-Abfrage |
off |
Entfernt den Start-Task (eine Administrator-Abfrage) und den Anmelde-Eintrag. Autostart is off. A running relay keeps running; stop it with: oar stop |
status |
Der Modus und jeder Eintrag, jeweils (generated by OAR) oder (hand-; siehe Status |
Die Administrator-Abfrage erscheint auf dem Desktop des PCs selbst, und es
wird bis zu 2 Minuten auf sie gewartet. Nur der Aufruf von schtasks läuft
mit erhöhten Rechten. Eine abgelehnte Abfrage ändert nichts (Nothing changed: the administrator prompt was declined.).
Nach einem Wechsel mit --replace wird jede Kopie genannt: Kept a copy of <entry> as <copy>. Ein Wechsel, der nach der Abfrage fehlschlägt, stellt die Tasks
wieder her, die er gelöscht hat, und seine Fehlerzeile endet mit Copies kept: ….
Nur Einträge, die OAR erzeugt hat, werden gelöscht oder überschrieben. Solange ein von Hand angelegter oder bearbeiteter Eintrag neben dem neuen Modus stehen bliebe oder durch ihn ersetzt würde, ändert sich nichts, und der Eintrag wird genannt; siehe Einträge, die OAR nicht angelegt hat.
| Option | Wirkung |
|---|---|
--replace |
Ersetzt selbst angelegte Einträge durch die von OAR. Vorher behält es von jedem eine Kopie, als <name>. im OAR-Ordner: die eines Starters daneben, die exportierte XML einer Aufgabe (<task>.), die eines Autostart-Eintrags. Ohne --replace wird ein selbst angelegter Eintrag nie verändert |
Ein Start-Task, der nicht gelesen werden kann (z. B. Access is denied),
stoppt jeden Wechsel, auch mit --replace: Nothing changed: the boot task could not be read (<reason>).
Linux und macOS #
Unter Linux bilden die Wörter auf oar service ab: signin und
boot führen oar service install aus, off führt oar service remove aus,
status führt oar service status aus. Mit Lingering startet der Dienst beim
Hochfahren. Unter macOS:
Autostart is not supported on mac,
Exit 1.
Exit-Code 0: erledigt oder status. Exit-Code 1: ein Git-Checkout, macOS,
keine Config bei signin oder boot, ein selbst angelegter Eintrag im Weg,
eine abgelehnte oder fehlgeschlagene Administrator-Abfrage, ein Start-Task,
der nicht gelesen werden kann, oder ein Anmelde-Eintrag, der nicht geändert
werden kann; unter Linux die von oar service. Exit-Code 2: ein anderes Wort,
ein zweites Wort oder eine andere Option.
oar uninstall Neu in 0.9.15 #
oar uninstall [--purge]
Nimmt OAR vom Rechner und behält deine Daten. Ein Git-Checkout wird abgelehnt
(This is a git checkout — there is no global package to uninstall., Exit 1).
Mit --purge stellt es zuerst seine Fragen (unten); dann, der Reihe nach:
- Stoppt das Relay, wie
oar stopes tut: Es wartet auf laufende Turns. Ein Relay, das danach noch beschäftigt ist, beendet den Befehl (The relay finishes its running turns first; it stops by itself after them.), und sonst wird nichts geändert. Ein Relay, das seinen Lock hält, ohne zu antworten, während es eine Datenbank übernimmt oder startet, beendet ihn auch:The relay (process <pid>) is bringing over its database and does not answer yet; once oar status says it runs, run oar uninstall again.oderA relay (process <pid>) holds <lock> without answering; stop it (oar stop, or end process <pid>). - Entfernt die Autostart-Einträge, die OAR für diese Installation erzeugt hat:
unter Windows den Start-Task (eine Administrator-Abfrage) mit seinem
Starter und seiner Task-XML sowie den Anmelde-Eintrag; unter Linux die
systemd-Unit, wenn es die ist, die
oar service installgeschrieben hat. Dann den Wrapper der Copilot-Extension in~/., den OAR für diese Installation geschrieben hat. Ein Eintrag oder Wrapper, der von Hand angelegt oder geändert wurde oder zu einer anderen Installation gehört, bleibt und wird genannt (copilot/ extensions/ web- relay/ Left as it is: <path> (hand-).made) - Mit
--purgelöscht es die Daten (unten). - Startet
npm uninstall -g @oar-im Hintergrund, mit dem npm neben dem Node.js, dassh/ oar oarausführt, und in dem Präfix, in dem das Paket liegt (unter Windowsnpm.). npm kann ein Paket nicht entfernen, während es läuft, daher wartet das, biscmd oarbeendet ist (bis zu 2 Minuten), und schreibt dann das Ergebnis von npm inoar-: im OAR-Ordneruninstall. log logsoder mit--purgeim Temp-Ordner.
Es endet mit dem, was es getan hat:
[oar] Done: stopped the relay.
[oar] Done: removed C:\Users\dev\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\oar-web-relay.cmd.
[oar] Your data stays in C:\Users\dev\AppData\Roaming\oar (config, database, uploads, logs). A later install picks it up again; delete the folder yourself if you no longer need it.
[oar] npm removes @oar-sh/oar once this command has ended (log: C:\Users\dev\AppData\Roaming\oar\logs\oar-uninstall.log).
Liegt der Datenordner außerhalb des Zustandsordners, nennt die Zeile beide.
Session-Worker laufen weiter, wenn das Relay stoppt, und npm kann die Dateien
nicht entfernen, die ein laufendes Programm hält. Laufen noch Programme aus dem
Paket, nennt der Befehl ihre Prozess-IDs, und npm lässt ihre Dateien in einem
versteckten Ordner . neben dem früheren Ort des Pakets zurück; das Log
nennt diesen Ordner. Lösch ihn, sobald sie beendet sind, spätestens nach einem
Neustart des Rechners.
Schlägt ein Schritt fehl, stoppt der Befehl mit dem Grund (z. B. Uninstall stopped: <reason>. oder The relay did not stop.), dann Done: … und
Not done: the autostart entries; the package. (mit --purge auch the data) und Run oar uninstall again once that is sorted out. (mit
--purge: oar uninstall --purge).
| Option | Wirkung |
|---|---|
--purge |
Löscht außerdem den Zustandsordner endgültig: die Config, die Datenbank mit jeder Konversation, die Uploads und die Logs. Es sagt zuerst --purge deletes <folder> for good: … und bittet dich dann, delete einzutippen (Type "delete" to confirm: ); alles andere beendet es mit Not confirmed. Nothing was changed. Strg+C oder keine lesbare Eingabe beendet es mit Exit-Code 130, und nichts wurde geändert |
Mit --purge bekommen manche Ordner nach dem delete eine eigene Frage,
[y/: der Zustandsordner, wenn er in einem Git-Checkout liegt,
rescued- (Daten, die eine frühere Version in ihrem Paket
abgelegt hat), und ein Datenordner außerhalb des Zustandsordners (data in
der Config oder COPILOT_). Egal was du eingibst, --purge
löscht nichts in einem Zustandsordner, der die Wurzel eines Laufwerks oder
Dateisystems ist, dein Home-Ordner oder ein Ordner darüber, ein Systemordner
oder ein Ordner darüber, ein Ordner im Windows-Ordner, ein Git-Checkout oder
ein Ordner ohne OAR-Config oder -Datenbank darin: --purge deletes nothing in <folder> (<reason>). Nothing was changed.
Ein zusätzlicher Ordner dieser Art wird nicht angeboten (Not deleted, and not offered: …).
Exit-Code 0: Das Entfernen des Pakets ist gestartet. Exit-Code 1: ein
Git-Checkout; ein Zustandsordner, den --purge ablehnt; delete nicht
eingetippt; ein Relay, das nicht gestoppt ist oder seinen Lock hält, ohne zu
antworten; ein Autostart-Eintrag, der nicht entfernt werden konnte (eine
abgelehnte Abfrage, ein Start-Task, der nicht gelesen werden kann); ein
Ordner, der nicht gelöscht werden konnte; npm konnte nicht gestartet werden
(remove it yourself: npm uninstall -g @oar-). Exit-Code 2: eine andere Option. Exit-Code 130:
Strg+C bei einer Frage.
oar copilot #
oar copilot [--port <port>] [--install-extension] [--no-install-extension] [--migrate-from <dir>] [-- <gh copilot args>]
Startet das Relay, wenn keines antwortet, und führt dann die GitHub Copilot
CLI (gh copilot) in deinem Terminal aus. Ein Relay, das es gestartet hat,
stoppt, wenn die Session endet. GitHub Copilot
erklärt, wann du es nutzt. Dieselben Optionen ohne das Wort copilot führen
es auch aus:
oar -- <args>, oar --install-, oar --port 3400 --no-.
| Option | Wert | Standard | Wirkung |
|---|---|---|---|
--port |
1 bis 65535 | der Port der Config, sonst 3333 | Findet oder startet das Relay für diesen Lauf auf diesem Port, ohne die Config zu ändern; eine Config, die dieser Befehl anlegt, speichert ihn. Ein Relay, das dort schon läuft, wird genutzt. Ein Wert, der keine Portnummer ist, wird ohne Meldung ignoriert |
--install- |
keiner | aus | Schreibt oder erneuert den benutzerweiten Extension-Wrapper in ~/. (COPILOT_ verschiebt ~/.) und endet. Braucht kein gh |
--no- |
keiner | aus | Überspringt den Wrapper für diesen Lauf. Ohne die Option schreibt oder erneuert jeder Lauf ihn |
--migrate- |
ein Ordner | keiner | Wie bei oar setup. Schreib es mit Leerzeichen: --migrate- wird ignoriert |
-- |
der Rest der Zeile | keiner | Wird nach einem eigenen -- an gh copilot weitergegeben |
Der Reihe nach: prüft, dass gh existiert; erneuert den Wrapper (ein Fehler
wird gemeldet und stoppt nur --install-); migriert alten Zustand
(globale Installationen); sucht das Relay auf dem Port; startet es, wenn es
nicht antwortet, und wartet bis zu 20 Sekunden (Relay did not become ready at <url>);
dann führt es gh copilot im aktuellen Ordner mit angeschlossenem Terminal
aus. Ein Relay, das schon lief, läuft weiter. Eine fehlende Config wird mit
Zugriff nur für diesen Rechner angelegt.
--help oder -h vor dem -- gibt den allgemeinen Hilfetext aus, keinen für
copilot. Ein --help oder -h nach dem -- gibt die Hilfe von oar copilot aus und endet mit 0. --install- und
--no- nach dem -- liest oar ebenfalls. Keine davon
erreicht gh.
Das Relay einer Copilot-Session hat den Port und das Token, mit denen es
gestartet wurde. oar restart kann es nicht verschieben; siehe
oar restart.
| Exit-Code | Wann |
|---|---|
der Code von gh copilot |
Die Session lief (1, wenn gh durch ein Signal beendet wurde) |
| 0 | --install- hat den Wrapper geschrieben |
| 1 | gh ist nicht installiert (The Copilot session needs the Git); der Wrapper kann mit --install- nicht geschrieben werden; der Port ist belegt; das Relay wurde nicht bereit; das Relay übernimmt noch seine Datenbank; die Migration des Zustands ist fehlgeschlagen (eine blockierte wird gemeldet, Nothing was migrated; starting on the state root as it is., und die Session startet trotzdem) |
oar doctor #
oar doctor
Gibt aus, was oar findet. Keine Optionen, ändert nichts, endet mit 0.
OAR 0.9.19
node : v22.13.0 (linux)
mode : global install
state root : /home/dev/.oar
config : /home/dev/.oar/config.json
port : 3333 (localhostOnly: yes)
auth token : set
tunnel : disabled
database : /home/dev/.oar/data/copilot.db (12.4 MB)
provider CLIs :
gh (Copilot) : gh version 2.60.0 (2025-01-01)
claude : 2.1.0 (Claude Code)
grok : not found
cursor : bundled (@cursor/sdk)
| Zeile | Bedeutung |
|---|---|
mode |
global install oder git checkout |
state root |
Der Zustandsordner; (repo- in einem Git-Checkout |
config |
Der Pfad der Config, mit (missing — run: oar setup), wenn es keine gibt; port, auth token und tunnel entfallen dann |
port |
Der Port der Config; localhost ist nur dieser Rechner, no ist das Netzwerk |
auth token |
set oder MISSING |
tunnel |
disabled, managed (cloudflared: <path>) oder managed, cannot start: <reason> |
database |
Der Pfad und die Größe in MB oder (not created yet) |
provider CLIs |
gh (Copilot), claude und grok: die erste Zeile von <cli> --version (nach 60 Zeichen gekürzt), installed, wenn es keine gibt, not found, wenn der Befehl fehlschlägt oder fehlt (Limit 5 Sekunden). cursor ist immer bundled (@cursor/: Cursor braucht keine CLI |
warning |
In WSL, wenn Windows den Port des Relays belegt |
oar help und oar version #
oar help # also: oar --help, oar -h, oar <command> --help
oar version # also: oar --version, oar -v
help gibt den Hilfetext aus. version gibt die installierte Version aus,
z. B. 0.. Beide enden mit 0. --version und -v funktionieren nur ohne
Befehl.
Wo oar seine Dateien ablegt #
oar arbeitet mit einer Installation: dem Paket, aus dem es gestartet wurde,
und dessen Zustandsordner.
| Installation | Zustandsordner | Config | Daten | Logs |
|---|---|---|---|---|
| Global, macOS und Linux | ~/. |
config. darin |
data/ |
logs/ |
| Global, Windows | %APPDATA%\ |
config. darin |
data\ |
logs\ |
| Git-Checkout | server/ des Checkouts |
server/ |
server/ |
~/. (Windows: %LOCALAPPDATA%\); npm start schreibt nach server/ |
OAR_ verschiebt den Zustandsordner einer globalen Installation. Ein
Paketordner, der . enthält, gilt als Git-Checkout. Der Datenordner enthält
die Datenbank copilot., die Lock-Datei relay- und, zwischen
einem oar setup und dem Neustart, der es übernimmt, relay-.
Die Logs sind server. und server-. Andere Orte, an die oar
schreibt:
~/. (Linux-Dienst), oar- im
Windows-Autostart-Ordner, oar-, die XML des
Start-Tasks, oar-, oar- und
oar- in %APPDATA%\ sowie ~/..
Neu in 0.9.15 oar autostart --replace legt seine Kopien als <name>. im
Zustandsordner ab, und oar uninstall schreibt oar- in den
Log-Ordner (mit --purge in den Temp-Ordner).
Umgebungsvariablen #
| Variable | Genutzt von | Wirkung |
|---|---|---|
OAR_ |
allen | Der Zustandsordner einer globalen Installation |
OAR_ |
update |
1 blockiert die Anfrage nach dem Manifest; --to funktioniert weiter |
OAR_ |
update |
Eine andere URL für das Manifest |
COPILOT_ |
allen | Ein anderer Log-Ordner |
COPILOT_ |
nur copilot |
Eine Config-Datei, die genutzt wird, wenn sie existiert. Die anderen Befehle nutzen immer die eigene config. der Installation |
COPILOT_ |
copilot, start, restart, setup, uninstall, Windows-Autostart |
Wird dem Relay als Datenordner übergeben, wenn diese es starten, außer durch den Linux-Dienst. setup migriert hinein, und uninstall nennt ihn und bietet ihn unter --purge an. oar selbst sucht die Lock-Datei im Standard-Datenordner |
COPILOT_, COPILOT_, COPILOT_ |
status, doctor |
Ändern die Zeile Tunnel: von status und die Zeile tunnel von doctor, so wie sie den Tunnel des Relays ändern |
COPILOT_ |
copilot |
Der Copilot-Home-Ordner für den Wrapper, Standard ~/. |
APPDATA, USERPROFILE, LOCALAPPDATA, XDG_ |
allen | Ordnerorte unter Windows und ältere Orte |
NO_ |
Menü | Schaltet Farben ab |
PATH |
service install |
Der Dienst bekommt diesen PATH (plus ~/. und den Node.js-Ordner) |
Wie oar das Relay findet #
oar liest Port und Token aus der config. der Installation und fragt
http:// mit dem Token an:
| Antwort | oar liest sie als |
|---|---|
| Der Status eines Relays | Das Relay läuft |
| Jede andere Antwort (ein falsches Token, ein anderes Programm) oder keine Antwort innerhalb von 2,5 Sekunden | Der Port ist von einem anderen Programm belegt oder von einem Relay mit einem anderen Token |
| Die Verbindung wird abgelehnt | Das Relay ist gestoppt |
Eine Lock-Datei ist kein Beweis: Sie kann ihr Relay überleben. oar start und
oar copilot warten auf ein Relay, das sie hält und noch nicht antwortet, und
entfernen nur einen Lock, den eine frühere Version geschrieben hat.
oar update nimmt einen lebenden Lock als laufendes Relay. oar uninstall
macht nicht weiter, solange ein lebender Prozess ihn hält. Zwischen einem
oar setup, das Port oder Token geändert hat, und dem Neustart, der es
übernimmt, antwortet das Relay noch auf den alten Werten; oar findet es über
relay- und sagt, dass es mit seinen früheren Einstellungen läuft.
Ist der Dienst installiert, gehen start, stop und restart unter Linux
über systemd (sofort, ohne auf Turns zu warten); sonst startet start einen
abgekoppelten Prozess, und stop und restart nutzen die eigene
Schnittstelle des Relays, die wartet, bis kein Turn läuft. Unter Windows ist
der Autostart nie an start beteiligt; status zeigt Service: installed,
wenn der Autostart oder der Start-Task an ist.
WSL #
In WSL erkennt oar die Distribution (WSL_ oder WSL_
oder das Kernel-Release) und fragt Windows, welches Programm einen Port belegt.
oar setup lehnt einen Port ab, den Windows belegt. oar setup, start,
status und doctor geben
Windows holds port <port> (<program>): a browser on Windows reaches that program, not this relay. Pick another port: oar setup --port N aus. Mit
LAN-Zugriff im Standard-Netzwerkmodus von WSL sagt oar url, dass die Adresse
WSL-intern ist.
Exit-Codes #
| Code | Bedeutung | Befehle |
|---|---|---|
| 0 | Erledigt; bei stop und restart auch, wenn das Relay noch beschäftigt ist und von selbst fertig wird |
alle; status nur, wenn das Relay läuft |
| 1 | Der Befehl konnte nicht tun, was du verlangt hast: keine Config, ein Git-Checkout, der Port ist belegt, das Relay ist nicht hochgekommen oder hat die Anfrage nicht angenommen, npm install ist fehlgeschlagen, gh fehlt, eine Administrator-Abfrage wurde abgelehnt, ein selbst angelegter Autostart-Eintrag ist im Weg, --purge wurde nicht bestätigt; außerdem ein unerwarteter Fehler |
setup, start, stop, restart, url, update, service, autostart, uninstall, copilot |
| 2 | Bedienfehler: unbekannter Befehl oder unbekannte Option, ein fehlender Wert, ein ungültiger --port (nicht bei copilot) oder --autostart, --lan mit --local |
alle |
| 3 | Das Relay läuft nicht (gestoppt, von etwas anderem belegt oder nicht eingerichtet) | nur status |
| 130 | Strg+C in einer Frage oder im Menü | setup, uninstall, das Menü |
der Code von gh copilot |
Die Copilot-Session ist beendet | copilot |