devin-remote y el contrato de creación para orquestadores personalizados.
Autenticación
Outposts está dentro del ámbito de tu cuenta y se comparte entre todas sus organizaciones.
CLI
devin worker start
devin-remote correcto y atiende las sesiones. Ejecútalo desde el directorio que contiene los repositorios clonados de la sesión.
El Environment del worker también puede incluir
DEVIN_CHROME_PATH para hacer que las sesiones usen un binario de Chrome/Chromium para las funciones del navegador.
devin worker outpost create
Muestra el ID del nuevo outpost (
outpost_env-...). También puedes crear outposts en la aplicación web, en Settings → Environment → Outposts.
devin worker outpost delete
Fleet API
https://api.devin.ai/opbeta/outposts/ y usan un Bearer token:
metadata / spec / status al estilo de Kubernetes, y la cola sigue la semántica de Kubernetes de listar primero y luego observar, con entrega de al menos una vez.
Objetos
Entrada de cola (devins)
spec.network_policy indica si el acceso de red de la sesión está restringido (enabled) y cuáles son los destinos permitidos (allow): patrones de hostname con comodines ({"hostname": ...}), direcciones/CIDR IPv4 ({"ipv4": ...}) o direcciones/CIDR IPv6 ({"ipv6": ...}).
Outpost
Listar sesiones en cola
Respuesta de ejemplo:
- Pasa el
cursorde cada respuesta a la siguiente solicitud mientrashas_next_pageseatrue. - La entrega es de al menos una vez: una sesión en el límite entre páginas puede aparecer en ambas, así que actualiza o inserta las entradas por
metadata.session_iden lugar de tratar cada elemento como nuevo (el CAS de reclamo hace que los duplicados no causen problemas). - Cuando
has_next_pagepase a serfalse, guarda el cursor devuelto como posición inicial de un watch.
Detectar cambios
MODIFIED se emiten cuando cambia la entrada en cola de una sesión (las sesiones que acaban de ponerse en cola también llegan como MODIFIED); los eventos DELETED se emiten cuando esta se elimina. Cada campo data de SSE contiene:
- Conserva el
cursorde nivel superior de cada evento después de procesarlo; vuelve a conectarte con el último cursor guardado para reproducir los cambios que ocurrieron mientras estabas desconectado. - La entrega es de al menos una vez; admite eventos duplicados.
- Los flujos terminan al cabo de un máximo de cinco minutos; se espera un bucle de watch con reconexión.
- Los filtros
phaseyacceptor_idse ignoran cuandowatch=true; filtra los eventos recibidos por watch usando los campos delobjectde cada evento. - Si omites el cursor, se empieza desde el principio, así que usa listar y luego watch para una reconciliación normal.
Obtener una entrada de la cola
Reclamar una sesión
409. Si el reclamo se realiza correctamente, la respuesta incluye status.connect_token y status.gateway_url: las credenciales que devin-remote necesita para conectarse (consulta el contrato de creación).
Al reclamarla, se garantiza que un worker estará listo dentro del plazo de reclamo asignado por el servidor (status.claim_deadline); los reclamos vencidos vuelven a la cola automáticamente.
Liberar un reclamo
Outposts
status.queue_depth y status.active_claims en tiempo real.
Distribución remota del binario
devin worker start descarga automáticamente el binario devin-remote adecuado. Los orquestadores personalizados que no usan Devin CLI pueden obtenerlo directamente de:
Si la entrada de la cola de la sesión incluye un
spec.remote_binary_sha, usa ese SHA en lugar de latest; esto fija la sesión a una versión probada específica.
Contrato de creación
devin-remote por sí mismo en lugar de usar devin worker start, créalo de la siguiente manera:
Proporciona al remoto un entorno limpio que contenga solo las variables anteriores más las variables básicas del sistema (
PATH, HOME, USER, LOGNAME, TMPDIR, LANG, TZ y — para la captura de pantalla de la transmisión del escritorio en Linux/X11 — DISPLAY, WAYLAND_DISPLAY, XAUTHORITY). No expongas al remoto nada que el agente no deba poder ver: el shell del agente lo hereda.
Expectativas adicionales del ciclo de vida:
- Directorio de trabajo: inicia el remoto desde el directorio que contiene los repositorios de la sesión (la misma regla que
devin worker start). - Fin de la sesión: cuando la sesión termina (se suspende o finaliza), Devin notifica al remoto y este sale por sí solo con estado 0. Trata una salida limpia como el fin de la sesión: confirma que
status.session_statusde la entrada de la cola seasuspendedoterminated(la actualización de estado puede retrasarse unos segundos respecto de la salida, así que vuelve a consultarlo unas cuantas veces), luego libera el reclamo. Como fallback, también sondeastatus.session_statusmientras el remoto está en ejecución y finaliza el proceso tú mismo una vez que llegue aterminated(o desaparezca la entrada de la cola).

