La commande oar
oar est la ligne de commande de la machine du relais. Elle écrit la config,
démarre et arrête le relais, affiche l’adresse à ouvrir dans un navigateur,
installe le service de démarrage à l’ouverture de session,
met à jour OAR, vérifie l’installation et la supprime. Elle
agit sur l’installation depuis laquelle elle a été lancée, sur la machine où
elle tourne ; elle ne parle pas à un relais situé sur une autre machine.
Lancez oar sans rien derrière pour obtenir un menu, ou oar help pour le
texte d’aide. L’installation d’OAR est décrite dans
Installation, le premier démarrage dans
Premier lancement.
Les commandes #
| Commande | Ce qu’elle fait |
|---|---|
oar |
Un menu dans un terminal ; ailleurs, l’état et le texte d’aide |
oar setup |
Écrit la config : token d’auth, accès (cette machine ou LAN) et port ; sous Windows, aussi le mode de démarrage automatique |
oar start |
Démarre le relais en arrière-plan |
oar stop |
Arrête le relais dès qu’aucun turn ne tourne |
oar restart |
Redémarre un relais en marche, ou démarre un relais arrêté |
oar status |
Indique si le relais tourne ; code de sortie 0 ou 3 |
oar url |
Affiche l’adresse du relais avec le token, et un QR code là où un téléphone peut l’utiliser |
oar update |
Installe la version la plus récente, ou celle que vous indiquez, et redémarre le relais |
oar service |
Installe, supprime ou décrit le service de démarrage à l’ouverture de session |
oar autostart |
Ajouté en 0.9.15 Change la façon dont le relais démarre tout seul : à l’ouverture de session, au démarrage, ou pas du tout |
oar uninstall |
Ajouté en 0.9.15 Supprime les entrées de démarrage automatique et le paquet ; les données restent, sauf si vous ajoutez --purge |
oar copilot |
Démarre le relais et une session GitHub Copilot dans le terminal |
oar doctor |
Affiche l’installation, la config et les CLI de fournisseurs qu’elle trouve |
oar help |
Affiche le texte d’aide |
oar version |
Affiche la version |
La plupart des messages commencent par [oar]. Les erreurs vont sur la sortie
d’erreur standard, la sortie normale sur la sortie standard.
Comment la ligne de commande est lue #
- La commande est le premier mot qui n’est pas une option. Des options peuvent
la précéder :
oar --port 3400 setupéquivaut àoar setup --port 3400. --port,--migrate-,from --toet--autostartprennent une valeur, comme mot suivant ou sous la forme--port=. Sans valeur,3400 oaraffiche--port needs a value.et sort avec le code 2. Pouroar update --toetoar copilot --migrate-, utilisez la forme séparée par une espace ; voir les remarques sous ces commandes.from --helpou-havant un--affiche le texte d’aide et sort avec le code 0, quoi qu’il y ait d’autre sur la ligne.--setup,--start,--stopet--statusdésignent une commande quand aucune autre n’est donnée :oar --setup --startéquivaut àoar setup --start.--install-,extension --no-,install- extension --migrate-ou une partiefrom --sans commande signifientoar copilot.--versionou-vsans commande affichent la version.- Chaque commande n’accepte que ses propres options et affiche le texte d’aide après l’un de ces messages (sur la sortie d’erreur standard), code de sortie 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.
Seule oar copilot accepte une partie --.
Le menu : oar #
Dans un terminal, oar affiche la version, si le relais tourne, l’URL (sans le
token), le port, l’accès, l’état du service et un éventuel avertissement, puis
ces entrées :
| Touche | Entrée | Lance |
|---|---|---|
1 |
Start (Démarrer) | oar start |
2 |
Stop (Arrêter) | oar stop |
3 |
Restart (Redémarrer) | oar restart |
4 |
Show URL and QR code (Afficher l’URL et le QR code) | oar url |
5 |
Settings (Réglages) | oar setup, avec ses questions |
6 |
Install or remove the service (Installer ou supprimer le service) | oar service install quand aucun service n’est installé ; oar service remove après Remove the service? [y/ quand il y en a un ; oar service status là où aucun service n’est disponible |
7 |
Update (Mettre à jour) | oar update. Après une mise à jour réussie, le menu se ferme, car ses propres fichiers ont été remplacés |
8 |
Doctor | oar doctor |
9 |
Copilot session (Session Copilot) | oar copilot |
q |
Quit (Quitter) |
Déplacez-vous avec les flèches (ou j et k) et appuyez sur Enter, ou tapez
un chiffre ou q. Une fois une entrée exécutée, n’importe quelle touche ramène
au menu. Ctrl+C dans une question ramène au menu ; dans le menu, il termine
oar avec le code de sortie 130. La variable d’environnement NO_
désactive les couleurs. Un terminal qui ne sait pas lire des touches isolées
reçoit la même liste avec l’invite Choose (1-.
Quand l’entrée ou la sortie standard n’est pas un terminal, oar affiche ce
qu’affiche oar status, une ligne vide et le texte d’aide, et sort
avec le code 0 quel que soit l’état.
oar setup #
oar setup [--port <port>] [--lan | --local] [--new-token] [--autostart signin|boot|off] [--defaults] [--start] [--migrate-from <dir>]
Écrit config. dans le dossier d’état d’OAR (Où oar garde ses fichiers ;
les clés sont décrites dans config.json). Lancez-la
après l’installation et chaque fois que vous voulez un autre port, un autre accès
ou un autre token. Les réglages que la commande ne touche pas restent tels quels
dans une config existante.
Dans un terminal, et quand vous ne passez aucune des options --port, --lan,
--local, --new-, --autostart ou --defaults, elle pose trois
questions et affiche la valeur actuelle entre crochets ; Enter la conserve.
Ajouté en 0.9.15 Sous Windows, une quatrième demande comment le relais démarre,
avec le mode en vigueur comme valeur par défaut ; elle est omise quand la tâche
de démarrage ne peut pas être lue. Premier lancement
les parcourt une à une.
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 | Valeur | Par défaut | Effet |
|---|---|---|---|
--port |
des chiffres, de 1 à 65535 | le port de la config ; pour une nouvelle config, le premier port libre à partir de 3333 (sur 20 essayés, sinon 3333) | Définit le port sans poser la question. Un port qu’un autre programme occupe est refusé |
--lan |
aucune | l’accès de la config | Accès pour les autres appareils de votre réseau (localhost). Pas en même temps que --local |
--local |
aucune | l’accès de la config ; this machine only (cette machine uniquement) pour une nouvelle config | Accès pour cette machine uniquement |
--new- |
aucune | garder le token ; une nouvelle config en reçoit un aléatoire | Écrit un nouveau token d’auth. Cela déconnecte tous les appareils |
--autostart |
signin, boot ou off |
le mode en vigueur | Ajouté en 0.9.15 Change le démarrage automatique sans poser la question, comme le fait oar autostart : sous Windows, l’entrée d’ouverture de session ou la tâche de démarrage (une invite administrateur), sous Linux, le service. Installations globales uniquement : un checkout git est refusé et rien n’est écrit |
--defaults |
aucune | désactivé | Ne pose aucune question, même dans un terminal, et redémarre un relais en marche sans demander |
--start |
aucune | désactivé | Installations globales uniquement (l’installateur l’utilise). Là où une session utilisateur systemd existe, écrit aussi l’unité de service ; démarre ensuite le relais, via le service s’il y en a un. Ignoré dans un checkout git |
--migrate- |
un dossier | aucun | Copie l’état d’un checkout git datant d’avant le renommage du projet (<folder>/) dans le dossier d’état d’OAR. La source n’est jamais modifiée. Un relais qui tourne encore depuis elle bloque la copie. Installations globales uniquement. L’option s’exécute chaque fois que vous indiquez un dossier : un dossier déjà repris dont la base de données est toujours là affiche seulement <state folder> is already migrated from <folder>; nothing to do. ; un dossier sans rien à reprendre est une erreur (Nothing to migrate from <folder>: <reason>.) ; un dossier d’état dont la base contient déjà des conversations le refuse, et rien n’est écrasé. Voir Fichiers et dossiers |
Un port est libre quand rien n’y répond et qu’il peut être ouvert sur cette
machine. Le port du relais en marche de cette installation compte comme libre.
Dans WSL, un port que Windows occupe est refusé aussi. Pour une nouvelle config
dont le port 3333 est pris, setup affiche Port 3333 is in use — using <port>.
Une installation globale reprend aussi, une seule fois, l’état de l’ancien
dossier de config géré, sans l’option.
Ce qu’elle fait :
- Migre l’ancien état (installations globales) : l’ancien dossier de config
géré, une fois et d’elle-même, ou le dossier que nomme
--migrate-.from [oar] Migrated <folder or "earlier relay state"> into <state folder> (<n> items, sources untouched; receipt in backups/MIGRATION. md). - Écrit
config.(permission 600 hors Windows) et affichejson [oar] Wrote <path>. Une nouvelle config contientauth,Token port,localhost,Only poll(3000),Interval Ms processing(600000) etTimeout Ms conversation(Session Mode isolated). - Ajouté en 0.9.15 Change le démarrage automatique, comme l’indiquent
--autostartou la question (installations globales). Elle lanceoar autostartavec ce mode et affiche ses lignes. - Si le relais tourne et que le token, le port ou l’accès a changé, elle
redémarre le relais et attend qu’il réponde avec les nouveaux réglages. Dans
un terminal, elle demande
The relay is running. Restart it now to apply the change? [Y/; sur non, elle affichen] The running relay keeps its earlier settings until it restarts: oar restart. Sans terminal, elle redémarre sans demander. - Affiche l’URL du relais avec le token, et un QR code quand un téléphone peut
joindre l’adresse (accès LAN avec une adresse réseau qui n’est pas interne à
WSL). Si l’étape de démarrage automatique n’a pas abouti, elle affiche
ensuite
The config is written; the autostart step did not go through (see above).et sort avec le code 1. - Quand le relais ne tourne pas, indique comment le démarrer :
oar start(avec une indication suroar service installquand aucun service n’existe) ; dans un checkout git,npm start.
| Code de sortie | Quand |
|---|---|
| 0 | La config est écrite, et le redémarrage ou le démarrage demandé a fonctionné |
| 1 | Le port est pris ; le relais n’a pas redémarré ou n’a pas démarré ; la migration est refusée ou échoue (un relais qui tourne depuis la source ou sur le dossier d’état, une base de données qui contient déjà des conversations, rien à migrer depuis le dossier indiqué) ; l’étape de démarrage automatique n’a pas abouti ; --autostart dans un checkout git |
| 2 | --port n’est pas un nombre de 1 à 65535 (--port expects a number from 1 to 65535.), --autostart ne vaut pas signin, boot ou off (--autostart expects signin, boot or off.), ou --lan et --local sont donnés tous les deux |
| 130 | Ctrl+C dans une question |
oar start #
oar start
Démarre le relais en arrière-plan et affiche l’URL du relais (avec le token,
sans QR code). Elle n’a pas d’options. Elle a besoin d’une config : sans config,
elle affiche No config yet — run: oar setup. Un checkout git est refusé (This is a git checkout — start the relay with: npm start). Les deux cas sortent avec le code 1.
- Un relais qui répond déjà est laissé tel quel :
The relay is already running. It keeps the version and settings it started with until you restart it: oar restart. - Si le relais tourne avec des réglages datant d’avant un
oar setup,oar startle signale et renvoie versoar restart. - Avec un service utilisateur systemd installé (Linux), le service est activé
et démarré. Sinon, le relais démarre comme processus d’arrière-plan qui
survit au terminal et écrit
server.etlog server-dans le dossier des journaux. Après un redémarrage de la machine, relancezerr. log oar start, ou mettez en place le démarrage à l’ouverture de session. - Elle attend jusqu’à 20 secondes que le relais réponde, et cesse d’attendre
plus tôt quand le processus qu’elle a lancé se termine. Ensuite :
The relay did not come up — see <log folder>/(via le service :server- err. log see journalctl --user -u oar). Ajouté en 0.9.14 Quand un relais actif détient le verrou, une seconde ligne nomme le verrou et dit quoi faire :The lock <path> is held by relay process <pid> (started <time>): oar stop, or end process <pid>.Quand le verrou nomme un processus dont on ne peut pas établir qu’il s’agit d’un relais :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. - Ajouté en 0.9.14 Un relais encore en train de reprendre la base de données sur
laquelle il tournait jusqu’ici (le premier démarrage après la mise à jour
vers 0.9.14) n’est pas compté comme en échec :
oar startafficheThe relay (process <pid>) is bringing over the database it ran on until now (…) and is still running; it answers once that is done.et nomme son journal. - Un verrou dont le relais est encore en train de démarrer est attendu, jusqu’à
5 secondes. Un verrou d’une version antérieure dont le relais ne répond pas
est supprimé (
Removing a leftover relay lock) ; Ajouté en 0.9.14 un verrou écrit par cette version est laissé au relais, qui reconnaît lui-même un verrou périmé (voir Un relais par dossier de données). - Un port qu’un autre programme occupe, ou un relais avec un autre token :
Port <port> is in use by another program, or by a relay with another token.et une indication pour choisir un autre port avecoar setup --port <port>. - Dans WSL, elle avertit quand Windows occupe le port (WSL).
Code de sortie 0 : le relais tourne, ou reprend encore sa base de données. Code de sortie 1 : pas de config, un checkout git, le port est pris, ou le relais n’a pas démarré.
oar stop #
oar stop
Pas d’options ; a besoin d’une config (code 1 sans config).
- Quand le service systemd tourne, elle lance immédiatement
systemctl --user stop oaret afficheThe relay service is stopped. It starts again at the next boot (without lingering: at the next login); to take it out: oar service remove. - Tout autre relais est prié de s’arrêter via sa propre interface et s’arrête
dès qu’aucun turn ne tourne. Si des turns tournent,
Waiting for the relay's running turns to finish …s’affiche.oar stopattend jusqu’à 30 secondes, puis afficheThe relay is stopped., ouThe relay is still busy; it stops by itself when its running turns finish.Les deux cas sortent avec le code 0. - Aucun relais en marche :
The relay is not running., code 0. - Port occupé par autre chose :
Port <port> is in use by another program, or by a relay with another token., code 1. Si le fichier de verrou nomme un processus actif de cette installation, une seconde ligne donne son ID de processus et vous dit de le redémarrer depuis son interface web, avec ⋯ → Restart web relay (⋯ → Redémarrer le relais web), ou de terminer ce processus. The relay did not accept the stop request.ou unsystemctlen échec : code 1.
Sous Windows, et là où le service est installé mais ne tourne pas, le relais est arrêté via sa propre interface. Voir Redémarrer le relais pour ce qu’un arrêt fait aux turns en cours.
oar restart #
oar restart
Redémarre un relais en marche pour qu’il charge une nouvelle version et relise
la config, puis affiche l’URL du relais. Un relais arrêté est démarré à la
place, comme avec oar start. Pas d’options ; a besoin d’une config.
- Quand le service systemd tourne, systemd le redémarre immédiatement ; un turn en cours prend fin (Redémarrer le relais).
- Tout autre relais est prié de redémarrer et attend ses turns en cours. La
commande attend jusqu’à 60 secondes que le relais réponde sur le port de la
config avec le token de la config, puis affiche
The relay restarted.Si des turns tournent encore :The relay is still busy; it restarts by itself when its running turns finish., code 0. Ajouté en 0.9.13 Le redémarrage est mis en file comme avec 🌄 Restart web relay : les navigateurs affichent sa bannière, et après le délai Ask after a queued relay restart has waited (Demander quand un redémarrage du relais en file a attendu), il y demande s’il faut redémarrer maintenant, continuer d’attendre ou annuler (Le redémarrage attend). - Code 1 avec
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: un relais démarré paroar copilotgarde le port et le token qu’on lui a donnés. - Code 1 avec
The relay did not accept the restart request. Restart it from the web UI (⋯ → Restart web relay).(Restart web relay),systemctl --user restart oar failed, ouThe relay did not come back — see <log folder>/(via le service :server- err. log see journalctl --user -u oar). - Un port occupé par autre chose : le message d’
oar stop, code 1.
oar status #
oar status
Affiche l’état du relais et sort avec un code qu’un script peut tester.
[oar] OAR 0.9.19
[oar] The relay is running on port 3333 (this machine only): http://localhost:3333/
[oar] Service: installed, running
| Ligne | Signification |
|---|---|
Not set up yet — run: oar setup |
Pas de config ; seule la ligne de version la précède |
The relay is running on port <port> (<access>): <url> |
Le relais répond avec le token de la config. L’accès vaut LAN access (accès LAN) ou this machine only. L’URL n’a pas de token ; oar url l’affiche |
The relay is stopped (port <port>, <access>). Start it with: oar start |
Rien ne répond sur le port |
Port <port> is in use by another program, or by a relay with another token. |
Quelque chose répond, mais ce n’est pas ce relais avec ce token |
Service: <state> |
installed, running (installé, en cours d’exécution), installed ou not installed (non installé). Ligne omise là où il n’y a rien à signaler : un checkout git, macOS, un Linux sans session utilisateur systemd |
Tunnel: <state> |
Seulement quand le tunnel Cloudflare intégré est activé dans la config. Pour un relais en marche : running, not connected, not connected (<reason>) ou off: <reason>. Sinon managed (cloudflared: <path>) ou managed, cannot start: <reason> |
| un avertissement | The relay runs with its earlier settings; restart it to apply the new ones. après un oar setup qui a changé le port ou le token ; dans WSL, que Windows occupe le port |
Code de sortie 0 : le relais tourne. Code de sortie 3 : il est arrêté, le port est occupé par autre chose, ou il n’y a pas de config.
oar url #
oar url
Affiche l’adresse à ouvrir dans un navigateur, avec le token d’auth, de la même
façon que se termine oar setup. Pas d’options ; a besoin d’une config (code 1
sans config). Sinon, code 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).
- Avec l’accès LAN, l’adresse est la première adresse IPv4 non interne de la machine, et un QR code pour elle suit la première ligne.
- Avec l’accès LAN mais sans adresse réseau :
LAN access is on, but this machine has no network address.Dans le réseau par défaut de WSL (NAT), l’adresse est interne à WSL ; la sortie le dit et propose un tunnel ou le réseau en miroir comme solutions. Pas de QR code dans ces cas. - Quand le relais en marche signale une adresse de tunnel, une ligne
Tunnel URL:suit, avec le token ajouté, et un QR code pour elle. - Une dernière ligne affiche
The relay is not running. Start it with: oar start, ou, après un changement de réglage, que le relais tourne avec ses anciens réglages jusqu’àoar restart.
oar update #
oar update [--beta] [--to <version>]
Installe une version plus récente d’OAR depuis npm et demande à un relais en
marche de redémarrer. C’est le pendant en terminal du bouton Update dans
Settings → General (Réglages → Général) (Mettre à jour OAR). Un
checkout git affiche This install runs from a git checkout — update with git pull, then restart the relay. et sort avec le code 1.
| Option | Valeur | Par défaut | Effet |
|---|---|---|---|
--beta |
aucune | désactivé | Prend la version du canal beta dans le manifeste de mise à jour (Canaux). Sans elle, une version beta suit le canal beta et toute autre suit stable. Un canal sans version se rabat sur stable |
--to |
X., éventuellement avec une préversion (X.) |
la plus récente du canal | Installe exactement cette version, directement depuis npm, sans le manifeste. Les versions plus anciennes marchent aussi ; elle ne compare pas avec la version en marche |
Écrivez --to avec une espace
--to 0. fonctionne. --to= passe la vérification de la ligne de
commande mais est ignoré : oar update installe alors la version la plus
récente du canal.
Ce qu’elle fait :
- Sans
--to, récupèrehttps://(5 secondes), à chaque exécution, que la vérification automatique soit activée ou non dans l’interface web.oar. sh/ latest. json - Si la version du canal n’est pas plus récente que celle en marche :
Already up to date (<version>)., code 0. - Affiche
Updating @oar-et lancesh/ oar <old> -> <new> ... npm install -g @oar-, avec l’option qui autorise l’exécution des scripts d’installation d’OAR et de ses dépendances natives. Hors Windows, elle lance le npm situé à côté du Node.js qui exécutesh/ oar@<version> oar, dans le préfixe où se trouve le paquet ; sous Windows,npm.. npm affiche sa propre sortie ; puiscmd Installed @oar-sh/ oar@<version>. - Si un relais tourne, lui demande de redémarrer une fois la queue inactive (
Relay restart requested — it restarts once the queue is idle.) ; s’il n’y en a pas,No running relay detected — the update loads on the next start.Un refus afficheCould not request a relay restart; restart it manually to load the update.
Code de sortie 0 : installé, ou déjà à jour. Code de sortie 1 : un checkout git ;
--to n’est pas une version comme 0. ; le manifeste ne peut pas être
récupéré (Could not fetch <url>.), a un autre schema que 1, ou ne contient aucune
version utilisable ; npm install a échoué (the running install is unchanged).
| Variable | Effet |
|---|---|
OAR_ |
Bloque la requête du manifeste. oar update sort alors avec le code 1 et renvoie vers oar update --to X., qui fonctionne toujours |
OAR_ |
Lit le manifeste depuis cette URL à la place |
oar service #
oar service [install | remove | status]
Démarre le relais à chaque ouverture de session. oar service seul équivaut à
oar service status. Un checkout git est refusé (code 1). La page
Démarrer le relais automatiquement explique
le service du point de vue du propriétaire.
Linux #
Une unité systemd utilisateur, oar., dans ~/..
Elle exécute le relais avec les dossiers de config, de données et de journaux
de cette installation et le PATH de votre shell, plus ~/. et le
dossier du Node.js utilisé. systemd la redémarre 5 secondes après un plantage.
| Mot | Ce qu’il fait |
|---|---|
install |
A besoin d’une config. Écrit l’unité ; lance loginctl enable- pour que le relais survive à une déconnexion (en cas d’échec, affiche la commande à lancer vous-même) ; recharge systemd ; arrête un relais lancé à la main pour que le service puisse prendre le port ; active et démarre le service. Si ce relais ne s’arrête pas, le service est activé et prend la relève au prochain démarrage (sans lingering, à la prochaine ouverture de session), ou une fois ce relais arrêté, quand vous lancez oar start |
remove |
Désactive et arrête le service, supprime l’unité, recharge systemd. The service is not installed. s’il n’y en a pas |
status |
Service: installed, running, installed, not running ou not installed |
Sans session utilisateur systemd, la commande le signale et sort avec le code 1.
Dans WSL, le message ajoute comment activer systemd : systemd= sous
[boot] dans /, puis wsl --terminate <distro> depuis Windows.
Windows #
Une entrée dans votre dossier Démarrage lance le relais quand vous ouvrez une session.
| Mot | Ce qu’il fait |
|---|---|
install |
A besoin d’une config. Active le démarrage à l’ouverture de session ; ne démarre pas le relais tout de suite (Start it now with: oar start) |
remove |
Le désactive : Autostart is off. A running relay keeps running; stop it with: oar stop |
status |
Autostart: on, at sign-, on, at boot (scheduled task) ou off |
Un lancement au démarrage de la machine via une tâche planifiée se met en place
avec oar autostart boot ou dans l’interface web sous
Settings → General → Autostart (Windows) (Réglages → Général → Démarrage automatique sous Windows)
(Windows). Tant que cette tâche
est prête, install et remove refusent (code 1) avec 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 la signale.
macOS #
The service is not supported on mac,
code 1 pour chaque mot.
Code de sortie 0 : fait, ou status. Code de sortie 1 : un checkout git, macOS,
pas de session utilisateur systemd, pas de config pour install, une tâche de
démarrage planifiée sous Windows, ou le relais n’a pas démarré après install.
Code de sortie 2 : un mot autre que les trois, ou un second mot.
oar autostart Ajouté en 0.9.15 #
oar autostart [signin | boot | off | status] [--replace]
Change la façon dont le relais de cette installation démarre tout seul.
oar autostart seul équivaut à oar autostart status. Un checkout git est refusé (This is a git checkout — autostart is for global installs., code 1). signin et boot ont besoin
d’une config ; off et status, non. Démarrage automatique
explique les modes du point de vue du propriétaire.
Windows #
| Mot | Ce qu’il fait |
|---|---|
signin |
Écrit l’entrée dans votre dossier Démarrage, et supprime la tâche de démarrage s’il y en a une (une invite administrateur). Affiche The relay starts when you sign in to Windows. Ne démarre pas le relais tout de suite |
boot |
Enregistre la tâche planifiée oar- et son lanceur (une invite administrateur : Confirm the administrator prompt to register the boot task …), et supprime l’entrée d’ouverture de session. Affiche The relay starts at boot, before anyone signs in (scheduled task \ Déjà en mode boot, elle ne change rien et ne déclenche aucune invite ; si le lanceur généré manque ou provient d’une version antérieure, elle enregistre de nouveau la tâche, avec une invite administrateur |
off |
Supprime la tâche de démarrage (une invite administrateur) et l’entrée d’ouverture de session. Autostart is off. A running relay keeps running; stop it with: oar stop |
status |
Le mode et chaque entrée, chacune marquée (generated by OAR) ou (hand- ; voir État |
L’invite administrateur apparaît sur le bureau du PC lui-même et est attendue
jusqu’à 2 minutes. Seul l’appel schtasks s’exécute avec élévation. Une invite
refusée ne change rien (Nothing changed: the administrator prompt was declined.).
Après un changement avec --replace, chaque copie est nommée : Kept a copy of <entry> as <copy>. Un changement qui a échoué après l’invite remet en place les
tâches qu’il a supprimées, et sa ligne d’erreur se termine par Copies kept: ….
Seules les entrées générées par OAR sont supprimées ou écrasées. Tant qu’une entrée créée ou modifiée à la main resterait à côté du nouveau mode, ou serait remplacée par lui, rien ne change et l’entrée est nommée ; voir Entrées qu’OAR n’a pas créées.
| Option | Effet |
|---|---|
--replace |
Remplace les entrées faites à la main par celles d’OAR. Elle garde d’abord une copie de chacune, sous la forme <name>. dans le dossier OAR : pour un lanceur, à côté de lui ; pour une tâche, son XML exporté (<task>.) ; pour une entrée du dossier Démarrage, sa copie. Sans --replace, une entrée faite à la main n’est jamais modifiée |
Une tâche de démarrage qui ne peut pas être lue, par exemple avec l’erreur Access is denied
(Accès refusé), bloque tout changement, --replace compris : Nothing changed: the boot task could not be read (<reason>).
Linux et macOS #
Sous Linux, les mots correspondent à oar service : signin et
boot lancent oar service install, off lance oar service remove, status
lance oar service status. Avec le lingering, le service démarre au démarrage
de la machine. Sous macOS : Autostart is not supported on mac,
code 1.
Code de sortie 0 : fait, ou status. Code de sortie 1 : un checkout git, macOS,
pas de config pour signin ou boot, une entrée faite à la main qui gêne, une
invite administrateur refusée ou en échec, une tâche de démarrage illisible, ou
une entrée d’ouverture de session qui ne peut pas être modifiée ; sous Linux,
ceux d’oar service. Code de sortie 2 : un autre mot, un second mot, ou une
autre option.
oar uninstall Ajouté en 0.9.15 #
oar uninstall [--purge]
Retire OAR de la machine et garde vos données. Un checkout git est refusé
(This is a git checkout — there is no global package to uninstall., code 1).
Avec --purge, elle pose d’abord ses questions (ci-dessous) ; puis, dans l’ordre :
- Arrête le relais, comme le fait
oar stop: elle attend les turns en cours. Un relais encore occupé ensuite met fin à la commande (The relay finishes its running turns first; it stops by itself after them.), et rien d’autre n’est modifié. Un relais qui détient son verrou sans répondre, pendant qu’il reprend une base de données ou démarre, y met fin aussi :The relay (process <pid>) is bringing over its database and does not answer yet; once oar status says it runs, run oar uninstall again., ouA relay (process <pid>) holds <lock> without answering; stop it (oar stop, or end process <pid>). - Supprime les entrées de démarrage automatique qu’OAR a générées pour cette
installation : sous Windows, la tâche de démarrage (une invite administrateur)
avec son lanceur et son XML de tâche, et l’entrée d’ouverture de session ;
sous Linux, l’unité systemd, si c’est celle qu’a écrite
oar service install. Puis le wrapper de l’extension Copilot dans~/.qu’OAR a écrit pour cette installation. Une entrée ou un wrapper créé ou modifié à la main, ou appartenant à une autre installation, reste en place et est nommé (copilot/ extensions/ web- relay/ Left as it is: <path> (hand-).made) - Avec
--purge, supprime les données (ci-dessous). - Lance
npm uninstall -g @oar-en arrière-plan, avec le npm situé à côté du Node.js qui exécutesh/ oar oaret dans le préfixe où se trouve le paquet (sous Windows,npm.). npm ne peut pas supprimer un paquet pendant qu’il tourne : cette étape attend donc quecmd oarsoit terminée (jusqu’à 2 minutes), puis écrit le résultat de npm dansoar-: dans le dossieruninstall. log logsd’OAR, ou, avec--purge, dans le dossier temporaire.
Elle se termine par ce qu’elle a fait :
[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).
Quand le dossier de données se trouve hors du dossier d’état, la ligne nomme
les deux. Les workers de session continuent de tourner quand le relais s’arrête,
et npm ne peut pas supprimer les fichiers qu’un programme en marche détient.
Quand des programmes tournent encore depuis le paquet, la commande donne leurs
ID de processus, et npm laisse leurs fichiers dans un dossier caché . à
côté de l’emplacement du paquet ; le journal nomme ce dossier. Supprimez-le une
fois qu’ils sont terminés, au plus tard après un redémarrage de la machine.
Si une étape échoue, la commande s’arrête avec la raison (par exemple Uninstall stopped: <reason>. ou The relay did not stop.), puis Done: … et
Not done: the autostart entries; the package. (avec --purge, aussi the data), et Run oar uninstall again once that is sorted out. (avec
--purge : oar uninstall --purge).
| Option | Effet |
|---|---|
--purge |
Supprime aussi définitivement le dossier d’état : la config, la base de données avec toutes les conversations, les fichiers envoyés et les journaux. Elle affiche d’abord --purge deletes <folder> for good: …, puis vous demande de taper delete (Type "delete" to confirm: ) ; toute autre saisie y met fin avec Not confirmed. Nothing was changed. Ctrl+C, ou l’absence d’entrée à lire, y met fin avec le code de sortie 130, sans rien modifier |
Avec --purge, certains dossiers reçoivent une question à part, [y/, après
le delete : le dossier d’état quand il se trouve dans un checkout git,
rescued- (des données qu’une version antérieure gardait dans son
paquet), et un dossier de données hors du dossier d’état (data dans la
config, ou COPILOT_). Quoi que vous tapiez, --purge ne
supprime rien dans un dossier d’état qui est la racine d’un lecteur ou d’un
système de fichiers, votre dossier personnel ou un dossier au-dessus, un
dossier système ou un dossier au-dessus d’un dossier système, un dossier situé
dans le dossier Windows, un checkout git, ou un dossier qui ne contient ni
config ni base de données OAR :
--purge deletes nothing in <folder> (<reason>). Nothing was changed.
Un dossier supplémentaire de ce genre n’est pas proposé (Not deleted, and not offered: …).
Code de sortie 0 : la suppression du paquet est lancée. Code de sortie 1 : un
checkout git ; un dossier d’état que --purge refuse ; delete non tapé ; un
relais qui ne s’est pas arrêté ou qui détient son verrou sans répondre ; une
entrée de démarrage automatique qui n’a pas pu être supprimée (une invite
refusée, une tâche de démarrage illisible) ; un dossier qui n’a pas pu être
supprimé ; npm n’a pas pu être lancé (remove it yourself: npm uninstall -g @oar-). Code de sortie 2 : une autre option. Code de sortie 130 :
Ctrl+C à une question.
oar copilot #
oar copilot [--port <port>] [--install-extension] [--no-install-extension] [--migrate-from <dir>] [-- <gh copilot args>]
Démarre le relais si aucun ne répond, puis lance la CLI GitHub Copilot
(gh copilot) dans votre terminal. Un relais qu’elle a démarré s’arrête quand
la session se termine. GitHub Copilot
explique quand l’utiliser. Les mêmes options sans le mot copilot la lancent
aussi : oar -- <args>, oar --install-, oar --port 3400 --no-.
| Option | Valeur | Par défaut | Effet |
|---|---|---|---|
--port |
de 1 à 65535 | le port de la config, sinon 3333 | Trouve ou démarre le relais sur ce port pour cette exécution, sans modifier la config ; une config créée par cette commande l’enregistre. Un relais qui y tourne déjà est utilisé. Une valeur qui n’est pas un numéro de port est ignorée sans message |
--install- |
aucune | désactivé | Écrit ou actualise le wrapper d’extension global à l’utilisateur dans ~/. (COPILOT_ déplace ~/.) et quitte. N’a pas besoin de gh |
--no- |
aucune | désactivé | Saute le wrapper pour cette exécution. Sans elle, chaque exécution l’écrit ou l’actualise |
--migrate- |
un dossier | aucun | Comme pour oar setup. Écrivez-la avec une espace : --migrate- est ignoré |
-- |
le reste de la ligne | aucun | Transmis à gh copilot après un -- qui lui est propre |
Dans l’ordre : vérifie que gh existe ; actualise le wrapper (un échec est
signalé, et n’arrête que --install-) ; migre l’ancien état
(installations globales) ; cherche le relais sur le port ; le démarre s’il ne
répond pas, en attendant jusqu’à 20 secondes (Relay did not become ready at <url>) ;
puis lance gh copilot dans le dossier courant avec le terminal attaché. Un
relais qui tournait déjà continue de tourner. Une config manquante est créée
avec un accès pour cette machine uniquement.
--help ou -h avant le -- affiche le texte d’aide général, pas celui de
copilot. Un --help ou -h après le -- affiche l’aide d’oar copilot et sort avec le code 0. --install- et --no-
après le -- sont lus aussi par oar. Aucun d’eux n’atteint gh.
Le relais d’une session Copilot garde le port et le token avec lesquels il a
été démarré. oar restart ne peut pas les changer ; voir oar restart.
| Code de sortie | Quand |
|---|---|
le code de gh copilot |
La session a tourné (1 si gh a été terminé par un signal) |
| 0 | --install- a écrit le wrapper |
| 1 | gh n’est pas installé (The Copilot session needs the Git) ; le wrapper ne peut pas être écrit avec --install- ; le port est pris ; le relais n’est pas devenu prêt ; le relais reprend encore sa base de données ; la migration de l’état a échoué (une migration bloquée est signalée, Nothing was migrated; starting on the state root as it is., et la session démarre quand même) |
oar doctor #
oar doctor
Affiche ce que oar trouve. Pas d’options, ne modifie rien, sort avec le code 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)
| Ligne | Signification |
|---|---|
mode |
global install ou git checkout |
state root |
Le dossier d’état ; (repo- dans un checkout git |
config |
Le chemin de la config, avec (missing — run: oar setup) quand il n’y en a pas ; port, auth token et tunnel sont alors omis |
port |
Le port de la config ; localhost signifie cette machine uniquement, no le réseau |
auth token |
set ou MISSING |
tunnel |
disabled, managed (cloudflared: <path>) ou managed, cannot start: <reason> |
database |
Le chemin et la taille en Mo, ou (not created yet) |
provider CLIs |
gh (Copilot), claude et grok : la première ligne de <cli> --version (coupée à 60 caractères), installed s’il n’y en a pas, not found si la commande échoue ou manque (limite de 5 secondes). cursor vaut toujours bundled (@cursor/ : Cursor n’a pas besoin de CLI |
warning |
Dans WSL, quand Windows occupe le port du relais |
oar help et oar version #
oar help # also: oar --help, oar -h, oar <command> --help
oar version # also: oar --version, oar -v
help affiche le texte d’aide. version affiche la version installée, par
exemple 0.. Les deux sortent avec le code 0. --version et -v ne
fonctionnent que sans commande.
Où oar garde ses fichiers #
oar travaille sur une seule installation : le paquet depuis lequel elle a été
lancée et son dossier d’état.
| Installation | Dossier d’état | Config | Données | Journaux |
|---|---|---|---|---|
| Globale, macOS et Linux | ~/. |
config. dedans |
data/ |
logs/ |
| Globale, Windows | %APPDATA%\ |
config. dedans |
data\ |
logs\ |
| Checkout git | server/ du checkout |
server/ |
server/ |
~/. (Windows : %LOCALAPPDATA%\) ; npm start écrit dans server/ |
OAR_ déplace le dossier d’état d’une installation globale. Un
dossier de paquet qui contient . compte comme un checkout git. Le dossier
de données contient la base de données copilot., le fichier de verrou
relay- et, entre un oar setup et le redémarrage qui l’applique,
relay-. Les journaux sont server. et server-.
Autres emplacements où oar écrit :
~/. (service Linux), oar- dans
le dossier Démarrage de Windows, oar-, le XML de la
tâche de démarrage, oar-, oar- et
oar- dans %APPDATA%\, et ~/..
Ajouté en 0.9.15 oar autostart --replace garde ses copies sous la forme
<name>. dans le dossier d’état, et oar uninstall écrit oar-
dans le dossier des journaux (avec --purge, dans le dossier temporaire).
Variables d’environnement #
| Variable | Utilisée par | Effet |
|---|---|---|
OAR_ |
toutes | Le dossier d’état d’une installation globale |
OAR_ |
update |
1 bloque la requête du manifeste ; --to fonctionne toujours |
OAR_ |
update |
Une autre URL pour le manifeste |
COPILOT_ |
toutes | Un autre dossier de journaux |
COPILOT_ |
copilot uniquement |
Un fichier de config à utiliser quand il existe. Les autres commandes utilisent toujours le config. propre à l’installation |
COPILOT_ |
copilot, start, restart, setup, uninstall, démarrage automatique Windows |
Transmise au relais comme dossier de données quand ces commandes le démarrent, sauf par le service Linux. setup migre dedans, et uninstall le nomme et le propose avec --purge. oar lui-même cherche le fichier de verrou dans le dossier de données par défaut |
COPILOT_, COPILOT_, COPILOT_ |
status, doctor |
Modifient la ligne Tunnel: de status et la ligne tunnel de doctor, comme elles modifient le tunnel du relais |
COPILOT_ |
copilot |
Le dossier personnel de Copilot pour le wrapper, par défaut ~/. |
APPDATA, USERPROFILE, LOCALAPPDATA, XDG_ |
toutes | Emplacements de dossiers de Windows et anciens emplacements |
NO_ |
menu | Désactive les couleurs |
PATH |
service install |
Le service reçoit ce PATH (plus ~/. et le dossier de Node.js) |
Comment oar trouve le relais #
oar lit le port et le token dans le config. de l’installation et
interroge http:// avec le token :
| Réponse | oar l’interprète comme |
|---|---|
| L’état d’un relais | Le relais tourne |
| Toute autre réponse (un mauvais token, un autre programme), ou aucune réponse en 2,5 secondes | Le port est occupé par un autre programme, ou par un relais avec un autre token |
| La connexion est refusée | Le relais est arrêté |
Un fichier de verrou n’est pas une preuve : il peut survivre à son relais.
oar start et oar copilot attendent un relais qui le détient et ne répond
pas encore, et ne suppriment qu’un verrou écrit par une version antérieure.
oar update considère un verrou actif comme un relais en marche.
oar uninstall ne continue pas tant qu’un processus actif le détient. Entre
un oar setup qui a changé le port ou le token et le redémarrage qui
l’applique, le relais répond encore sur les anciens ; oar le trouve grâce à
relay- et indique qu’il tourne avec ses anciens réglages.
Avec le service installé, start, stop et restart passent par systemd sous
Linux (immédiatement, sans attendre les turns) ; sinon, start lance un
processus détaché, et stop et restart utilisent l’interface propre du
relais, qui attend qu’aucun turn ne tourne. Sous Windows, le démarrage
automatique n’intervient jamais dans start ; status affiche
Service: installed quand le démarrage automatique ou la tâche de démarrage
est activé.
WSL #
Dans WSL, oar détecte la distribution (WSL_ ou WSL_, ou
la version du noyau) et demande à Windows quel programme occupe un port.
oar setup refuse un port que Windows occupe. oar setup, start, status
et doctor affichent Windows holds port <port> (<program>): a browser on Windows reaches that program, not this relay. Pick another port: oar setup --port N. Avec l’accès
LAN activé dans le réseau par défaut de WSL, oar url indique que l’adresse
est interne à WSL.
Codes de sortie #
| Code | Signification | Commandes |
|---|---|---|
| 0 | Fait ; pour stop et restart, aussi quand le relais est encore occupé et termine tout seul |
toutes ; status seulement quand le relais tourne |
| 1 | La commande n’a pas pu faire ce que vous avez demandé : pas de config, un checkout git, le port est pris, le relais n’a pas démarré ou n’a pas accepté la demande, npm install a échoué, gh manque, une invite administrateur a été refusée, une entrée de démarrage automatique faite à la main gêne, --purge n’a pas été confirmé ; aussi une erreur inattendue |
setup, start, stop, restart, url, update, service, autostart, uninstall, copilot |
| 2 | Erreur d’utilisation : commande ou option inconnue, une valeur manquante, un mauvais --port (sauf pour copilot) ou --autostart, --lan avec --local |
toutes |
| 3 | Le relais ne tourne pas (arrêté, port occupé par autre chose, ou pas configuré) | status uniquement |
| 130 | Ctrl+C dans une question ou dans le menu | setup, uninstall, le menu |
le code de gh copilot |
La session Copilot s’est terminée | copilot |