OAR

Open Agent Relay

Toma el timón de tus agentes de código desde donde estés.

Un relay web autoalojado con el que controlas los agentes de código que corren en tu máquina desde cualquier navegador: el teléfono, la tablet o un segundo equipo.

curl -fsSL oar.sh/install | sh

Lee el script antes de ejecutarlo. En Linux y macOS no hace falta Node.js — el instalador trae el suyo si el tuyo falta o es demasiado antiguo. Windows necesita Node.js 22.13 o posterior.

autoalojadotu máquina, tus clavesMITsin telemetría en el relay

En uso

Trabajo real, desde donde estés

Están recreadas a partir del propio historial de OAR — un servidor de correo en Cloudflare y un juego multijugador, llevados desde el navegador. Lee lo que piensa el agente, responde a sus preguntas y corrige el rumbo en mitad del turn.

OAR en el teléfono: un agente informa de que tres subagents entregaron un cliente SMTP sin dependencias con 1.105 tests en verde, y la respuesta dice «probado y funciona» OAR en el teléfono: un agente informa de que tres subagents entregaron un cliente SMTP sin dependencias con 1.105 tests en verde, y la respuesta dice «probado y funciona»
En el teléfono — tres agentes entregaron un cliente SMTP mientras no estabas.
Vista de escritorio de OAR: el agente informa de que su propio deploy dejó inservibles todos los buzones, explica por qué lo provocó el orden de las migraciones y señala que los 37 tests de integración pasaron mientras producción estaba rota Vista de escritorio de OAR: el agente informa de que su propio deploy dejó inservibles todos los buzones, explica por qué lo provocó el orden de las migraciones y señala que los 37 tests de integración pasaron mientras producción estaba rota
«haz deploy» — dos palabras, y un agente que informa de su propio fallo, con todo detalle.
OAR con un bloque de Thoughts desplegado: el agente razona sobre cómo el input gating de los Durable Objects deja que una comprobación se cuele a través de un await, y después informa de que seis mensajes crearon seis objetos, ya corregido y con 78 tests en verde OAR con un bloque de Thoughts desplegado: el agente razona sobre cómo el input gating de los Durable Objects deja que una comprobación se cuele a través de un await, y después informa de que seis mensajes crearon seis objetos, ya corregido y con 78 tests en verde
Lee el razonamiento, no solo la respuesta — el thinking está en pantalla.
Tarjeta de pregunta de OAR: el agente pregunta qué debería hacer planDelivery con el correo que no pasa ni SPF ni DKIM, ofrece tres opciones y una respuesta libre, y la cabecera muestra una pregunta abierta Tarjeta de pregunta de OAR: el agente pregunta qué debería hacer planDelivery con el correo que no pasa ni SPF ni DKIM, ofrece tres opciones y una respuesta libre, y la cabecera muestra una pregunta abierta
Cuando necesita una decisión, pregunta — y espera, desde tu bolsillo.
OAR corrigiendo el rumbo de un turn en marcha: un mensaje anterior marcado como enviado a mitad del turn y resuelto junto con la respuesta, una nueva petición en curso con su botón Stop y un mensaje redactado junto al botón Steer OAR corrigiendo el rumbo de un turn en marcha: un mensaje anterior marcado como enviado a mitad del turn y resuelto junto con la respuesta, una nueva petición en curso con su botón Stop y un mensaje redactado junto al botón Steer
Corrige el rumbo a mitad del turn: tu siguiente idea se suma al trabajo que ya está en marcha.
Pregunta de selección múltiple en OAR: el agente pregunta qué eventos del buzón deben enviar un web push, tres de cuatro opciones están marcadas, la selección múltiple está activada y un botón envía la selección de una vez Pregunta de selección múltiple en OAR: el agente pregunta qué eventos del buzón deben enviar un web push, tres de cuatro opciones están marcadas, la selección múltiple está activada y un botón envía la selección de una vez
Algunas preguntas tienen más de una respuesta: márcalas todas y responde una sola vez.

Equipos de agentes

Un turn, toda la tripulación

Los agentes pueden repartir el trabajo entre subagents que corren en paralelo — y OAR los mantiene a todos en pantalla: el modelo en el que corre cada uno, el comando que está ejecutando ahora mismo, contador de tokens en vivo, el tiempo transcurrido y un botón Stop que funciona también desde el teléfono.

  • Las tareas en segundo plano siguen corriendo mientras lees, corriges el rumbo o te vas a otra cosa.
  • Cada subagent se puede seguir y cancelar por separado.
  • Funciona sin configurar nada con los sistemas de tasks de Claude y de Copilot, tanto agentes en segundo plano como shells desacopladas.
OAR muestra una sesión de Claude con tres subagents en segundo plano corriendo en paralelo sobre el cliente SMTP, la API y la ruta de envío, y la interfaz de ajustes — cada uno con su contador de tokens en vivo, el tiempo transcurrido y un botón Stop OAR muestra una sesión de Claude con tres subagents en segundo plano corriendo en paralelo sobre el cliente SMTP, la API y la ruta de envío, y la interfaz de ajustes — cada uno con su contador de tokens en vivo, el tiempo transcurrido y un botón Stop
Tres agentes repartiéndose un mismo trabajo — contadores de tokens en vivo y un botón Stop para cada uno.
OAR con tareas en segundo plano de Copilot: dos agentes en segundo plano sobre GPT-5.6-sol y Haiku 4.5 y una shell de Bash vigilada, cada uno con su comando actual, contador de tokens, tiempo transcurrido y botón Stop, bajo una respuesta de continuación en segundo plano OAR con tareas en segundo plano de Copilot: dos agentes en segundo plano sobre GPT-5.6-sol y Haiku 4.5 y una shell de Bash vigilada, cada uno con su comando actual, contador de tokens, tiempo transcurrido y botón Stop, bajo una respuesta de continuación en segundo plano
La misma tripulación en Copilot: agentes y shells en segundo plano, cada uno con su modelo y su Stop.

