Todas las páginas
En esta página

Archivos y carpetas

OAR guarda todo lo que le pertenece en una sola carpeta, la carpeta de estado: el archivo de configuración, la base de datos con tus conversaciones, los registros y los archivos subidos. Esta página dice dónde está esa carpeta, qué contiene, qué partes puedes eliminar, cuáles guardan secretos y qué elimina el relay por sí solo. Algunos datos no están en la carpeta de estado: cada proveedor guarda sus propios datos de sesión e inicios de sesión en sus propias carpetas.

La carpeta de estado #

Instalación Carpeta de estado
Instalador o npm install -g, macOS, Linux y WSL ~/.oar
Instalador o npm install -g, Windows %APPDATA%\oar
Instalación global con OAR_STATE_ROOT definida la carpeta que indica
Checkout de git dentro del checkout: server/config.json, server/data/, server/uploads/, server/logs/

npm install -g y oar update reemplazan el paquete, pero nunca tocan la carpeta de estado. OAR_STATE_ROOT tiene que estar definida en cada shell en la que ejecutes oar; si no, el comando busca en la carpeta predeterminada; consulta Variables de entorno. oar doctor muestra las rutas en uso: la carpeta de estado, el archivo de configuración, la base de datos y su tamaño. Las mismas rutas aparecen para cada instalación en Instalación.

Tres variables de entorno trasladan partes sueltas: COPILOT_WEB_RELAY_CONFIG el archivo de configuración, COPILOT_WEB_RELAY_DATA_DIR la carpeta de datos (base de datos, bloqueo y archivos subidos) y COPILOT_WEB_RELAY_LOG_DIR la carpeta de registros. En config.json, la clave dataDir también traslada la carpeta de datos; la variable de entorno tiene prioridad. Un dataDir relativo se cuenta desde la carpeta de config.json.

Nuevo en 0.9.14 Los archivos subidos también siguen a la carpeta de datos: <dataDir>/uploads. Los archivos subidos que versiones anteriores dejaron en server/uploads, o que una migración copió en uploads/ de la carpeta de estado, se siguen leyendo allí, en su sitio.

Nuevo en 0.9.14 El relay de una instalación global usa la carpeta de datos de la carpeta de estado, lo inicie quien lo inicie: oar start, el servicio de Linux, los dos modos de inicio automático de Windows y un gh copilot normal con la extensión de OAR. Un dataDir en config.json que usó un relay de inicio automático anterior se copia una vez y se deja como está.

Antes de 0.9.14: inicio automático de Windows y gh copilot

Hasta la 0.9.13, las dos entradas de inicio automático de Windows, y el relay que iniciaba un gh copilot normal, solo fijaban el archivo de configuración (gh copilot ni siquiera eso). Un relay iniciado por ellos guardaba su base de datos, archivo de bloqueo, archivos subidos y registros en server\data, server\uploads y server\logs dentro de la carpeta del paquete instalado, que npm install -g y oar update reemplazan. La actualización a 0.9.14 copia esos datos antes de que npm los elimine; consulta la nota de actualización.

En macOS y Linux, el relay deja la carpeta de datos legible solo para ti (modo 700), y el archivo de configuración y los archivos de la base de datos solo para el propietario (modo 600).

Trasladar una instalación antigua #

Antes de que el proyecto cambiara de nombre, el estado estaba en la carpeta server/ de un checkout de git, y el archivo de configuración y los registros del lanzador de un checkout en ~/.config/copilot-remote ($XDG_CONFIG_HOME/copilot-remote cuando está definida; Windows: %LOCALAPPDATA%\copilot-remote). Una instalación global copia una vez el archivo de configuración y los registros de esa carpeta en la carpeta de estado, con su primer oar setup u oar copilot. oar start no migra. Para importar el estado de un checkout, que incluye su base de datos:

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

