devin-remote e il contratto di spawn per orchestrator personalizzati.
Autenticazione
Outposts è associato al tuo account ed è condiviso tra tutte le relative organizzazioni.
CLI
devin worker start
devin-remote corretto e gestisce le sessioni. Eseguilo dalla directory che contiene i repository della sessione su cui è stato eseguito il checkout.
L’environment del worker può includere anche
DEVIN_CHROME_PATH per indirizzare le sessioni a un file binario Chrome/Chromium per le funzionalità del Browser.
devin worker outpost create
Stampa l’ID del nuovo outpost (
outpost_env-...). Puoi anche creare outpost nell’app web in Settings → Environment → Outposts.
devin worker outpost delete
API della flotta
https://api.devin.ai/opbeta/outposts/ e richiedono un token Bearer:
metadata / spec / status, e la coda segue la semantica Kubernetes list-then-watch, con consegna almeno una volta.
Oggetti
Elemento della coda (devins)
spec.network_policy indica se l’accesso di rete della sessione è limitato (enabled) e le destinazioni consentite (allow): pattern glob di hostname ({"hostname": ...}), indirizzi/CIDR IPv4 ({"ipv4": ...}) o indirizzi/CIDR IPv6 ({"ipv6": ...}).
Outpost
Elencare le sessioni in attesa
Risposta di esempio:
- Passa il
cursordi ogni risposta alla richiesta successiva finchéhas_next_pageètrue. - La consegna segue una semantica at-least-once: una sessione al confine tra due pagine può comparire in entrambe, quindi aggiorna o inserisci le voci in base a
metadata.session_idinvece di considerare ogni elemento come nuovo (il CAS usato per la rivendicazione rende innocui i duplicati). - Quando
has_next_pagediventafalse, salva ilcursorrestituito come posizione iniziale per un watch.
Monitora le modifiche
MODIFIED vengono inviati quando cambia l’elemento in coda di una sessione (anche le sessioni appena messe in coda arrivano come MODIFIED); gli eventi DELETED vengono inviati quando viene rimosso. Ogni campo SSE data contiene:
- Salva il
cursordi primo livello di ogni evento dopo averlo elaborato; riconnettiti con l’ultimo cursor salvato per recuperare le modifiche avvenute durante la disconnessione. - La consegna segue una semantica at-least-once — prevedi eventi duplicati.
- I flussi terminano dopo al massimo cinque minuti; è previsto un ciclo di watch con riconnessione.
- I filtri
phaseeacceptor_idvengono ignorati quandowatch=true; filtra gli eventi monitorati usando i campi nell’objectdi ogni evento. - Se ometti il cursor, si parte dall’inizio, quindi usa
list-then-watchper una riconciliazione standard.
Recupera un elemento della coda
Rivendica una sessione
409. In caso di esito positivo, la risposta include status.connect_token e status.gateway_url — le credenziali necessarie a devin-remote per connettersi (vedi lo contratto di spawn).
La rivendicazione implica che un worker sarà pronto entro il termine di rivendicazione assegnato dal server (status.claim_deadline); le rivendicazioni scadute tornano automaticamente nella coda.
Annullare una rivendicazione
Outposts
status.queue_depth e status.active_claims.
Distribuzione del binario remoto
devin worker start scarica automaticamente il binario devin-remote corretto. Gli orchestratori personalizzati che non usano la Devin CLI possono scaricarlo direttamente da:
Se la voce della coda della sessione include un
spec.remote_binary_sha, usa quell’SHA invece di latest — in questo modo blocchi la sessione su una specifica versione testata.
Contratto di spawn
devin-remote direttamente anziché usare devin worker start, avvialo come segue:
Fornisci al processo remoto un ambiente pulito che contenga solo le variabili sopra, oltre alle variabili di sistema di base (
PATH, HOME, USER, LOGNAME, TMPDIR, LANG, TZ e — per l’acquisizione dello schermo del flusso desktop su Linux/X11 — DISPLAY, WAYLAND_DISPLAY, XAUTHORITY). Non esporre al processo remoto nulla che l’agente non dovrebbe poter vedere: viene ereditato dalla shell dell’agente.
Aspettative aggiuntive del lifecycle:
- Directory di lavoro: avvia il processo remoto dalla directory che contiene le repo della sessione (la stessa regola di
devin worker start). - Fine della sessione: quando la sessione termina (va in sleep o viene chiusa), Devin notifica il processo remoto e questo termina autonomamente con status 0. Considera un’uscita pulita come la fine della sessione: verifica che
status.session_statusdell’elemento della coda siasuspendedoterminated(l’aggiornamento dello status può arrivare con alcuni secondi di ritardo rispetto all’uscita, quindi rileggilo alcune volte), quindi rilascia la rivendicazione. Come fallback, esegui anche il poll distatus.session_statusmentre il processo remoto è in esecuzione e termina tu stesso il processo quando raggiungeterminated(o se l’elemento della coda scompare).