Sesiones vigiladas

Agentes que vigilan agentes

Un agente puede suscribirse a otras sesiones — en el mismo relay o en uno emparejado — y OAR lo despierta cuando allí pasa algo: una pregunta que espera respuesta, un error, una respuesta, una tarea en segundo plano que terminó, una sesión que se quedó en silencio. Nada de polling: OAR deja una nota breve en la conversación del agente que vigila, y el agente sigue a partir de ahí.

  • Las suscripciones solo avisan, nunca aprueban. Un evento no aprueba nada ni responde a nada; el agente puede hacer exactamente lo mismo que podía hacer antes.
  • La primera suscripción de una conversación la apruebas tú, en una tarjeta. Después, la cabecera muestra watching N sessions, con un Unsubscribe para cada suscripción.
  • También entre relays emparejados: cada evento indica de qué relay viene, y lo que pasó mientras la conexión estaba caída se reenvía después en una sola fila.
  • Una ráfaga de eventos llega como un solo mensaje, y una hora ajetreada se convierte en un resumen — las preguntas y los errores siguen llegando al momento.
  • Cuando los agentes hablan entre sí, la nota y la respuesta se pliegan en una sola fila, y el registro completo de cada subagent está a un clic.
OAR: una sesión de release vigila otras dos sesiones — una respuesta terminada llega como una fila compacta de evento del relay, la lista «watching 2 sessions» está abierta con Unsubscribe, y la petición del agente de vigilar también una sesión en un relay emparejado espera en una tarjeta con Allow y Deny OAR: una sesión de release vigila otras dos sesiones — una respuesta terminada llega como una fila compacta de evento del relay, la lista «watching 2 sessions» está abierta con Unsubscribe, y la petición del agente de vigilar también una sesión en un relay emparejado espera en una tarjeta con Allow y Deny
Una sesión vigila otras dos: sus eventos llegan como filas compactas, y una suscripción nueva espera tu Allow.
OAR: una respuesta lista los dos subagents que lanzó, con modelo, tokens y duración; debajo, un prompt del agente de un relay emparejado y su respuesta, plegados en una sola fila: «note from ci-box · Benchmark nocturno · replied» OAR: una respuesta lista los dos subagents que lanzó, con modelo, tokens y duración; debajo, un prompt del agente de un relay emparejado y su respuesta, plegados en una sola fila: «note from ci-box · Benchmark nocturno · replied»
Los subagents rinden cuentas como filas que abren su registro completo; la nota del agente de otro relay y su respuesta se pliegan en una sola línea.

Runtimes

Un relay, ocho runtimes

Elige la runtime en cada conversación. Una queue, un historial, una sola interfaz.

Vista de escritorio de OAR con un chat de DeepSeek en deepseek-flash y modo Agent: el prompt pide las noticias más importantes de hoy sobre DeepSeek con fuentes; la respuesta da tres viñetas cortas y seis enlaces a la documentación de la API de DeepSeek, y su actividad de herramientas muestra tres llamadas a WebSearch, una de ellas en chino Vista de escritorio de OAR con un chat de DeepSeek en deepseek-flash y modo Agent: el prompt pide las noticias más importantes de hoy sobre DeepSeek con fuentes; la respuesta da tres viñetas cortas y seis enlaces a la documentación de la API de DeepSeek, y su actividad de herramientas muestra tres llamadas a WebSearch, una de ellas en chino
También DeepSeek: Claude Code sobre la API de DeepSeek, aquí con deepseek-flash. Tres búsquedas web, una de ellas en chino, y una respuesta con sus fuentes.

Temas

Día y noche

OAR tiene un modo Día y un modo Noche, y cada captura de esta página sigue el selector de la barra superior. Arrastra el divisor para comparar los dos; el teléfono de al lado muestra el modo en el que esta página no está.

Vista de escritorio de OAR con una respuesta que incluye un bloque de código coloreado: la misma pantalla en modo Día a la izquierda y en modo Noche a la derecha de un divisor móvil
Una respuesta con un bloque de código: Día a la izquierda, Noche a la derecha. Arrastra el divisor o usa las flechas del teclado.
OAR en un teléfono en modo Día: la misma respuesta con su bloque de código OAR en un teléfono en modo Noche: la misma respuesta con su bloque de código
La misma conversación en un teléfono, en el modo en el que esta página no está.

Funciones

Lo que te llevas

Consumo del plan

Saber cuánto te queda del plan

OAR sigue el consumo de cada proveedor y lo reúne todo en un solo modal. Abre «Ver consumo» en mitad del turn y verás si una tarde entera de agentes todavía te cabe en el plan — antes de que el proveedor te frene, y desde la misma pestaña del navegador en la que llevas los agentes.

  • Suscripciones de Claude: la ventana de sesión de 5 horas, los límites semanales y lo que costó la sesión por modelo.
  • Copilot: la cuota de Premium Requests y el detalle por turn del worker del SDK — AI credits, tokens, llamadas al modelo.
  • DeepSeek: el saldo, un presupuesto mensual opcional, el gasto estimado por día y por modelo, y las búsquedas web contadas.
  • Claude API: el gasto estimado de hoy y del mes por modelo, y un límite mensual opcional como barra.
  • Cursor y Grok tienen sus propias tarjetas, alimentadas por el mismo panel.
  • Las cifras vienen del reporte de los propios workers y de las APIs de cuota de los proveedores, y se actualizan mientras trabajas.