La carpeta es el propio checkout, no su carpeta server/. Qué ocurre:

  • Copia la base de datos (con sus archivos -wal y -shm), el archivo de configuración, los almacenes de agentes de Cursor que estaban en data/ (solo si había base de datos), la carpeta uploads y la carpeta logs si ocupa 50 MB o menos.
  • Nunca cambia el origen. Elimina tú la carpeta antigua cuando estés conforme.
  • Se niega mientras un relay siga ejecutándose desde el origen, y lo dice.
  • Comprueba la copia antes de darla por buena: la base de datos debe pasar la comprobación de integridad de SQLite y contener el mismo número de conversaciones y mensajes. Si no, elimina lo que copió, Nuevo en 0.9.14 ya no toda la carpeta de estado, y deja un mensaje.
  • Nuevo en 0.9.14 Nunca sobrescribe. Un config.json que ya esté en la carpeta de estado se conserva. La base de datos vacía que creó el relay de un instalador se mueve a backups/ (detén antes el relay: oar stop); una base de datos con conversaciones hace que se niegue y diga qué hacer en su lugar. Mientras copia una base de datos mantiene el bloqueo del relay, así que entretanto ningún relay arranca sobre ella.
  • Escribe un comprobante en backups/MIGRATION.md y un archivo marcador .migrated en la carpeta de estado.

Después del instalador Nuevo en 0.9.14

El marcador solo se escribe tras una copia real, y una carpeta que indiques con --migrate-from siempre se migra, con una línea que dice qué se copió o por qué no se copió nada. Así que la opción también funciona después de que un instalador haya ejecutado oar setup. La misma carpeta una segunda vez solo dice que ya está migrada. Antes de 0.9.14, el primer oar setup u oar copilot escribía el marcador aunque no hubiera nada que importar, y un --migrate-from posterior no hacía nada sin decir una palabra.

Nuevo en 0.9.14 Los archivos subidos migrados van a data/uploads/, donde el relay los lee, y los almacenes de agentes de Cursor a data/cursor-agents/, que el relay lee de forma predeterminada. Los archivos subidos que una migración anterior dejó en uploads/ de la carpeta de estado se fusionan en data/uploads/ en el siguiente arranque del relay; no se sobrescribe ni se elimina nada. Las carpetas enlazadas simbólicamente en el checkout se copian como carpetas reales.

Qué contiene #

Las rutas son relativas a la carpeta de estado. «Se puede eliminar» significa que el relay funciona después; no dice nada de lo que pierdes.

