Usi Kubernetes? devin-outpost-k8s
è un operatore open source che implementa questo ciclo per te: monitora la
coda, rivendica le sessioni in attesa ed esegue ciascuna di esse come pod
worker su qualsiasi cluster certificato (GKE, EKS, …). Installalo con il suo
chart Helm invece di creare il tuo orchestratore.
Il flusso principale
1. Registra un outpost
rhel, gpu-h200 o my-outpost). Creane uno con devin worker outpost create:
Nell’API della flotta, gli outpost sono rappresentati come risorse
outposts, nell’ambito del
tuo account (condivise tra tutte le sue organizzazioni). Vedi gli
endpoint degli outpost.2. Monitora l’API della flotta per individuare le sessioni in attesa
cursor finale dell’elenco:
metadata.session_id e tollera i duplicati. Consulta List queued sessions e Watch for changes per i parametri di query, le strutture di risposta e la semantica completa della paginazione.
3. Rivendica prima del provisioning
acceptor_id, ovvero un’identità autodichiarata del tuo worker:
409. Rivendicare garantisce che un worker sarà pronto entro la scadenza della rivendicazione assegnata dal server (status.claim_deadline); le rivendicazioni scadute tornano automaticamente in coda. Se il provisioning non riesce, rilascia la rivendicazione in modo che la sessione torni immediatamente in coda.
4. Avvia una macchina ed esegui il worker
--acceptor-id che hai usato per la rivendicazione tramite API e fornisci il token tramite --token o DEVIN_OUTPOSTS_TOKEN (consulta l’elenco completo dei flag). Il worker si connette al cloud di Devin, contrassegna la sessione come pronta e inizia a eseguire le tool call.
5. Terminare la macchina quando il worker termina
devin worker start termina, la sessione è conclusa (o è stata sospesa). Termina la VM o il container. Se il tuo outpost supporta la ripresa, crea uno snapshot della macchina prima di terminarla, così potrai ripristinarla se la sessione riprende.
Il tuo orchestrator può tenere traccia delle sessioni rivendicate e del loro stato:
status.session_status con valore pending, running, suspended o terminated.
Pianificazione senza centralizzazione
Hai in programma di eseguire più di ~16 coordinatori (worker o orchestratori
che monitorano e rivendicano sessioni da un outpost)? Contatta prima il team del tuo account: flotte
più grandi aumentano la contesa sulle rivendicazioni e il carico di lettura della coda, e vogliamo
assicurarci che l’outpost sia dimensionato adeguatamente.
- Le rivendicazioni sono l’unico meccanismo di coordinamento. Ogni worker monitora la coda in modo indipendente e compete per rivendicare le sessioni in attesa. La rivendicazione è un’operazione atomica di compare-and-swap sul server: vince un solo worker, mentre tutti gli altri ricevono un
409e passano semplicemente alla sessione in attesa successiva. Perdere la corsa alla rivendicazione è un comportamento normale, non un errore. - Ogni worker ha una propria identità.
acceptor_idlimita le rivendicazioni, i rinnovi e il ripristino dopo il riavvio al solo worker a cui appartiene.devin worker startne genera e memorizza automaticamente uno per ogni machine, quindi una flotta non richiede alcuna configurazione dell’identità. Non condividere mai un acceptor ID (o una directory dati del worker copiata) tra machine diverse: worker in conflitto si sottrarrebbero a vicenda le rivendicazioni. - Gli errori si risolvono automaticamente. Se un worker si arresta dopo aver rivendicato una sessione, la sua rivendicazione scade alla claim deadline e la sessione torna nella coda perché un altro worker la possa recuperare. Non è necessario alcun monitoraggio dello stato di salute a livello di flotta.
Creare un orchestratore personalizzato
devin worker start è disponibile direttamente tramite l’API della flotta, quindi puoi sostituire completamente la CLI: scarica il file binario devin-remote dalla distribuzione statica di Devin e avvialo direttamente con l’ambiente documentato. Consulta Distribuzione remota del binario e il contratto di spawn nella documentazione di riferimento.