Modal de consumo de OAR en el teléfono, tarjeta de Claude con plan Max: la ventana de sesión de 5 horas al 72 por ciento, el límite semanal al 41 por ciento, el Opus semanal al 23 por ciento y el desglose del coste de la sesión por modelo Modal de consumo de OAR en el teléfono, tarjeta de Claude con plan Max: la ventana de sesión de 5 horas al 72 por ciento, el límite semanal al 41 por ciento, el Opus semanal al 23 por ciento y el desglose del coste de la sesión por modelo
Claude en Max, en el teléfono — un 72 % de la ventana de 5 horas, y lo que costó la sesión por modelo.
Modal de consumo de OAR, tarjeta de GitHub Copilot con plan Pro+: 1.062 de 1.500 Premium Requests gastadas, cuota del plan al 31 por ciento, chat y autocompletado ilimitados, y el detalle del último turn del worker del SDK con AI credits, tokens y llamadas al modelo Modal de consumo de OAR, tarjeta de GitHub Copilot con plan Pro+: 1.062 de 1.500 Premium Requests gastadas, cuota del plan al 31 por ciento, chat y autocompletado ilimitados, y el detalle del último turn del worker del SDK con AI credits, tokens y llamadas al modelo
Copilot en Pro+ — 1.062 de 1.500 Premium Requests gastadas, y el detalle por turn del worker del SDK hasta los tokens y las llamadas al modelo.
Modal de consumo de OAR, tarjeta de DeepSeek: 6,60 $ gastados de un saldo inicial de 25,00 $, 5,97 $ de un presupuesto mensual de 10,00 $, un gráfico de 30 días con el gasto diario de DeepSeek Flash y DeepSeek V4 Pro, el gasto dividido en aciertos de caché, fallos de caché y salida, y el gasto estimado por modelo con una fila Search que cuenta 6 búsquedas Modal de consumo de OAR, tarjeta de DeepSeek: 6,60 $ gastados de un saldo inicial de 25,00 $, 5,97 $ de un presupuesto mensual de 10,00 $, un gráfico de 30 días con el gasto diario de DeepSeek Flash y DeepSeek V4 Pro, el gasto dividido en aciertos de caché, fallos de caché y salida, y el gasto estimado por modelo con una fila Search que cuenta 6 búsquedas
DeepSeek: el saldo frente a tu saldo inicial, un presupuesto mensual, el gasto por día y por modelo, y cada búsqueda web contada.
Modal de uso del contexto de OAR: 318,4k tokens usados con una ventana de compactación de 1M, desglosados en sistema y herramientas, mensajes, espacio libre y la reserva de auto-compact, con el control deslizante de la ventana de auto-compact e interruptores para el thinking y para el texto del thinking Modal de uso del contexto de OAR: 318,4k tokens usados con una ventana de compactación de 1M, desglosados en sistema y herramientas, mensajes, espacio libre y la reserva de auto-compact, con el control deslizante de la ventana de auto-compact e interruptores para el thinking y para el texto del thinking
También la ventana de contexto — y si Claude piensa, y si tú lo lees.

Una salvedad, sin rodeos: esto no es una factura. Las cifras de cuota vienen de los proveedores, pero el coste de la sesión lo estima OAR en el cliente a partir del recuento de tokens — léelo como un indicador, no como una liquidación.

Instalación

Inicio rápido

  1. Necesitas al menos una CLI de proveedor que ya uses (Copilot, Claude, Cursor o Grok — o una clave de API de OpenAI, DeepSeek o la Claude Console). En Linux y macOS no hace falta nada más; en Windows, además, Node.js ≥ 22.13.
  2. Ejecuta el comando de una línea. En Linux y macOS te dice qué va a hacer y pregunta una sola vez. Usa tu Node.js si es lo bastante nuevo y, si no, descarga uno solo para OAR; luego instala @oar-sh/oar en tu carpeta personal — nada necesita root. La ruta de macOS aún no está probada.
  3. Escribe la configuración con un token de autenticación nuevo, arranca el relay e imprime la URL del relay con un código QR — ábrela y ya estás dentro. Donde systemd tiene sesión de usuario, el relay corre como servicio y vuelve tras un reinicio. En Windows el instalador pasa el relevo a oar setup, que pregunta por el token, el acceso y el puerto; después arrancas el relay con oar start.
  4. Opcional y desactivado por defecto: acceso por LAN para que tu teléfono conecte directamente — oar setup lo activa — y un túnel para entrar desde fuera de tu red, que se define en la configuración y usa el cloudflared que instales tú. A partir de ahí, oar a secas abre un menú con arrancar, parar, reiniciar, estado, URL y servicio; la sesión de terminal de Copilot es oar copilot.

Siguiente: Primer arranque en la documentación — iniciar sesión, abrir el relay en tu teléfono y todo lo que viene después.

Confianza

Seguridad, sin rodeos

OAR corre en tu hardware y por defecto solo escucha en localhost. El token de autenticación se genera en local y no sale nunca de tu máquina; el acceso remoto es opcional y pasa por un túnel que controlas tú. Y conviene decirlo claro: los agentes que pasas por el relay corren con los permisos de tu usuario — OAR te da alcance, no un sandbox.

FAQ

Preguntas, respondidas