Ruta Qué contiene ¿Se puede eliminar?
config.json Puerto, acceso, el token de acceso, temporizadores y túneles y vistas previas opcionales. Consulta config.json Detén antes el relay. oar setup escribe uno nuevo con un token nuevo, lo que cierra la sesión en todos los dispositivos. Los ajustes de túnel que contiene se pierden
data/copilot.db La base de datos: tus conversaciones y ajustes. Consulta La base de datos No: es tu historial. Haz antes una copia de seguridad
data/copilot.db-wal, data/copilot.db-shm El registro de escritura anticipada de la base de datos y su índice, presentes mientras el relay se ejecuta Nunca por separado. Elimínalos solo junto con copilot.db
data/uploads/<sha256> Un archivo por cada adjunto subido o pegado, con su hash SHA-256 como nombre, así que el mismo archivo se guarda una sola vez. Mientras se escribe un archivo subido existe un archivo <sha256>.<pid>.<number>.tmp No a mano: la base de datos hace referencia a estos archivos, y una conversación que usó uno muestra un adjunto que falta. El relay elimina los que no se usan, consulta Retención
data/relay-server.lock El bloqueo de un relay por carpeta, consulta Un relay por carpeta de datos Solo cuando no hay ningún relay en ejecución
data/cursor-agents/ Nuevo en 0.9.14 Una carpeta por conversación de Cursor: el estado de su agente. Consulta Fuera de la carpeta de estado No mientras uses Cursor: una conversación sin su almacén recibe un agente nuevo
data/deepseek-claude/ Nuevo en 0.9.17 El estado de Claude Code de los chats de DeepSeek: transcripciones y carpetas de sesión en projects/, lo que deja cada proceso de Claude Code (sessions/, session-env/, shell-snapshots/), los ajustes propios de Claude Code y oar-cli-starts.json, el registro que lleva el relay de cada arranque de Claude Code, que una eliminación usa para encontrar las instantáneas de shell correctas. Ningún inicio de sesión de Claude. Legible solo para ti (modo 700 en macOS y Linux). Eliminar una conversación de DeepSeek elimina su parte, consulta Retención No mientras uses chats de DeepSeek: sus sesiones de Claude Code están aquí. El worker vuelve a crear la carpeta cuando arranca
data/diagnostics/ Nuevo en 0.9.19 Instantáneas del heap (*.heapsnapshot) que el relay escribe cuando su heap se acerca al límite; consulta El relay se quedó sin memoria. Legibles solo para ti (modo 700 en macOS y Linux). Una instantánea contiene el token de acceso y las claves de API Sí. El relay nunca borra instantáneas: borra cada una cuando ya la hayas leído
data/rescued-package-data/<time>/ Nuevo en 0.9.14 Los datos que una versión anterior guardaba dentro del paquete, copiados aquí por la actualización antes de que npm los eliminara. El relay los asume en su siguiente arranque Una vez que el relay los ha traído ([data] Brought over the database … en relay-console.log)
backups/<time>/ Nuevo en 0.9.14 Una base de datos que el relay reemplazó por otra más reciente que trajo; también la base de datos vacía que una migración apartó Cuando estés seguro de que no la necesitas
data/relay-previous.json El puerto y el token con los que arrancó el relay en ejecución, guardados entre un oar setup que los cambió y el reinicio que los aplica. Se elimina solo Sí
logs/server.log, logs/server-err.log Lo que oar start u oar copilot imprimió al iniciar él mismo el relay, salida estándar y errores. Solo se escriben cuando oar inicia él mismo el relay; el servicio y un relay ejecutado en una terminal no los escriben Sí. Nunca rotan y crecen
logs/relay-console.log Una copia de la consola del relay con una marca de tiempo por línea, escrita por cada relay Sí
logs/worker-<session>.log La salida de un worker de sesión, consulta Registros Sí
logs/worker-<session>.mcp.json La configuración de herramientas de una sesión. No contiene secretos Sí. El relay escribe uno nuevo cuando arranca el worker de la sesión
logs/ext-debug.log, logs/relay-banner-state.json Los escribe la extensión del motor de extensión de Copilot Sí
npm/ El paquete de OAR, cuando el instalador lo puso aquí porque la carpeta global de npm requería root No mientras uses esta instalación. Es el programa
runtime/node/ El Node.js propio de OAR, cuando la máquina no tenía uno lo bastante reciente No mientras oar se ejecute con él
logs/oar-uninstall.log Nuevo en 0.9.15 El resultado de npm tras oar uninstall, y cualquier carpeta oculta .oar-* que npm haya dejado. Con --purge va en cambio a la carpeta temporal del sistema Sí
oar-web-relay-launcher.cmd, oar-relay-task.xml (Windows) El lanzador que ejecuta la tarea de arranque y la definición de tarea que registra OAR. Consulta Inicio automático No mientras el relay arranque al encender. oar autostart off elimina ambos
*.bak, *.bak-2, <task>.task.xml.bak (Windows) Nuevo en 0.9.15 Copias de entradas de inicio automático hechas a mano que oar autostart --replace reemplazó, y de las tareas que un cambio fallido restauró: un lanzador, una entrada de Inicio, el XML exportado de una tarea (schtasks /create /xml lo recupera). Las copias de entradas que generó OAR desaparecen una vez que un cambio ha funcionado Sí, cuando ya no quieras recuperar la entrada
backups/MIGRATION.md, .migrated El comprobante y el marcador de una migración El comprobante: sí. El marcador: déjalo; si no, la migración automática desde la carpeta de configuración anterior podría volver a ejecutarse

Fuera de la carpeta de estado, el lanzador oar del instalador está en ~/.local/bin/oar (solo en los casos en que instala en ~/.oar/npm), y el servicio de Linux es ~/.config/systemd/user/oar.service. Cómo quitarlos se describe en Quitar OAR. Nuevo en 0.9.15 oar uninstall quita el servicio y el paquete y deja la carpeta de estado como está; oar uninstall --purge la elimina, después de que escribas delete.

Un checkout de git guarda los mismos archivos en server/. Las imágenes generadas no están en la carpeta de estado, consulta Fuera de la carpeta de estado.

La base de datos #

