El comando oar
oar es la línea de comandos de la máquina del relay. Escribe la configuración,
inicia y detiene el relay, imprime la dirección que abres en un navegador,
instala el servicio de inicio al iniciar sesión, actualiza OAR,
comprueba la instalación y la vuelve a quitar. Actúa sobre la
instalación desde la que se inició, en la máquina donde se ejecuta; no habla con
un relay de otra máquina.
Ejecuta oar sin nada detrás para ver un menú, u oar help para ver el texto
de uso. Cómo instalar OAR está en Instalación, el primer
arranque en Primer arranque.
Los comandos #
| Comando | Qué hace |
|---|---|
oar |
Un menú en una terminal; en otros casos, el estado y el texto de uso |
oar setup |
Escribe la configuración: token de autenticación, acceso (esta máquina o LAN) y puerto; en Windows también el modo de inicio automático |
oar start |
Inicia el relay en segundo plano |
oar stop |
Detiene el relay cuando no hay ningún turn en curso |
oar restart |
Reinicia un relay en ejecución, o inicia uno detenido |
oar status |
Dice si el relay se está ejecutando; código de salida 0 o 3 |
oar url |
Imprime la dirección del relay con el token, y un código QR cuando un teléfono puede usarla |
oar update |
Instala la versión más reciente, o la que indiques, y reinicia el relay |
oar service |
Instala, quita o informa del servicio de inicio al iniciar sesión |
oar autostart |
Nuevo en 0.9.15 Cambia cómo arranca el relay por sí solo: al iniciar sesión, al encender o nunca |
oar uninstall |
Nuevo en 0.9.15 Quita las entradas de inicio automático y el paquete; los datos se quedan salvo que añadas --purge |
oar copilot |
Inicia el relay y una sesión de terminal de GitHub Copilot |
oar doctor |
Imprime la instalación, la configuración y las CLI de proveedores que encuentra |
oar help |
Imprime el texto de uso |
oar version |
Imprime la versión |
La mayoría de los mensajes empiezan por [oar]. Los errores van a la salida de
error estándar, la salida normal a la salida estándar.
Cómo se lee la línea de comandos #
- El comando es la primera palabra que no es una opción. Las opciones pueden ir
antes:
oar --port 3400 setupesoar setup --port 3400. --port,--migrate-,from --toy--autostartllevan un valor, como la palabra siguiente o como--port=. Sin valor,3400 oarimprime--port needs a value.y termina con el código 2. Paraoar update --toyoar copilot --migrate-usa la forma separada por un espacio; consulta las notas de esos comandos.from --helpo-hantes de un--imprime el texto de uso y termina con el código 0, haya lo que haya en la línea.--setup,--start,--stopy--statusindican un comando cuando no se da otro:oar --setup --startesoar setup --start.--install-,extension --no-,install- extension --migrate-o una partefrom --sin comando significanoar copilot.--versiono-vsin comando imprimen la versión.- Cada comando acepta solo sus propias opciones e imprime el texto de uso tras uno de estos mensajes (en la salida de error estándar), código de salida 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.
Solo oar copilot acepta una parte --.
El menú: oar #
En una terminal, oar muestra la versión, si el relay se está ejecutando, la
URL (sin el token), el puerto, el acceso, el estado del servicio y cualquier
advertencia, y después estas entradas:
| Tecla | Entrada | Ejecuta |
|---|---|---|
1 |
Start (Iniciar) | oar start |
2 |
Stop (Detener) | oar stop |
3 |
Restart (Reiniciar) | oar restart |
4 |
Show URL and QR code (Mostrar URL y código QR) | oar url |
5 |
Settings (Ajustes) | oar setup, con sus preguntas |
6 |
Install or remove the service (Instalar o quitar el servicio) | oar service install cuando no hay ninguno instalado; oar service remove tras Remove the service? [y/ cuando lo hay; oar service status donde no hay servicio disponible |
7 |
Update (Actualizar) | oar update. Tras una actualización correcta el menú se cierra, porque sus propios archivos se han reemplazado |
8 |
Doctor | oar doctor |
9 |
Copilot session (Sesión de Copilot) | oar copilot |
q |
Quit (Salir) |
Muévete con las flechas (o j y k) y pulsa Enter, o pulsa un dígito o
q. Cuando una entrada termina, cualquier tecla vuelve al menú. Ctrl+C dentro
de una pregunta vuelve al menú; en el menú termina oar con el código de
salida 130. La variable de entorno NO_ desactiva los colores. Una
terminal que no puede leer teclas sueltas recibe la misma lista con una
pregunta Choose (1-.
Cuando la entrada o la salida estándar no es una terminal, oar imprime lo
que imprime oar status, una línea vacía y el texto de uso, y
termina con el código 0 sea cual sea el estado.
oar setup #
oar setup [--port <port>] [--lan | --local] [--new-token] [--autostart signin|boot|off] [--defaults] [--start] [--migrate-from <dir>]
Escribe config. en la carpeta de estado de OAR (Dónde guarda oar sus archivos;
las claves están en config.json). Ejecútalo
después de instalar y siempre que quieras otro puerto, acceso o token. Los
ajustes que el comando no toca se quedan como están en una configuración
existente.
En una terminal, y cuando no pasas ninguna de --port, --lan, --local,
--new-, --autostart ni --defaults, hace tres preguntas y muestra el
valor actual entre corchetes; Enter lo conserva. Nuevo en 0.9.15 En Windows, una
cuarta pregunta cómo arranca el relay, con el modo vigente como valor
predeterminado; se omite cuando no se puede leer la tarea de arranque.
Primer arranque las recorre.
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]:
| Opción | Valor | Predeterminado | Efecto |
|---|---|---|---|
--port |
dígitos, de 1 a 65535 | el puerto de la configuración; en una configuración nueva, el primer puerto libre a partir de 3333 (de 20 probados; si no, 3333) | Fija el puerto sin preguntar. Se rechaza un puerto que ocupa otra cosa |
--lan |
ninguno | el acceso de la configuración | Acceso para otros dispositivos de tu red (localhost). No junto con --local |
--local |
ninguno | el acceso de la configuración; this machine only (solo esta máquina) en una configuración nueva | Acceso solo para esta máquina |
--new- |
ninguno | conserva el token; una configuración nueva recibe uno aleatorio | Escribe un token de autenticación nuevo. Cierra la sesión en todos los dispositivos |
--autostart |
signin, boot u off |
el modo vigente | Nuevo en 0.9.15 Cambia el inicio automático sin preguntar, como hace oar autostart: en Windows, la entrada de inicio de sesión o la tarea de arranque (una solicitud de administrador); en Linux, el servicio. Solo instalaciones globales: un checkout de git se rechaza y no se escribe nada |
--defaults |
ninguno | desactivado | No pregunta nada, ni siquiera en una terminal, y reinicia un relay en ejecución sin preguntar |
--start |
ninguno | desactivado | Solo instalaciones globales (lo usa el instalador). Donde existe una sesión de usuario de systemd también escribe la unidad del servicio; después inicia el relay, a través del servicio si lo hay. Se ignora en un checkout de git |
--migrate- |
una carpeta | ninguno | Copia el estado de un checkout de git de antes de que el proyecto cambiara de nombre (<folder>/) en la carpeta de estado de OAR. El origen nunca se cambia. Un relay que siga ejecutándose desde él bloquea la copia. Solo instalaciones globales. Se ejecuta cada vez que indicas una carpeta: una carpeta ya traída cuya base de datos sigue ahí solo dice <state folder> is already migrated from <folder>; nothing to do.; una carpeta sin nada que traer es un error (Nothing to migrate from <folder>: <reason>.); una carpeta de estado cuya base de datos ya tiene conversaciones la rechaza, y no se sobrescribe nada. Consulta Archivos y carpetas |
Un puerto está libre cuando nada responde en él y se puede enlazar en esta
máquina. El puerto del relay en ejecución de esta misma instalación cuenta como
libre. En WSL también se rechaza un puerto que ocupa Windows. En una
configuración nueva cuyo puerto 3333 está ocupado, setup dice
Port 3333 is in use — using <port>. Una instalación global también recoge una
vez el estado de la carpeta de configuración gestionada anterior, sin la
opción.
Qué hace:
- Migra el estado antiguo (instalaciones globales): la carpeta de
configuración gestionada anterior, una vez y por sí solo, o la carpeta que
indica
--migrate-.from [oar] Migrated <folder or "earlier relay state"> into <state folder> (<n> items, sources untouched; receipt in backups/MIGRATION. md). - Escribe
config.(permiso 600 fuera de Windows) e imprimejson [oar] Wrote <path>. Una configuración nueva contieneauth,Token port,localhost,Only poll(3000),Interval Ms processing(600000) yTimeout Ms conversation(Session Mode isolated). - Nuevo en 0.9.15 Cambia el inicio automático, según diga
--autostarto la pregunta (instalaciones globales). Ejecutaoar autostartcon ese modo e imprime sus líneas. - Si el relay se está ejecutando y han cambiado el token, el puerto o el
acceso, reinicia el relay y espera a que responda con los ajustes nuevos. En
una terminal pregunta
The relay is running. Restart it now to apply the change? [Y/; si respondes que no, imprimen] The running relay keeps its earlier settings until it restarts: oar restart. Sin terminal reinicia sin preguntar. - Imprime la URL del relay con el token, y un código QR cuando un teléfono
puede llegar a la dirección (acceso LAN con una dirección de red que no sea
interna de WSL). Si el paso del inicio automático no salió bien, dice
después
The config is written; the autostart step did not go through (see above).y termina con el código 1. - Cuando el relay no se está ejecutando, dice cómo iniciarlo:
oar start(con una indicación sobreoar service installcuando no existe ningún servicio); en un checkout de git,npm start.
| Código de salida | Cuándo |
|---|---|
| 0 | La configuración está escrita, y el reinicio o el arranque que se pidió funcionó |
| 1 | El puerto está ocupado; el relay no se reinició o no llegó a arrancar; la migración se rechaza o falla (un relay que se ejecuta desde el origen o sobre la carpeta de estado, una base de datos que ya tiene conversaciones, nada que migrar desde la carpeta que indicaste); el paso del inicio automático no salió bien; --autostart en un checkout de git |
| 2 | --port no es un número de 1 a 65535 (--port expects a number from 1 to 65535.), --autostart no es signin, boot ni off (--autostart expects signin, boot or off.), o se dan a la vez --lan y --local |
| 130 | Ctrl+C en una pregunta |
oar start #
oar start
Inicia el relay en segundo plano e imprime la URL del relay (con el token, sin
código QR). No tiene opciones. Necesita una configuración: sin ella imprime
No config yet — run: oar setup. Un checkout de git se rechaza (This is a git checkout — start the relay with: npm start). Ambos terminan con el código 1.
- Un relay que ya responde se deja en paz:
The relay is already running. It keeps the version and settings it started with until you restart it: oar restart. - Si el relay se ejecuta con ajustes de antes de un
oar setup,oar startlo dice y remite aoar restart. - Con un servicio de usuario de systemd instalado (Linux), el servicio se
activa y se inicia. Si no, el relay arranca como un proceso en segundo plano
que sobrevive a la terminal y escribe
server.ylog server-en la carpeta de registros. Tras reiniciar la máquina, vuelve a ejecutarerr. log oar start, o configura el inicio al iniciar sesión. - Espera hasta 20 segundos a que el relay responda, y deja de esperar antes si
el proceso que inició termina. Entonces:
The relay did not come up — see <log folder>/(a través del servicio:server- err. log see journalctl --user -u oar). Nuevo en 0.9.14 Cuando un relay vivo retiene el bloqueo, una segunda línea indica el bloqueo y dice qué hacer:The lock <path> is held by relay process <pid> (started <time>): oar stop, or end process <pid>.Cuando el bloqueo indica un proceso del que no se puede determinar que sea un relay: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. - Nuevo en 0.9.14 Un relay que todavía está trayendo la base de datos con la que
se ejecutaba hasta ahora (el primer arranque tras la actualización a 0.9.14)
no se cuenta como fallido:
oar startdiceThe relay (process <pid>) is bringing over the database it ran on until now (…) and is still running; it answers once that is done.e indica su registro. - Se espera, hasta 5 segundos, a un bloqueo cuyo relay sigue arrancando. Un
bloqueo de una versión anterior cuyo relay no responde se elimina (
Removing a leftover relay lock); Nuevo en 0.9.14 un bloqueo escrito por esta versión se deja al relay, que reconoce él mismo uno obsoleto (consulta Un relay por carpeta de datos). - Un puerto que ocupa otro programa, o un relay con otro token:
Port <port> is in use by another program, or by a relay with another token.y una indicación para elegir otro puerto conoar setup --port <port>. - En WSL avisa cuando Windows ocupa el puerto (WSL).
Código de salida 0: el relay se está ejecutando, o sigue trayendo su base de datos. Código de salida 1: no hay configuración, es un checkout de git, el puerto está ocupado o el relay no llegó a arrancar.
oar stop #
oar stop
Sin opciones; necesita una configuración (código 1 sin ella).
- Con el servicio de systemd en ejecución, ejecuta
systemctl --user stop oaral instante y diceThe relay service is stopped. It starts again at the next boot (without lingering: at the next login); to take it out: oar service remove. - A cualquier otro relay se le pide que se detenga a través de su propia
interfaz, y se detiene cuando no hay ningún turn en curso. Si hay turns en
curso, se imprime
Waiting for the relay's running turns to finish ….oar stopespera hasta 30 segundos y después imprimeThe relay is stopped.oThe relay is still busy; it stops by itself when its running turns finish.Ambos terminan con el código 0. - Ningún relay en ejecución:
The relay is not running., código 0. - Puerto ocupado por otra cosa:
Port <port> is in use by another program, or by a relay with another token., código 1. Si el archivo de bloqueo indica un proceso vivo de esta instalación, una segunda línea da su id de proceso y te dice que lo reinicies desde su interfaz web, con ⋯ → Restart web relay (⋯ → Reiniciar el relay web), o que termines ese proceso. The relay did not accept the stop request.o unsystemctlfallido: código 1.
En Windows, y donde el servicio está instalado pero no en ejecución, el relay se detiene a través de su propia interfaz. Consulta Reiniciar el relay para saber qué hace una detención con los turns en curso.
oar restart #
oar restart
Reinicia un relay en ejecución para que cargue una versión nueva y vuelva a
leer la configuración, y después imprime la URL del relay. Un relay detenido
se inicia en su lugar, como con oar start. Sin opciones; necesita
una configuración.
- Con el servicio de systemd en ejecución, systemd lo reinicia al instante; un turn en curso termina (Reiniciar el relay).
- A cualquier otro relay se le pide que se reinicie, y espera a sus turns en
curso. El comando espera hasta 60 segundos a que el relay responda en el
puerto de la configuración con el token de la configuración, y después
imprime
The relay restarted.Si sigue habiendo turns en curso:The relay is still busy; it restarts by itself when its running turns finish., código 0. Nuevo en 0.9.13 El reinicio se pone en cola como con 🌄 Restart web relay: los navegadores muestran su banner, y pasado el tiempo de Ask after a queued relay restart has waited (Preguntar cuando un reinicio del relay en cola lleve esperando) pregunta allí si reiniciar ahora, seguir esperando o cancelar (El reinicio espera). - Código 1 con
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 relay iniciado poroar copilotconserva el puerto y el token que recibió. - Código 1 con
The relay did not accept the restart request. Restart it from the web UI (⋯ → Restart web relay).(Restart web relay),systemctl --user restart oar failedoThe relay did not come back — see <log folder>/(a través del servicio:server- err. log see journalctl --user -u oar). - Un puerto ocupado por otra cosa: el mensaje de
oar stop, código 1.
oar status #
oar status
Imprime el estado del relay y termina con un código que un script puede comprobar.
[oar] OAR 0.9.19
[oar] The relay is running on port 3333 (this machine only): http://localhost:3333/
[oar] Service: installed, running
| Línea | Significado |
|---|---|
Not set up yet — run: oar setup |
No hay configuración; solo va antes la línea de la versión |
The relay is running on port <port> (<access>): <url> |
El relay responde con el token de la configuración. El acceso es LAN access (acceso LAN) o this machine only. La URL no lleva token; oar url la imprime |
The relay is stopped (port <port>, <access>). Start it with: oar start |
Nada responde en el puerto |
Port <port> is in use by another program, or by a relay with another token. |
Algo responde, pero no es este relay con este token |
Service: <state> |
installed, running (instalado, en ejecución), installed (instalado) o not installed (no instalado). Se omite donde no hay nada que informar: un checkout de git, macOS, un Linux sin sesión de usuario de systemd |
Tunnel: <state> |
Solo cuando el túnel de Cloudflare integrado está activado en la configuración. Para un relay en ejecución: running, not connected, not connected (<reason>) u off: <reason>. Si no, managed (cloudflared: <path>) o managed, cannot start: <reason> |
| una advertencia | The relay runs with its earlier settings; restart it to apply the new ones. tras un oar setup que cambió el puerto o el token; en WSL, que Windows ocupa el puerto |
Código de salida 0: el relay se está ejecutando. Código de salida 3: está detenido, el puerto lo ocupa otra cosa o no hay configuración.
oar url #
oar url
Imprime la dirección que hay que abrir en un navegador, con el token de
autenticación, igual que termina oar setup. Sin opciones; necesita una
configuración (código 1 sin ella). Si no, código 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).
- Con acceso LAN, la dirección es la primera dirección IPv4 no interna de la máquina, y tras la primera línea sigue un código QR de ella.
- Con acceso LAN pero sin dirección de red:
LAN access is on, but this machine has no network address.En la red predeterminada (NAT) de WSL, la dirección es interna de WSL; la salida lo dice y propone un túnel o la red en modo espejo como alternativas. En estos casos no hay código QR. - Cuando el relay en ejecución informa de una dirección de túnel, sigue una
línea
Tunnel URL:con el token añadido, y un código QR de ella. - Una última línea dice
The relay is not running. Start it with: oar starto, tras un cambio de ajustes, que el relay se ejecuta con sus ajustes anteriores hastaoar restart.
oar update #
oar update [--beta] [--to <version>]
Instala una versión más reciente de OAR desde npm y pide a un relay en
ejecución que se reinicie. Es el equivalente en la terminal del botón
Update (Actualizar) de Settings → General (Ajustes → General) (Actualizar OAR). Un
checkout de git imprime This install runs from a git checkout — update with git pull, then restart the relay. y termina con el código 1.
| Opción | Valor | Predeterminado | Efecto |
|---|---|---|---|
--beta |
ninguno | desactivado | Toma la versión del canal beta del manifiesto de actualizaciones (Canales). Sin ella, una versión beta sigue el canal beta y cualquier otra sigue el estable. Un canal sin versión recurre al estable |
--to |
X., opcionalmente con una prerelease (X.) |
la más reciente del canal | Instala exactamente esta versión directamente desde npm, sin el manifiesto. También funcionan versiones anteriores; no compara con la que está en ejecución |
Escribe --to con un espacio
--to 0. funciona. --to= pasa la comprobación de la línea de
comandos pero se ignora: oar update instala entonces la versión más reciente
del canal.
Qué hace:
- Sin
--to, descargahttps://(5 segundos) en cada ejecución, esté o no activada la comprobación automática en la interfaz web.oar. sh/ latest. json - Si la versión del canal no es más reciente que la que está en ejecución:
Already up to date (<version>)., código 0. - Imprime
Updating @oar-y ejecutash/ oar <old> -> <new> ... npm install -g @oar-, con la opción que permite ejecutar los scripts de instalación de OAR y de sus dependencias nativas. Fuera de Windows ejecuta el npm que está junto al Node.js que ejecutash/ oar@<version> oar, en el prefijo en el que está el paquete; en Windows,npm.. npm imprime su propia salida; después,cmd Installed @oar-sh/ oar@<version>. - Si hay un relay en ejecución, le pide que se reinicie cuando la queue esté
inactiva (
Relay restart requested — it restarts once the queue is idle.); si no hay ninguno,No running relay detected — the update loads on the next start.Un rechazo imprimeCould not request a relay restart; restart it manually to load the update.
Código de salida 0: instalada, o ya actualizada. Código de salida 1: un
checkout de git; --to no es una versión como 0.; el manifiesto no se
puede descargar (Could not fetch <url>.), tiene un schema distinto de 1 o no contiene
ninguna versión utilizable; npm install falló (the running install is unchanged).
| Variable | Efecto |
|---|---|
OAR_ |
Bloquea la petición del manifiesto. oar update termina entonces con el código 1 y remite a oar update --to X., que sigue funcionando |
OAR_ |
Lee el manifiesto de esta URL en su lugar |
oar service #
oar service [install | remove | status]
Inicia el relay en cada inicio de sesión. oar service solo es
oar service status. Un checkout de git se rechaza (código 1). La página
Arrancar el relay automáticamente explica el
servicio desde el punto de vista del propietario.
Linux #
Una unidad user de systemd, oar., en ~/..
Ejecuta el relay con las carpetas de configuración, datos y registros de esta
instalación y el PATH de tu shell más ~/. y la carpeta del Node.js
en uso. systemd lo reinicia 5 segundos después de un fallo.
| Palabra | Qué hace |
|---|---|
install |
Necesita una configuración. Escribe la unidad; ejecuta loginctl enable- para que el relay sobreviva a un cierre de sesión (si eso falla, imprime el comando para que lo ejecutes tú); recarga systemd; detiene un relay que iniciaste a mano para que el servicio pueda tomar el puerto; activa e inicia el servicio. Si ese relay no se detiene, el servicio queda activado y toma el relevo en el siguiente arranque (sin lingering, en el siguiente inicio de sesión), o cuando ese relay se haya detenido y ejecutes oar start |
remove |
Desactiva y detiene el servicio, elimina la unidad y recarga systemd. The service is not installed. si no hay ninguno |
status |
Service: installed, running, installed, not running o not installed |
Sin una sesión de usuario de systemd, el comando lo dice y termina con el
código 1. En WSL, el mensaje añade cómo activar systemd: systemd= en
[boot] dentro de /, y después wsl --terminate <distro> desde
Windows.
Windows #
Una entrada en tu carpeta de Inicio inicia el relay cuando inicias sesión.
| Palabra | Qué hace |
|---|---|
install |
Necesita una configuración. Activa el inicio al iniciar sesión; no inicia el relay ahora (Start it now with: oar start) |
remove |
Lo desactiva: Autostart is off. A running relay keeps running; stop it with: oar stop |
status |
Autostart: on, at sign-, on, at boot (scheduled task) u off |
Un inicio al encender mediante una tarea programada se configura con
oar autostart boot o en la interfaz web en
Settings → General → Autostart (Windows) (Ajustes → General → Inicio automático, Windows) (Windows). Mientras esa tarea esté lista, install y remove
se niegan (código 1) con 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 lo indica.
macOS #
The service is not supported on mac,
código 1 para cualquier palabra.
Código de salida 0: hecho, o status. Código de salida 1: un checkout de git,
macOS, ninguna sesión de usuario de systemd, ninguna configuración en
install, una tarea de arranque programada en Windows, o el relay no llegó a
arrancar tras install. Código de salida 2: una palabra distinta de las tres,
o una segunda palabra.
oar autostart Nuevo en 0.9.15 #
oar autostart [signin | boot | off | status] [--replace]
Cambia cómo arranca por sí solo el relay de esta instalación. oar autostart
solo es oar autostart status. Un checkout de git se rechaza (This is a git checkout — autostart is for global installs., código 1). signin y boot necesitan una
configuración; off y status no. Inicio automático
explica los modos desde el punto de vista del propietario.
Windows #
| Palabra | Qué hace |
|---|---|
signin |
Escribe la entrada en tu carpeta de Inicio y quita la tarea de arranque si la hay (una solicitud de administrador). Imprime The relay starts when you sign in to Windows. No inicia el relay ahora |
boot |
Registra la tarea programada oar- y su lanzador (una solicitud de administrador: Confirm the administrator prompt to register the boot task …), y quita la entrada de inicio de sesión. Imprime The relay starts at boot, before anyone signs in (scheduled task \ Si ya está en modo de arranque, no cambia nada y no pide ninguna confirmación; si el lanzador generado falta o es de una versión anterior, vuelve a registrar la tarea, con una solicitud de administrador |
off |
Quita la tarea de arranque (una solicitud de administrador) y la entrada de inicio de sesión. Autostart is off. A running relay keeps running; stop it with: oar stop |
status |
El modo y cada entrada, cada una (generated by OAR) o (hand-; consulta Estado |
La solicitud de administrador aparece en el escritorio del propio PC y se
espera hasta 2 minutos. Solo la llamada a schtasks se ejecuta con privilegios
elevados. Una solicitud rechazada no cambia nada (Nothing changed: the administrator prompt was declined.).
Tras un cambio con --replace, se nombra cada copia: Kept a copy of <entry> as <copy>. Un cambio que falló después de la solicitud restaura las tareas que
eliminó, y su línea de error termina con Copies kept: ….
Solo se eliminan o sobrescriben las entradas que generó OAR. Mientras una entrada creada o editada a mano fuera a quedarse junto al nuevo modo, o fuera a ser reemplazada por él, no cambia nada y se nombra la entrada; consulta Entradas que no creó OAR.
| Opción | Efecto |
|---|---|
--replace |
Reemplaza las entradas hechas a mano por las propias de OAR. Antes guarda una copia de cada una, como <name>. en la carpeta de OAR: la de un lanzador junto a él, el XML exportado de una tarea (<task>.), la de una entrada de Inicio. Sin --replace, una entrada hecha a mano nunca se cambia |
Una tarea de arranque que no se puede leer, por ejemplo con Access is denied
(Acceso denegado), detiene cualquier cambio, --replace incluido: Nothing changed: the boot task could not be read (<reason>).
Linux y macOS #
En Linux, las palabras se corresponden con oar service: signin
y boot ejecutan oar service install, off ejecuta oar service remove,
status ejecuta oar service status. Con lingering, el servicio arranca al
encender. En macOS:
Autostart is not supported on mac,
código 1.
Código de salida 0: hecho, o status. Código de salida 1: un checkout de git,
macOS, ninguna configuración para signin o boot, una entrada hecha a mano
que estorba, una solicitud de administrador rechazada o fallida, una tarea de
arranque que no se puede leer, o una entrada de inicio de sesión que no se
puede cambiar; en Linux, los de oar service. Código de salida 2: otra
palabra, una segunda palabra u otra opción.
oar uninstall Nuevo en 0.9.15 #
oar uninstall [--purge]
Quita OAR de la máquina y conserva tus datos. Un checkout de git se rechaza
(This is a git checkout — there is no global package to uninstall., código 1).
Con --purge hace primero sus preguntas (más abajo); después, en orden:
- Detiene el relay, como hace
oar stop: espera a los turns en curso. Un relay que sigue ocupado después termina el comando (The relay finishes its running turns first; it stops by itself after them.), y no se cambia nada más. Un relay que retiene su bloqueo sin responder, mientras trae una base de datos o arranca, también lo termina:The relay (process <pid>) is bringing over its database and does not answer yet; once oar status says it runs, run oar uninstall again.oA relay (process <pid>) holds <lock> without answering; stop it (oar stop, or end process <pid>). - Quita las entradas de inicio automático que generó OAR para esta
instalación: en Windows, la tarea de arranque (una solicitud de
administrador) con su lanzador y el XML de la tarea, y la entrada de inicio
de sesión; en Linux, la unidad de systemd, si es la que escribió
oar service install. Después, el envoltorio de la extensión de Copilot en~/.que OAR escribió para esta instalación. Una entrada o un envoltorio creados o cambiados a mano, o de otra instalación, se quedan y se nombran (copilot/ extensions/ web- relay/ Left as it is: <path> (hand-).made) - Con
--purge, elimina los datos (más abajo). - Inicia
npm uninstall -g @oar-en segundo plano, con el npm que está junto al Node.js que ejecutash/ oar oary en el prefijo en el que está el paquete (en Windows,npm.). npm no puede quitar un paquete mientras se ejecuta, así que esto espera a quecmd oarhaya terminado (hasta 2 minutos) y después escribe el resultado de npm enoar-: en la carpetauninstall. log logsde OAR o, con--purge, en la carpeta temporal.
Termina con lo que hizo:
[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).
Cuando la carpeta de datos está fuera de la carpeta de estado, la línea nombra
ambas. Los workers de sesión siguen ejecutándose cuando el relay se detiene, y
npm no puede quitar los archivos que retiene un programa en ejecución. Cuando
todavía se ejecutan programas desde el paquete, el comando indica sus ids de
proceso, y npm deja sus archivos en una carpeta oculta . junto a donde
estaba el paquete; el registro indica esa carpeta. Elimínala cuando hayan
terminado, como muy tarde tras reiniciar la máquina.
Si un paso falla, el comando se detiene con el motivo (por ejemplo Uninstall stopped: <reason>. o The relay did not stop.), después Done: … y
Not done: the autostart entries; the package. (con --purge también the data), y Run oar uninstall again once that is sorted out. (con
--purge: oar uninstall --purge).
| Opción | Efecto |
|---|---|
--purge |
También elimina para siempre la carpeta de estado: la configuración, la base de datos con todas las conversaciones, los archivos subidos y los registros. Primero dice --purge deletes <folder> for good: … y después te pide que escribas delete (Type "delete" to confirm: ); cualquier otra cosa lo termina con Not confirmed. Nothing was changed. Ctrl+C, o no tener entrada que leer, lo termina con el código de salida 130 sin cambiar nada |
Con --purge, algunas carpetas reciben una pregunta propia, [y/, después
de delete: la carpeta de estado cuando está dentro de un checkout de git,
rescued- (datos que una versión anterior guardaba dentro de su
paquete) y una carpeta de datos fuera de la carpeta de estado (data en la
configuración, o COPILOT_). Escribas lo que escribas,
--purge no elimina nada en una carpeta de estado que sea la raíz de una
unidad o de un sistema de archivos, tu carpeta personal o una carpeta por
encima de ella, una carpeta del sistema o una carpeta por encima de una, una
carpeta dentro de la carpeta de Windows, un checkout de git, o una carpeta sin
una configuración ni una base de datos de OAR dentro:
--purge deletes nothing in <folder> (<reason>). Nothing was changed.
Una carpeta adicional así no se ofrece (Not deleted, and not offered: …).
Código de salida 0: se ha iniciado la eliminación del paquete. Código de salida
1: un checkout de git; una carpeta de estado que --purge rechaza; no se
escribió delete; un relay que no se detuvo o que retiene su bloqueo sin
responder; una entrada de inicio automático que no se pudo quitar (una
solicitud rechazada, una tarea de arranque que no se puede leer); una carpeta
que no se pudo eliminar; npm no se pudo iniciar (remove it yourself: npm uninstall -g @oar-). Código de salida 2: otra opción. Código de salida
130: Ctrl+C en una pregunta.
oar copilot #
oar copilot [--port <port>] [--install-extension] [--no-install-extension] [--migrate-from <dir>] [-- <gh copilot args>]
Inicia el relay si no responde ninguno y después ejecuta la CLI de GitHub
Copilot (gh copilot) en tu terminal. Un relay que haya iniciado se detiene
cuando termina la sesión. GitHub Copilot explica
cuándo usarlo. Las mismas opciones sin la palabra copilot también lo
ejecutan: oar -- <args>, oar --install-, oar --port 3400 --no-.
| Opción | Valor | Predeterminado | Efecto |
|---|---|---|---|
--port |
de 1 a 65535 | el puerto de la configuración; si no, 3333 | Busca o inicia el relay en este puerto para esta ejecución, sin cambiar la configuración; una configuración que cree este comando lo guarda. Se usa un relay que ya se ejecute ahí. Un valor que no es un número de puerto se ignora sin ningún mensaje |
--install- |
ninguno | desactivado | Escribe o renueva el envoltorio de la extensión global del usuario en ~/. (COPILOT_ traslada ~/.) y termina. No necesita gh |
--no- |
ninguno | desactivado | Omite el envoltorio en esta ejecución. Sin ella, cada ejecución lo escribe o lo renueva |
--migrate- |
una carpeta | ninguno | Como en oar setup. Escríbela con un espacio: --migrate- se ignora |
-- |
el resto de la línea | ninguno | Se pasa a gh copilot tras un -- propio |
En orden: comprueba que gh existe; renueva el envoltorio (un fallo se
informa, y solo detiene --install-); migra el estado antiguo
(instalaciones globales); busca el relay en el puerto; lo inicia si no
responde, esperando hasta 20 segundos (Relay did not become ready at <url>);
después ejecuta gh copilot en la carpeta actual con la terminal conectada. Un
relay que ya se ejecutaba sigue ejecutándose. Una configuración que falta se
crea con acceso solo para esta máquina.
--help o -h antes del -- imprime el texto de uso general, no uno de
copilot. Un --help o -h después del -- imprime el uso de oar copilot y termina con el código 0. oar también lee --install- y
--no- después del --. Ninguno de ellos llega a gh.
El relay de una sesión de Copilot tiene el puerto y el token con los que se
inició. oar restart no puede cambiarlos; consulta oar restart.
| Código de salida | Cuándo |
|---|---|
el código de gh copilot |
La sesión se ejecutó (1 si gh terminó por una señal) |
| 0 | --install- escribió el envoltorio |
| 1 | gh no está instalado (The Copilot session needs the Git); el envoltorio no se puede escribir con --install-; el puerto está ocupado; el relay no llegó a estar listo; el relay sigue trayendo su base de datos; la migración del estado falló (una bloqueada se informa, Nothing was migrated; starting on the state root as it is., y la sesión arranca igualmente) |
oar doctor #
oar doctor
Imprime lo que encuentra oar. Sin opciones, no cambia nada, termina con el
código 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)
| Línea | Significado |
|---|---|
mode |
global install o git checkout |
state root |
La carpeta de estado; (repo- en un checkout de git |
config |
La ruta de la configuración, con (missing — run: oar setup) cuando no hay ninguna; entonces se omiten port, auth token y tunnel |
port |
El puerto de la configuración; localhost es solo esta máquina, no es la red |
auth token |
set o MISSING |
tunnel |
disabled, managed (cloudflared: <path>) o managed, cannot start: <reason> |
database |
La ruta y el tamaño en MB, o (not created yet) |
provider CLIs |
gh (Copilot), claude y grok: la primera línea de <cli> --version (recortada a 60 caracteres), installed si no hay ninguna, not found si el comando falla o no existe (límite de 5 segundos). cursor es siempre bundled (@cursor/: Cursor no necesita CLI |
warning |
En WSL, cuando Windows ocupa el puerto del relay |
oar help y oar version #
oar help # also: oar --help, oar -h, oar <command> --help
oar version # also: oar --version, oar -v
help imprime el texto de uso. version imprime la versión instalada, por
ejemplo 0.. Ambos terminan con el código 0. --version y -v solo
funcionan sin comando.
Dónde guarda oar sus archivos #
oar trabaja sobre una instalación: el paquete desde el que se inició y su
carpeta de estado.
| Instalación | Carpeta de estado | Configuración | Datos | Registros |
|---|---|---|---|---|
| Global, macOS y Linux | ~/. |
config. dentro de ella |
data/ |
logs/ |
| Global, Windows | %APPDATA%\ |
config. dentro de ella |
data\ |
logs\ |
| Checkout de git | server/ del checkout |
server/ |
server/ |
~/. (Windows: %LOCALAPPDATA%\); npm start escribe en server/ |
OAR_ traslada la carpeta de estado de una instalación global. Una
carpeta de paquete que contiene . cuenta como checkout de git. La carpeta
de datos contiene la base de datos copilot., el archivo de bloqueo
relay- y, entre un oar setup y el reinicio que lo aplica,
relay-. Los registros son server. y server-. Otros
sitios en los que escribe oar:
~/. (servicio de Linux), oar-
en la carpeta de Inicio de Windows, oar-, el XML de la
tarea de arranque, oar-, oar- y
oar- en %APPDATA%\, y ~/..
Nuevo en 0.9.15 oar autostart --replace guarda sus copias como <name>. en
la carpeta de estado, y oar uninstall escribe oar- en la
carpeta de registros (con --purge, en la carpeta temporal).
Variables de entorno #
| Variable | La usa | Efecto |
|---|---|---|
OAR_ |
todos | La carpeta de estado de una instalación global |
OAR_ |
update |
1 bloquea la petición del manifiesto; --to sigue funcionando |
OAR_ |
update |
Otra URL para el manifiesto |
COPILOT_ |
todos | Otra carpeta de registros |
COPILOT_ |
solo copilot |
Un archivo de configuración que se usa cuando existe. Los demás comandos usan siempre el config. propio de la instalación |
COPILOT_ |
copilot, start, restart, setup, uninstall, inicio automático de Windows |
Se pasa al relay como su carpeta de datos cuando estos lo inician, salvo el servicio de Linux. setup migra a ella, y uninstall la nombra y la ofrece con --purge. El propio oar busca el archivo de bloqueo en la carpeta de datos predeterminada |
COPILOT_, COPILOT_, COPILOT_ |
status, doctor |
Cambian la línea Tunnel: de status y la línea tunnel de doctor, igual que cambian el túnel del relay |
COPILOT_ |
copilot |
La carpeta personal de Copilot para el envoltorio; predeterminada: ~/. |
APPDATA, USERPROFILE, LOCALAPPDATA, XDG_ |
todos | Ubicaciones de carpetas de Windows y heredadas |
NO_ |
menú | Desactiva los colores |
PATH |
service install |
El servicio recibe este PATH (más ~/. y la carpeta del Node.js) |
Cómo encuentra oar el relay #
oar lee el puerto y el token del config. de la instalación y consulta
http:// con el token:
| Respuesta | oar la interpreta como |
|---|---|
| El estado de un relay | El relay se está ejecutando |
| Cualquier otra respuesta (un token incorrecto, otro programa), o ninguna respuesta en 2,5 segundos | El puerto lo ocupa otro programa, o un relay con otro token |
| La conexión se rechaza | El relay está detenido |
Un archivo de bloqueo no es ninguna prueba: puede sobrevivir a su relay.
oar start y oar copilot esperan a un relay que lo retiene y todavía no
responde, y solo eliminan un bloqueo escrito por una versión anterior.
oar update toma un bloqueo vivo como un relay en ejecución. oar uninstall
no continúa mientras un proceso vivo lo retenga. Entre un oar setup que
cambió el puerto o el token y el reinicio que lo aplica, el relay sigue
respondiendo con los anteriores; oar lo encuentra a través de
relay- y dice que se ejecuta con sus ajustes anteriores.
Con el servicio instalado, start, stop y restart pasan por systemd en
Linux (al instante, sin esperar a los turns); si no, start lanza un proceso
desacoplado y stop y restart usan la interfaz propia del relay, que espera
hasta que no haya ningún turn en curso. En Windows, el inicio automático nunca
interviene en start; status muestra Service: installed cuando el inicio
automático o la tarea de arranque están activados.
WSL #
En WSL, oar detecta la distribución (WSL_ o WSL_, o la
versión del kernel) y pregunta a Windows qué programa ocupa un puerto.
oar setup rechaza un puerto que ocupa Windows. oar setup, start, status
y doctor imprimen
Windows holds port <port> (<program>): a browser on Windows reaches that program, not this relay. Pick another port: oar setup --port N. Con el acceso
LAN activado en la red predeterminada de WSL, oar url dice que la dirección
es interna de WSL.
Códigos de salida #
| Código | Significado | Comandos |
|---|---|---|
| 0 | Hecho; en stop y restart, también cuando el relay sigue ocupado y termina por sí solo |
todos; status solo cuando el relay se está ejecutando |
| 1 | El comando no pudo hacer lo que pediste: no hay configuración, es un checkout de git, el puerto está ocupado, el relay no llegó a arrancar o no aceptó la petición, npm install falló, falta gh, se rechazó una solicitud de administrador, una entrada de inicio automático hecha a mano estorba, no se confirmó --purge; también un error inesperado |
setup, start, stop, restart, url, update, service, autostart, uninstall, copilot |
| 2 | Error de uso: comando u opción desconocidos, un valor que falta, un --port incorrecto (salvo en copilot) o --autostart, --lan con --local |
todos |
| 3 | El relay no se está ejecutando (detenido, ocupado por otra cosa o sin configurar) | solo status |
| 130 | Ctrl+C en una pregunta o en el menú | setup, uninstall, el menú |
el código de gh copilot |
La sesión de Copilot terminó | copilot |