¿Necesito una suscripción a Copilot?
No. Con una sola runtime basta — OAR pasa por el relay los agentes que ya tengas.
¿Puedo escribirle a un agente mientras trabaja?
Sí. Con Claude y con el motor del SDK de Copilot (el predeterminado), lo que envías se suma al turn en curso en lugar de esperar a que termine. Si el agente está esperando tu respuesta a una pregunta, tu mensaje se pone en cola y va justo después.
¿Funciona en Windows?
Sí. El relay corre en Windows, macOS y Linux; el lado del navegador, en cualquier parte.
¿OAR envía mi código a algún sitio?
OAR no envía nada por su cuenta. Tu código va solo a los proveedores de modelos que invocas, igual que iría desde sus propias CLIs.
¿Cómo funcionan las actualizaciones?
Comprobar es opcional — el relay no contacta con nada hasta que lo activas en Ajustes o pulsas «Comprobar ahora». Cuando aparece una versión, tocas para actualizar; solo se reinicia si no hay ningún agente en mitad de un turn. Nunca de forma automática.
¿Puedo levantarlo en un VPS o en mi homelab?
Sí — donde corra Node. Guarda bien el token de autenticación y usa un túnel antes que un puerto abierto.

Changelog

Novedades

  1. 0.9.19

    • Un relay que se queda sin memoria vuelve a arrancar solo en lugar de quedarse caído. Ahora arranca con un límite de heap, el 60 % de la RAM entre 2048 y 8192 MB, que fija heapLimitMb en config.json, y escribe una instantánea del heap en diagnostics, en su carpeta de datos, cuando se acerca a ese límite. Una instantánea del heap contiene el token de autenticación y las claves de API del relay: nunca compartas una tal cual. El registro muestra la memoria del relay cada 10 minutos y cuando el heap supera el 80 % del límite.
    • Las sesiones de agentes pueden usar los proveedores que añada una actualización posterior del relay, sin reiniciarse: relay_tool acepta cualquier id de proveedor, y el relay lo comprueba con su lista actual y nombra esa lista cuando rechaza uno.
    • Copilot rechaza el id de modelo de otro proveedor, como claude-opus-5-5 para el claude-opus-5.5 de Copilot, con COPILOT_MODEL_UNAVAILABLE y la coincidencia más cercana antes de crear nada.
    • Todos los cambios están en las notas de la versión.
  2. 0.9.18

    • Los chats de Claude pueden funcionar con una clave de API de Claude Console. Claude API es un proveedor junto a Claude (tu suscripción), facturado a la organización de Console a la que pertenece la clave. Settings → Providers → Claude API guarda la clave, el modelo predeterminado y un límite opcional de gasto mensual en dólares estadounidenses; la clave se guarda en la máquina del relay y no se vuelve a mostrar. New Chat ofrece Claude API, y sus chats llevan una etiqueta dorada «Claude API».
    • Un chat de Claude cambia entre tu suscripción y la clave con el selector Subscription | API key y conserva su sesión de Claude Code. El cambio se aplica desde el siguiente turno; el primer turno con la clave no tiene caché de prompts y cuesta más. Cuando un chat de suscripción está en pausa por el límite de uso de Claude, el banner ofrece el cambio si el chat puede pasar a la clave, y el turno en pausa sigue de inmediato con la clave. Nada cambia por sí solo, y los agentes pueden cambiar la facturación de una sesión con relay_tool send.
    • La vista de uso tiene una tarjeta de Claude API: lo que se estima que han costado hoy y este mes los turnos de este relay con la clave, por modelo, con los tokens, y el límite mensual como barra si lo defines. Las cifras son la propia estimación de Claude Code; las reales están en la página de facturación de la Console. Cuando la estimación del mes alcanza el límite, ningún turno nuevo se ejecuta con la clave, se rechaza el cambio a la clave y un chat nuevo de Claude API recibe CLAUDE_API_CAP_REACHED; New Chat ofrece entonces Start on subscription. Un turno que ya está en marcha termina.
    • Los chats de DeepSeek y de Claude API empiezan con todos los hooks desactivados, así que en ellos no se ejecutan hooks ni línea de estado, y los ajustes de una carpeta no pueden volver a activarlos. Los hooks de los ajustes gestionados (managed settings) siguen ejecutándose, y los chats con tu inicio de sesión de Claude conservan sus hooks y su línea de estado.
    • Un chat de suscripción nunca funciona con una clave de API que le pasen los ajustes de Claude Code (env.ANTHROPIC_API_KEY, un apiKeyHelper o un inicio de sesión de Console). El turno se detiene al arrancar Claude Code, con una nota que nombra el origen y el ajuste que hay que quitar; como mucho, puede salir antes una petición al modelo.
    • La herramienta de agente del relay se llama ahora relay_tool (en Claude, mcp__relay__relay_tool), con las mismas acciones y campos. Si tus propias instrucciones, reglas de permisos o hooks nombran remote_relay, cámbialos: fuera del servidor MCP de OAR, el nombre antiguo se rechaza.
    • Todos los cambios están en las notas de la versión.
  3. 0.9.17

    • DeepSeek es un proveedor propio. Pega una clave de API de DeepSeek en Settings → Providers → DeepSeek y New Chat ofrece los modelos de DeepSeek. Un chat de DeepSeek ejecuta Claude Code en la máquina del relay contra la API de DeepSeek, con los cuatro modos, herramientas, tarjetas de preguntas, subagentes, corrección del rumbo y tareas en segundo plano, reasoning effort low, high o max y la ventana de contexto de 1M.
    • La clave se guarda en la máquina del relay, nunca se envía a un navegador y solo llega a los workers de DeepSeek. Un .claude/settings.json o .claude/settings.local.json en la carpeta del chat no puede desviar la clave a otro sitio. Esto cubre los ajustes, no los comandos: los hooks y una línea de estado en esos archivos siguen ejecutándose como el usuario del relay, como en cualquier chat de Claude Code, así que usa los chats de DeepSeek solo en carpetas de confianza.
    • La vista de uso tiene una tarjeta de DeepSeek: el saldo de la cuenta, el gasto estimado de los turnos de DeepSeek de este relay por modelo, según los precios publicados de DeepSeek con horas punta y valle, el gasto diario de los últimos 30 días y un presupuesto mensual si lo defines. Import usage export en la pestaña DeepSeek pone en la tarjeta las cifras de DeepSeek para los días que cubre la exportación.
    • Una sesión nueva en un grupo aparece arriba del grupo. El orden que fijaste se mantiene.
    • Las credenciales de Anthropic del propio relay ya no llegan a los agentes que inicia: ANTHROPIC_API_KEY y ANTHROPIC_AUTH_TOKEN no llegan a ningún worker, y un token de inicio de sesión de Claude en el entorno del relay solo llega a los workers de Claude y Claude Cloud. Los chats de Claude que funcionaban con una clave así ahora usan el inicio de sesión de Claude del host.
    • Corrección: la Inbox se abre arriba o donde la dejaste; en un teléfono, la cabecera de la sesión ocupa dos filas; los modelos de imagen de OpenAI vuelven a funcionar en el motor SDK.
    • Todos los cambios están en las notas de la versión.
  4. 0.9.16

    • Los agentes pueden hacerte una pregunta sin detener su trabajo. La nueva Inbox de la barra lateral reúne en un solo lugar todas las preguntas abiertas de este relay y de sus relays emparejados. Respondes allí o en la sesión; las tarjetas de aprobación de un relay emparejado se abren en ese relay.
    • Los agentes pueden programar prompts, una vez o cada pocos minutos, y el relay los conserva tras un reinicio. La cabecera de una conversación lista sus prompts programados, cada uno con un botón Cancel.
    • Los agentes pueden cambiar el modelo, el modo, el título, el grupo o la carpeta de trabajo de otra sesión. Una sesión que no iniciaron necesita antes tu Allow.
    • Los agentes pueden poner las sesiones que inician en tus grupos de sesiones, y un agente que vigila sesiones puede pedir que se le despierte menos: un resumen cada pocos minutos, horas de silencio o sesiones excluidas.
    • Un nuevo interruptor en los ajustes 🧠 de una sesión que inició un agente permite que sus agentes inicien sesiones propias.
    • Corrección: los eventos del relay y otros mensajes automáticos ya no cuentan como mensaje tuyo, así que los agentes que se envían prompts entre sí te preguntan antes.
  5. 0.9.15

    • En Windows, oar setup pregunta cómo arranca el relay: al iniciar sesión, al encender el equipo antes de que nadie inicie sesión (una petición de administrador) o nunca. oar autostart signin|boot|off|status lo cambia más tarde y muestra lo que hay configurado.
    • oar uninstall detiene el relay, quita las entradas de inicio automático que creó OAR y después el paquete. Tu configuración, tus conversaciones y tus archivos subidos se quedan, y dice dónde; --purge también los borra, después de que escribas delete.
    • Rechazar la petición de administrador no cambia nada, y el modo de arranque funciona con un espacio, un apóstrofo o letras no ASCII como la ü en la ruta del perfil.
    • Una tarea de inicio automático hecha a mano, o una que solo un administrador puede leer, nunca se borra ni se sustituye sin una copia: OAR se detiene y pide --replace, que guarda antes una copia. En 0.9.14, pasar al modo de arranque podía borrar una tarea así sin copia.
    • El paquete de npm es más pequeño: los dos README para desarrolladores están solo en GitHub.
  6. 0.9.14

    • Antes de actualizar desde 0.9.13 con el inicio automático de Windows, o un relay que inició un simple gh copilot: esos relays guardaban sus conversaciones dentro del paquete instalado, y una actualización las borra con él. Cierra todas las sesiones de gh copilot y ejecuta oar stop (si el relay sigue en marcha, termina su node.exe en el Administrador de tareas), copia las carpetas server\data y server\uploads del paquete a un lugar seguro y actualiza después con npm i -g @oar-sh/oar --allow-scripts=@oar-sh/oar,better-sqlite3,koffi; nunca con --ignore-scripts. Todos los pasos están en las notas de la versión.
    • Los relays del inicio automático y de gh copilot usan ahora los mismos datos que oar start, fuera del paquete. Una actualización copia los datos que una versión anterior guardaba en el paquete antes de que npm lo elimine, y el relay los adopta en su siguiente inicio. No se borra nada, y si el relay no puede saber qué base de datos es más reciente, se detiene y lo dice.
    • Un bloqueo del relay que dejó un fallo o un corte de luz ya no impide el siguiente inicio, y dos inicios ya no se ejecutan a la vez. El inicio automático de Windows espera hasta 5 minutos a %TEMP% y a la unidad de los datos, así que un disco RAM o una unidad que se monta tarde ya no lo hacen fallar.
    • Las conversaciones de Cursor conservan su agente entre actualizaciones, los archivos subidos siguen el dataDir de la configuración y oar setup --migrate-from funciona aunque el instalador ya se haya ejecutado.
    • Los agentes pueden pedir que se les despierte cuando el relay vuelve a funcionar (relay_restarted), para que su trabajo siga tras un reinicio. La herramienta de previsualización de un agente lista y cierra solo las previsualizaciones de su propia conversación.
    • Las tarjetas de aprobación se responden con un clic, no con texto: un «yes» escrito en un cuadro de respuesta ya no cuenta como denegación.
    • Correcciones: una conversación cuya carpeta se borró o renombró lo dice, en lugar de culpar a la CLI; responder a una pregunta ya no hace que un turn largo se reenvíe; un subagente reanudado abre su registro y aparece en la lista mientras se ejecuta; cada modelo de Cursor que admite un esfuerzo de razonamiento lo recibe.
  7. 0.9.13

    • Reinicios del relay: 🌄 Restart web relay muestra primero los turns en curso que esperaría, los mensajes que retendría y las tareas en segundo plano, cada una indicando si sigue en marcha; Restart when idle lo deja en cola y Restart now no espera. Mientras espera, cada página muestra un aviso con las sesiones, el tiempo de espera, Restart now y Cancel restart.
    • Un reinicio en cola ya no espera para siempre: tras el tiempo que fijes en Settings › General (30 minutos por defecto), el aviso y una notificación push preguntan si reiniciar ya, seguir esperando o cancelar. Nunca se reinicia solo mientras haya turns en curso.
    • Opcional en Settings › General: tras un reinicio del relay, una sesión cuyo turn quedó cortado recibe una breve nota para revisar qué estaba haciendo y continuar. Tu mensaje nunca se envía dos veces.
    • La consola de tareas sobrevive a un reinicio del relay: las filas terminadas vuelven con su ✓ o ✘, y la salida de un comando en curso se lee al instante. Marca dónde un | tail retiene la salida, con la sugerencia de registrarla en un archivo, y en una pantalla ancha la fila de la tarea, con su Stop, sigue visible debajo.
    • Load earlier está también en la cabecera de la consola, una ejecución de pruebas se cuenta sobre todo su registro en lugar de los últimos 64 KB, y las etiquetas RUN, PASS y FAIL de vitest se ven rellenas.
    • Un mensaje enviado sin modelo, por un script o un agente, conserva el modelo, el esfuerzo y el modo de la conversación en lugar de pasar al primer modelo de la lista. remote_relay rechaza un modelo que el proveedor no ofrece y sugiere el más parecido («did you mean 'gpt-5.4'?»).
    • Los agentes que observan ya no se despiertan con cada comando de shell que termina bien: por defecto se enteran de los subagentes terminados y de las tareas fallidas. Con task_finished reciben, como antes, el final de cada tarea.
    • Correcciones: los workers se reconectan tras un reinicio del relay aunque su conexión se quede colgada; las credenciales en la descripción y el resumen de una fila de tarea se ocultan; un desplazamiento justo después de cargar mensajes anteriores ya no se deshace, y el botón ⌄ cuenta un mensaje que llega justo al subir; el panel de tareas ya no se encoge un instante; las pruebas unitarias vuelven a pasar en Windows.
  8. 0.9.12

    • Consola de tareas: haz clic en un comando o monitor en segundo plano del panel de tareas para leer su salida en vivo — con colores, credenciales ocultas, barras de progreso en su último estado, Load earlier para retroceder por todo el registro y un Stop propio. Los shells y monitores en segundo plano de Claude, los shells separados y adjuntos de Copilot y los terminales de Grok abren una.
    • Tareas silenciosas y ejecuciones de pruebas: una fila indica «no output for 12 min», en ámbar tras el tiempo que elijas en Settings › General (10 minutos por defecto), y una ejecución de pruebas (vitest, Playwright, node:test, jest, pytest) muestra una etiqueta ✓ 412 ✘ 2 que, al pulsarla, salta al primer fallo.
    • Los comandos en segundo plano de Claude pueden durar 2 horas por defecto, hasta 8 (Settings › Providers › Claude), y se indica a Claude que registre las ejecuciones largas en un archivo y que inicie con nohup las que deban sobrevivir a un reinicio.
    • Las filas de los subagentes cuentan sus pasos, y los agentes leen la salida de una tarea en un relay emparejado con remote_relay read_task_output.
    • Las conversaciones largas se abren y retroceden rápido: el relay lee solo la página que pides, por larga que sea la conversación.
    • Al volver a una conversación, o al recargar la página, vuelves al mensaje que estabas leyendo, con las páginas anteriores incluidas. Settings › General fija cuántos mensajes conserva cada conversación para ello.
    • La lista de conversaciones muestra la actividad por color: el título de una sesión que trabaja sigue en verde brillante, una inactiva pasa a un verde más oscuro, y los puntos animados desaparecen.
    • Correcciones: los mensajes nuevos ya no se saltan los intermedios mientras lees muy arriba en el historial — esperan, contados en el botón ⌄, y se cargan en orden al bajar; un mensaje que envías desde allí te lleva al final; las imágenes que cargan tarde ya no desplazan hacia abajo el texto que lees; las tareas en segundo plano de Copilot informan de cómo terminaron, con el código de salida, en lugar de «unknown».
  9. 0.9.11

    • Grupos de sesiones: una sesión que inicia un agente se coloca bajo la sesión que la inició, con una etiqueta que resume el grupo («3 · 1 waiting for you, 2 running»). Los grupos se pliegan cuando todo lo que contienen ha terminado, se pueden nombrar, archivar o detener enteros, y una pregunta en un miembro plegado aparece en la fila de cabecera.
    • Arrastrar y soltar: arrastra sesiones a un grupo, fuera de él o a un nuevo orden; suelta una sesión sobre otra para crear un grupo nuevo. En el móvil, pulsación larga y mover; con el teclado, Move up y Move down.
    • Settings › Sharing lista cada enlace compartido con Copiar, Renovar y Dejar de compartir, y un registro de accesos de cada apertura — hora, país, navegador y la dirección IP, salvo que la desactives.
    • Los enlaces compartidos se guardan tus rutas: mostrarlas, dejar solo los nombres de archivo u ocultar ambos. Preview as shared muestra lo que recibe quien lo ve, y una lista 🙈 reúne los mensajes ocultos a los espectadores.
    • Seguridad: diez tokens erróneos bloquean una dirección durante un minuto, el canal en vivo solo acepta el propio origen del relay, las cabeceras reenviadas solo cuentan si vienen de un proxy de confianza, y ?token= solo inicia sesión en la página. Detrás de un proxy inverso en otro host, configura trustProxy y allowedOrigins.
    • Day/Night vuelve al menú ⋯, junto al nuevo About OAR: versión, proveedores, totales y el estado del relay de un vistazo.
    • Correcciones: los enlaces de vista previa sobreviven a un reinicio del relay, un reinicio ya no olvida las tareas en segundo plano en curso, los workers se reconectan tras un reinicio y arrancan sin node en el PATH, una conversación ya no se desplaza mientras lees más arriba, y las tablas anchas del lector se desplazan en su propio recuadro.
  10. 0.9.10

    • Agentes que vigilan agentes: un agente se suscribe a otras sesiones, en su propio relay o en uno emparejado, y lo que pasa allí lo despierta — una pregunta que espera respuesta, un error, una respuesta, una tarea en segundo plano que terminó, una sesión que se quedó en silencio. Las suscripciones solo avisan; no aprueban nada. La primera de una conversación te pide confirmación en una tarjeta, y la cabecera muestra watching N sessions con un Unsubscribe para cada suscripción.
    • Abre el registro completo de un subagent: su razonamiento, cada llamada a herramienta con su entrada y su resultado, y su respuesta, en directo mientras trabaja. En Settings → General eliges cuánto tiempo se guarda la salida de las herramientas.
    • Las notas entre agentes se pliegan en una sola fila que, al abrirla, muestra el prompt y la respuesta. Los agentes pueden consultar cuánto le queda al plan de cada proveedor y ver si una sesión está trabajando, ocupada en segundo plano o inactiva.
    • El explorador de archivos crea carpetas, y renombra y borra archivos y carpetas — con clic derecho, o con una pulsación larga en el móvil.
    • Un botón ⌄ te devuelve al último mensaje y cuenta lo que llegó mientras tanto; la vista sigue el ritmo de una respuesta que llega en streaming y de una tarea en segundo plano que acaba de arrancar.
    • Archivar una sesión cuyo proceso sigue en marcha pregunta primero, y Ajustes ya se abre antes del primer chat.
    • Correcciones: un websocket cortado ya no puede tumbar el relay, ⌄ ya no abre el teclado en el móvil, un reinicio del relay en cola ya no espera para siempre en un relay ocupado, despertar la máquina de la suspensión ya no reinicia los turns en curso, un turn de Cursor que espera a un comando largo ya no se da por atascado, y un mensaje enviado justo después de cambiar de conversación aparece donde se envió.
  11. 0.9.9

    • oar a secas abre un menú: muestra si el relay está en marcha, con versión, URL, puerto, acceso y servicio, y ofrece arrancar, parar, reiniciar, URL y código QR, ajustes, servicio, actualizar y doctor. Comandos nuevos: oar stop, oar restart, oar status, oar url y oar service; la sesión de terminal de Copilot es oar copilot. oar setup pregunta por el acceso (solo esta máquina o LAN) y el puerto, y un ajuste cambiado llega al relay en marcha.
    • Los archivos llenan la pantalla: imágenes, vídeo y audio sobre negro, texto en una columna cómoda de leer. Desliza por una carpeta o por los medios de un chat, las flechas hacen lo mismo; un PDF se abre en el visor del propio navegador, el audio se reproduce en el visor, y el gesto de atrás cierra el visor y nada más.
    • Fija mensajes: cada mensaje tiene un botón Pin junto a Hide (en el móvil, un toque en la burbuja los muestra); una conversación con mensajes fijados muestra en su cabecera un botón 📍 con el número, y la lista te lleva al mensaje, aunque esté muy arriba en el historial.
    • Descargar entrega el archivo tal como está ahora: el enlace lleva la versión del archivo, el nombre guardado lleva la hora del último cambio, y ninguna caché entre el relay y tú puede quedarse con una respuesta de la API.
    • El túnel de Cloudflare integrado usa el cloudflared que hayas instalado; la copia incluida desaparece. Si usabas el túnel, instala cloudflared tras actualizar — el relay arranca el túnel en cuanto lo encuentra.
    • SDK de los proveedores: Copilot SDK 1.0.17, Claude Agent SDK 0.3.292, Cursor SDK 1.0.36.
    • Correcciones: un PDF vuelve a abrirse en el visor del navegador, los archivos de audio y los SVG se sirven como lo que son, el vídeo subido permite saltar en el tiempo, un archivo con nombre en japonés, chino o con emoji vuelve a servirse, y un salto al historial se queda donde aterrizó.
  12. 0.9.8

    • OAR tiene logo: una nutria. La pantalla de inicio, el cuadro de acceso, el icono de la pestaña y el de la app instalada siguen los modos Día y Noche, y el tema se aplica antes del primer pintado.
    • La app instalada arranca en un solo movimiento: su pantalla de inicio continúa la pantalla de lanzamiento del teléfono.
    • Mientras una sesión de Claude compacta su contexto, aparece la línea Compacting context… sobre el turn en curso; al terminar dice Context compacted con el número de tokens.
    • Cambiar la ventana de auto-compact ahora sí se aplica: la sesión se reinicia una vez, cuando no hay nada en marcha en ella, y la respuesta lo indica.
    • El instalador de Linux y macOS termina el trabajo: una sola confirmación, su propio Node.js si el tuyo falta o es demasiado antiguo, sin root, y el relay en marcha al final. Nuevo: oar start y oar setup --start.
    • Las barras de desplazamiento se agarran mejor con el ratón: la barra duplica su ancho mientras el puntero está encima.
  13. 0.9.7

    • Claude Cloud (experimental, desactivado por defecto): un chat que ejecuta Claude Code en un sandbox de Anthropic sobre su propio clon de un repositorio de GitHub. Elige repositorio y rama de una lista, sigue el turn en directo, responde a sus preguntas, detenlo, cambia de modelo entre turns; los resultados vuelven como ramas subidas.
    • Archiva una conversación en lugar de borrarla, y haz clic derecho sobre una conversación (pulsación larga en el móvil) para abrir un menú: abrir, renombrar, detener, matar, archivar, borrar.
    • Sesiones de agente: un agente puede iniciar otras sesiones en el relay en el que corre, esperarlas y leer sus resultados, cuando lo actives.
    • Los commits y pull requests de las sesiones de Claude llevan Co-authored-by: Open Agent Relay (modelo); elige OAR, las líneas de Claude Code o ninguna, por relay y por carpeta.
    • Check Usage se abre al instante con la última lectura y solo lee en directo la pestaña abierta.
    • Correcciones: dos precios en un mismo párrafo ya no se muestran como una fórmula, una respuesta que nombra un código de error ya no se guarda como un turn fallido, y en Windows el relay ya no se queda parado mientras lee la lista de procesos.
  14. 0.9.6

    • Las sesiones de Claude se pausan al llegar al límite de uso y siguen cuando el límite se renueva: un banner indica cuándo, con Resume now y Cancel, y la pausa sobrevive a un reinicio del relay. Si la renovación queda a más de seis horas, te espera a ti, y un segundo banner avisa al 90 % de un límite.
    • Un comando que no imprime nada ya no hace fallar su turn (Copilot, Cursor, Grok): un turn puede quedarse en silencio 2 minutos sin nada en curso, 5 durante una petición al modelo y 30 mientras corre una herramienta.
    • Los turns de Copilot que fallan, fallan bien: el fallo aparece al instante con el texto del agente encima, Stop funciona en un turn atascado, una respuesta terminada sobrevive a un reinicio del relay, los comandos de una runtime caída se detienen y un mensaje enviado mientras corre un comando espera a que termine.
    • Los agentes de relays emparejados pueden responderse entre sí durante toda una sesión; tras 30 prompts de agente a agente sin una palabra tuya, el siguiente te pregunta antes.
    • Los subagents se pliegan en una cabecera de una línea dentro del turn en curso, y el tablero del plan aparece dentro de la respuesta a la que pertenece — tu elección también fija el modo de la sesión.
    • Las notas de error ya no aconsejan reiniciar el relay, y el relay guarda su consola en relay-console.log.
  15. 0.9.5

    • Una respuesta de Claude publicada como continuación en segundo plano, en lugar de bajo tu mensaje, ya no bloquea la conversación hasta 5 minutos. Tu mensaje se cierra tras unos 45 segundos de silencio, con una pequeña nota que señala esa respuesta.
    • Los agentes pueden fijar el reasoning effort de una sesión que inician en otro relay o a la que le envían un prompt.
    • Esperar la respuesta de otro relay ya no se queda en una respuesta intermedia mientras el agente remoto sigue trabajando.
    • Los workers de sesión en Windows ahora escriben su propio log, igual que en Linux.
  16. 0.9.4

    • Relays remotos: empareja dos relays en Settings → Relays y un agente en uno podrá listar, leer, enviar prompts e iniciar sesiones en el otro.
    • Un relay emparejado solo se desbloquea en una conversación cuando lo mencionas. Tú fijas los límites de cada relay, en los modos Ask y Plan las acciones de escritura te piden permiso antes, y los tokens se quedan en el relay.
    • Grok y el motor de la extensión de Copilot reciben herramientas de verdad a través del nuevo servidor MCP de OAR.
    • Sigue la respuesta en curso: tres interruptores mantienen a la vista su thinking, su respuesta o su lista de herramientas mientras crece.
    • Suspend host (Windows) espera a que terminen los agentes, las tareas en segundo plano y las ejecuciones de CI, y Stop pregunta antes de cancelar un turn.
    • Arreglado: cambiar el modelo de Claude ya no deja atascado el siguiente mensaje, y las conexiones inactivas siguen abiertas 65 segundos.
  17. 0.9.3

    • Corrige el rumbo de un turn en marcha: escribe mientras el agente trabaja, en Claude y en Copilot, y tu mensaje se suma al turn.
    • Los agentes y shells en segundo plano de Copilot aparecen en el panel de tareas, con su modelo, la llamada a herramienta en curso y un Stop que funciona.
    • Las preguntas admiten varias respuestas.
    • Los borradores están a salvo entre dispositivos: un dispositivo inactivo ya no sobrescribe lo que estás escribiendo.
    • Un filtro por título busca en todas las conversaciones, y el teléfono conserva tu posición al girarlo.
    • Borrar una conversación también detiene su worker y elimina la sesión de la CLI que OAR creó para ella.
  18. 0.9.2

    • Autoactualización, opcional: actualiza desde Ajustes o con oar update. Nada busca versiones hasta que tú lo pides.
    • Copilot corre por defecto sobre el motor de workers del SDK.
    • Imágenes, vídeo y audio se incrustan dentro de las respuestas del agente — tócalos para abrirlos, hacer zoom o descargarlos.
    • El catálogo de modelos de Copilot ya es correcto: ventanas de contexto reales y reasoning effort por modelo.
    • Windows puede arrancar el relay al encender el sistema, antes de que nadie inicie sesión.
    • Una tanda de arreglos de fiabilidad en sesiones, cola y workers.
  19. 0.9.1

    Arreglado el binario global: oar ya se resuelve tras instalar.

  20. 0.9.0

    Primera versión como OAR — Open Agent Relay.

Todas las notas de versión en GitHub