La base de datos es un único archivo SQLite, copilot.db. El relay la crea en el primer arranque. Contiene lo que llamarías tus datos:

  • las conversaciones y sus mensajes, con la transcripción, el índice de adjuntos y los mensajes fijados
  • la queue de mensajes, los mensajes en cola y en espera, y las preguntas que hizo un agente
  • los ajustes del relay que cambias en la interfaz web (los interruptores de toda la app, los ajustes de proveedores, la retención elegida, las preferencias de actualización, las listas de modelos)
  • las claves de API de OpenAI, Cursor y Nuevo en 0.9.17 DeepSeek, si las introdujiste
  • los relays emparejados y sus tokens, y las suscripciones que vigilan sesiones en este relay y en relays emparejados
  • las suscripciones web push de tus dispositivos y las claves push del relay
  • los enlaces de conversaciones compartidas
  • los registros de subagents y de flujos de trabajo, la actividad y los pensamientos de cada conversación
  • el índice de archivos subidos y qué mensajes los usan
  • instantáneas de consumo para los medidores del plan de Check Usage (Ver consumo), y Nuevo en 0.9.17 lo que cuenta la tarjeta de DeepSeek: los tokens y búsquedas de los turns de DeepSeek por modelo y por día, los últimos totales que informó cada sesión de DeepSeek, y las lecturas de saldo con las que se mide su barra
  • los chats de imágenes: sus operaciones y los vínculos entre imágenes generadas
  • las tarjetas de vista previa

Las migraciones se ejecutan solas cada vez que arranca el relay. Crean lo que falta y añaden columnas, y volver a ejecutarlas no cambia nada. No las ejecutas tú y no puedes saltártelas.

Copia de seguridad #

OAR no tiene un comando de copia de seguridad. La base de datos funciona en el modo de escritura anticipada de SQLite, así que los cambios recientes pueden estar en el archivo -wal que hay a su lado. Para hacer una copia de seguridad:

  1. Detén el relay con oar stop.
  2. Copia juntos copilot.db y, si existen, copilot.db-wal y copilot.db-shm.
  3. Vuelve a iniciar el relay.

Para restaurar, detén el relay y vuelve a poner los archivos copiados tal como estaban. No copies copilot.db solo mientras el relay se ejecuta, y no mezcles un archivo de base de datos con el archivo -wal de otra copia. Una copia de seguridad contiene tus claves de API y tokens, consulta Dónde están los secretos; mantenla tan privada como la carpeta de estado.

Registros #

Archivo Lo escribe Rotación
relay-console.log el relay, siempre A los 5 MB el archivo pasa a ser relay-console.log.1, los anteriores pasan a .2 y .3, y el más antiguo se descarta. Las líneas muestran tu token de acceso como [token]. OAR_NO_CONSOLE_LOG=1 desactiva el archivo
server.log, server-err.log la shell de oar start u oar copilot, cuando inicia el relay en segundo plano ninguna
worker-<session>.log cada worker de sesión de Node (Claude, Claude Cloud, Cursor, Grok, Nuevo en 0.9.17 DeepSeek y el motor SDK de Copilot), que añade al final a través de los reinicios del worker En cada inicio, un archivo de más de 10 MB pasa a ser worker-<session>.log.1 y reemplaza al anterior. Los archivos de conversaciones eliminadas se quedan
ext-debug.log la extensión del motor de extensión de Copilot ninguna

El motor de extensión de Copilot no tiene registro de worker: es la propia terminal de la CLI de Copilot. Un relay que se ejecuta como servicio de systemd también escribe en el journal, consulta Arrancar el relay automáticamente.

Un checkout de git iniciado con npm start guarda sus registros en server/logs. Uno iniciado con oar start u oar copilot los guarda en ~/.config/copilot-remote/logs (Windows: %LOCALAPPDATA%\copilot-remote\logs), salvo que COPILOT_WEB_RELAY_LOG_DIR indique otra carpeta.

Dónde están los secretos #

