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.
devin worker start también puede ejecutarse sin un token preaprovisionado mediante tu inicio de sesión existente de la CLI; consulta Iniciar sin un token.
CLI
devin worker start
devin-remote correcto y atiende las sesiones. Ejecútalo desde el directorio en el que quieres que trabajen las sesiones: los repositorios de una sesión se encuentran en el subdirectorio repos de ese directorio, por lo que your-org/app se extrae en $(pwd)/repos/app. Los repositorios que ya estén allí se reutilizan; los que falten se clonan al inicio 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.
Inicio sin token
--token ni DEVIN_OUTPOSTS_TOKEN, devin worker start crea un outpost mediante tu sesión actual de la CLI y reutiliza el token de worker guardado en ejecuciones posteriores.
Validación de plataforma
devin-remote adecuado y pasa el entorno del sistema Windows a las sesiones.
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 Environment 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 en el que quieres que trabaje la sesión; los repositorios se encuentran en su subdirectorio
repos, es decir,$(pwd)/repos/<repo-name>(la misma regla quedevin 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 la reclamación. Como respaldo, 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).