Secreto Dónde se guarda
El token de acceso config.json, en texto plano. Trata el archivo, sus copias y la dirección de inicio de sesión (?token=) como una contraseña. Un navegador lo guarda como cookie de inicio de sesión durante 30 días. El archivo de bloqueo del relay solo guarda un hash de él
El token de acceso anterior, entre oar setup y el reinicio data/relay-previous.json, en texto plano, legible solo para ti; se elimina solo
Un token de túnel de Cloudflare (túnel gestionado) config.json, clave cloudflaredTunnel.token, o la variable de entorno COPILOT_CLOUDFLARED_TOKEN
Clave de API de OpenAI La base de datos. El panel nunca la vuelve a mostrar y no se envía a los navegadores
Clave de API de Cursor La base de datos, de la misma forma
Clave de API de DeepSeek Nuevo en 0.9.17 La base de datos, de la misma forma (ajuste deepseek_api_key). El relay solo la envía a la URL base de DeepSeek, y solo se la pasa a los workers de los chats de DeepSeek. Consulta DeepSeek
El token de un relay emparejado La base de datos. Nunca se envía a navegadores ni a agentes. Un emparejamiento que usa el propio token de este relay no guarda ninguno
Tokens de los enlaces de conversaciones compartidas La base de datos
Claves de web push y suscripciones de dispositivos La base de datos
Instantáneas del heap Nuevo en 0.9.19 data/diagnostics/: todo lo que había en la memoria del relay, incluidos el token de acceso y las claves de API. Nunca compartas una tal cual. Consulta El relay se quedó sin memoria
Inicio de sesión de Claude La carpeta propia de la CLI de Claude en la máquina del relay: ~/.claude, o la carpeta de CLAUDE_CONFIG_DIR. El relay no guarda ninguno. Claude Cloud lee el mismo inicio de sesión y lo mantiene en memoria. Los chats de DeepSeek no lo usan
Inicio de sesión de Grok La carpeta propia de la CLI de Grok: ~/.grok/auth.json
Inicio de sesión de GitHub Copilot El inicio de sesión propio de la CLI de Copilot en la máquina del relay

Mientras un worker arranca bajo tmux, el relay escribe la clave de su proveedor (la clave de OpenAI, Cursor o Nuevo en 0.9.17 DeepSeek, o un CLAUDE_CODE_OAUTH_TOKEN del entorno del relay para un worker de Claude Cloud o, Nuevo en 0.9.17, de Claude) en un archivo temporal de la carpeta temporal del sistema, legible solo para ti. La shell del worker lo lee una vez y lo elimina. Cada worker recibe solo la clave de su propio proveedor.

Retención #

El relay elimina esto por sí solo. No se elimina nada más salvo que elimines una conversación.

Qué Regla
Archivos subidos sin usar Un archivo al que no hace referencia ningún mensaje ni borrador se elimina cuando tiene más de 24 horas. La comprobación se ejecuta al arrancar el relay y cada 6 horas. No hay ningún ajuste. Eliminar una conversación también elimina los archivos que solo usaba ella
Registros de subagents Las entradas y resultados de herramientas de los subagents terminados se eliminan tras los días de Keep sub-agent tool output (Conservar la salida de herramientas de los subagents), en Settings → General (Ajustes → General): 7, 14, 30 o 90 días, o Always (Siempre). El valor predeterminado es 90. Los pensamientos, respuestas, notas y el resumen de una línea de cada llamada se quedan. La comprobación se ejecuta 30 segundos después del arranque, una vez al día y 5 segundos después de que cambies el ajuste. El archivo de la base de datos no se reduce; SQLite reutiliza el espacio liberado
Eventos del relay para vigilar sesiones Los eventos que ya se han entregado a la conversación que vigila se eliminan tras 2 horas. Una suscripción que terminó se elimina tras 7 días. Detalles en Sesiones vigiladas. La limpieza se ejecuta cada 10 minutos
Eventos que un relay emparejado no ha recogido Por suscripción se conservan los 500 más recientes, ninguno de más de 7 días, y una suscripción que nadie recogió durante 7 días termina. Las preguntas y los errores se descartan los últimos. Consulta Relays remotos
relay-console.log Rota a los 5 MB y conserva tres archivos anteriores, consulta Registros
worker-<session>.log Pasa a .1 al iniciar si supera los 10 MB. Nada elimina los registros de conversaciones eliminadas
Imágenes generadas Nunca por antigüedad. Eliminar la conversación elimina sus imágenes
El archivo de bloqueo Se elimina cuando el relay se detiene. Tras un fallo, el siguiente arranque lo reemplaza, consulta Un relay por carpeta de datos

Eliminar una conversación elimina de la base de datos sus mensajes, entradas de la queue, preguntas y registros de subagents, y la transcripción de Claude y las imágenes generadas que le pertenecen. Nuevo en 0.9.17 En una conversación de DeepSeek también elimina, en data/deepseek-claude/, la transcripción, las carpetas de la sesión, lo que dejó su Claude Code detenido (su registro, el entorno de hooks y la instantánea de shell) y la carpeta del proyecto cuando ya no la usa ninguna otra sesión, y de la base de datos los últimos totales que informaron sus sesiones. Lo que añadió a los totales y días de la tarjeta de DeepSeek se queda. Lo que guarda cada proveedor por su cuenta está en la siguiente sección.

Fuera de la carpeta de estado #

Qué Dónde
Transcripciones y carpetas de sesión de Claude En projects dentro de la carpeta de configuración de Claude (~/.claude, o CLAUDE_CONFIG_DIR). Eliminar una conversación elimina su transcripción. Consulta Claude. Nuevo en 0.9.17 Los chats de DeepSeek guardan las suyas en la carpeta de datos: data/deepseek-claude/, arriba
Estado de sesión de GitHub Copilot ~/.copilot/session-state, o la carpeta de COPILOT_SESSION_STATE_DIR
Imágenes de los chats de OpenAI Image En la carpeta de estado de sesión de Copilot, en <session>/generated-images/ dentro de la conversación. Consulta OpenAI
Almacenes de agentes de Cursor Nuevo en 0.9.14 Una carpeta por conversación, en cursor-agents dentro de la carpeta de datos del relay (~/.oar/data/cursor-agents, %APPDATA%\oar\data\cursor-agents), o en la carpeta que indique CURSOR_AGENT_STORE_DIR. En la carpeta de estado en una instalación global; aparece aquí porque versiones anteriores los guardaban en otro sitio. Consulta Cursor
La CLI de Grok y su inicio de sesión ~/.grok
El envoltorio de la extensión de Copilot ~/.copilot/extensions/web-relay/, escrito por oar copilot u oar copilot --install-extension. Nuevo en 0.9.15 oar uninstall lo quita cuando es el que OAR escribió para esta instalación
Claude Cloud Nada en disco. Una sesión en la nube se ejecuta en Anthropic; sus resultados vuelven como ramas subidas
Archivos temporales El archivo de corta duración con la clave del proveedor mencionado arriba, en la carpeta temporal del sistema

Antes de 0.9.14, los almacenes de Cursor estaban de forma predeterminada en server/data/cursor-agents dentro de la carpeta del paquete, que una actualización reemplaza, así que una conversación podía perder su agente guardado y recibir uno nuevo (consulta Cursor). Una conversación cuyo almacén sigue en ese sitio antiguo lo sigue usando allí, y una con un almacén en ambos sitios usa el que se modificó por última vez; no se mueve ni se elimina nada.

El trabajo de tus agentes, los archivos de tus carpetas de proyecto, está completamente fuera del almacenamiento de OAR.

Un relay por carpeta de datos #

El relay crea relay-server.lock en la carpeta de datos cuando arranca y lo elimina cuando se detiene. El archivo contiene el número de proceso del relay, un hash de su token y su hora de arranque.

Si un segundo relay arranca sobre la misma carpeta de datos mientras el primero se ejecuta, el segundo imprime una línea y termina, Nuevo en 0.9.14 con el código 78 (antes, código 1), que el servicio de Linux no reintenta:

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

Relay appears to be owned by another live process en lugar de Relay already running significa que el relay en ejecución tiene otro token. Cuando no se puede determinar que el proceso que lo retiene sea un relay, la indicación dice If no relay is running, end process 4242 or delete the lock. oar start imprime la misma indicación después de The relay did not come up. El primer relay no se toca. Los mensajes quedan pendientes cuando el relay que esperabas no es el que se ejecuta; oar doctor muestra la configuración y la base de datos en uso.

Tras un fallo o un corte de corriente, el archivo de bloqueo se queda. Nuevo en 0.9.14 Un bloqueo de antes del último arranque del sistema, o cuyo número de proceso pertenece ahora a un proceso iniciado después de él, está obsoleto: el siguiente arranque lo aparta, registra Recovered stale singleton lock y asume el bloqueo. Esto ya no depende del reloj, así que un salto del reloj no hace que un relay en ejecución parezca desaparecido, y dos arranques que recuperan el mismo bloqueo no se ejecutan ambos. Un bloqueo que no se puede leer (uno vacío que dejó un corte de corriente) se vuelve a leer y cuenta como retenido salvo que su hora difiera en más de 10 segundos. oar start ya no elimina un bloqueo escrito por esta versión; sigue eliminando uno de una versión anterior cuando nada responde en el puerto del relay.

Dos relays pueden ejecutarse a la vez cuando tienen carpetas de datos y puertos separados. Consulta El comando oar para saber cómo encuentra oar el relay, y Reinicios y reanudación para saber qué conserva un reinicio.