Relatório da palestra de Adam Azzam (Modal) sobre agentes em background, apresentada por Hamel Husain, com cerca de 27 minutos. Tese central: os agentes já convergiram em um design universal, e o problema difícil de um agente em background não é o "agente" — é o "background". A parte que diferencia a operação é o ambiente (o dev box ou sandbox) em que o agente roda e a orquestração entre o plano (control plane) e a execução (data plane). Nas palavras de Azzam: "a parte difícil dos agentes em background é sempre a parte background".
O arco
A conversa rastreia a evolução dos agentes, do emparelhar local ao "agente de fábrica", e mostra que cada salto esbarra no mesmo muro: o ambiente.
- Emparelhar local. Claude Code e Codex rodando no terminal, com você revisando cada passo.
- Background. Agentes passam a rodar assíncronos, em paralelo, e precisam de máquinas próprias.
- Ambiente como produto. O dev box e o control/data plane é onde a operação ganha ou perde.
Os insights
A palestra entrega oito insights, do núcleo ao apoio. Os dois primeiros são o núcleo da argumentação.
O agente é o fácil; o ambiente é o difícil. Retomando a palestra da Anthropic "Don't build agents, build skills instead", Azzam nota que os agentes convergem num design comum (as mesmas tools: bash, ler/escrever/editar arquivos, memória, compactação). A uma camada acima, os agentes em background estão convergindo numa arquitetura de sistema universal. Se o desenho do agente já é commodity, a diferenciação não está aí: está no sistema que gera, isola, orquestra e escala os ambientes.
"Sandbox ≠ dev box": sem um alvo preparado, o agente está condenado. Um sandbox "bare" (Linux puro, sem nada) não deixa o agente subir um servidor, tirar screenshot para inspecionar o app ou acessar GPU para retreinar um modelo. "Se eu dou a um agente uma sandbox sem o hardware e os CLIs que ele precisa, eu estou condenando esse agente a resolver um problema sem uma máquina preparada para ele." Um agente de ML que precisa de GPU numa sandbox sem GPU está fadado a falhar — o problema não é o prompt, é o alvo.
Jobs vs sessões: o agente precisa de sessão resumível, não de job descartável. CI/CD trata execução como jobs (clona, roda teste determinístico, descarta). Um agente que trabalhou por um dia e aguarda feedback num PR não pode ter a máquina desligada: precisa de um snapshot do filesystem para "acordar no meio do pensamento" dias depois. Jobs são descartáveis; o progresso de um agente é caro e não deve ser jogado fora. Isso muda completamente as exigências de infraestrutura.
Secrets são um modelo de ameaça diferente para agentes. Em CI, você teme um humano com acesso ao ambiente roubando secrets. Num agente, ele pode ler secrets que estejam em env vars e pode, por engano, colocar uma key numa URL que vai para o log — "mais erro do que um agente mal-intencionado". Você tem um processo em que não confia e a que não quer dar acesso a secrets.
Cold start importa muito; tratar o ambiente como CI gera esperas de 2 a 10 minutos. Hosted Claude Code e Codex mandam rodar um "setup script" (instalar uv, ffmpeg, pip) a cada novo sandbox, sem cache ou snapshot. Resultado: "todos sentimos a dor de ambientes que levam 2–3 minutos, ou até 10, para subir — e é um imposto pago toda vez". Pior que o cold start é o drift de ambiente: o código muda e o setup salvo no remote fica dessincronizado.
Manter o ambiente em código (uma imagem por repositório) é o padrão que escalou. Ramp e Stripe convergiram em manter o ambiente no próprio repositório. Cada repo tem sua imagem versionada em código, com permissões e portas por repo, e rebuilds a cada 30 minutos em background, de forma assíncrona, para nunca pagar um rebuild caro em interação. Empiricamente, 30 minutos de atraso em relação a main "não é tão ruim".
Colocar o agente junto das tools é frágil. Separe control plane e data plane. No design antigo (LangChain, CrewAI), agente e tools viviam no mesmo processo. Uma tool que abre um CSV de 10 GB numa máquina de 2 GB derruba o processo do agente e ele perde o estado. A solução clássica de orquestração (o Airflow nunca rodava Spark nele) é "uma porta corta-fogo entre o que você nunca quer falhar e o que tem risco de falhar". O agente fica no control plane (planejamento, estado); as tools executam num data plane remoto descartável. Se a execução corrompe o ambiente, o agente não cai.
Escala da Ramp: não é teoria. Mantendo imagens "quentes" por repo com git sync no start, a Ramp sobe cada agente em menos de 1 segundo, escala para quase 1 milhão de sandboxes (Ramp Inspect) e cerca de 70% dos PRs são resultado de agentes em background. Isso prova que "ambiente como produto" é o que separa uma operação que escala de uma que afoga a equipe.
O padrão de fábrica
O que todo mundo acabou convergindo.
- Control plane (o agente). Onde fica o agente, o plano e o estado, isolado do risco de falha. Ele provisiona e orquestra os dev boxes via chamadas remotas (exec, write, read, bash).
- Data plane (o trabalho). Dev boxes descartáveis e "quentes" que executam o trabalho pesado — código, GPU, apps. Se um exec corrompe o ambiente, o data plane é jogado fora e o agente não cai.
A visão de Adam: o futuro é o agente morar no control plane, dando exec remota em dev boxes, e não "código solto dentro do sandbox".
Recomendações práticas
Em vez de gastar energia redesenhar o harness ou o agente, invista no layer do ambiente.
- Ao dar uma tarefa a um agente, garanta que o ambiente tenha as ferramentas, as portas e o hardware que a tarefa exige — senão ele gira em falso.
- Projete para persistir estado: monte o filesystem num novo dev box ao retomar, em vez de tratar cada execução como efêmera.
- Mantenha secrets fora do ambiente do agente; use um proxy ou sidecar determinístico que intercepta a request e injeta o secret quando necessário.
- Pré-bake as imagens em código, com rebuilds assíncronos em background e cache de layer — nunca rode o setup completo do zero por execução.
- Mantenha image e setup versionados junto ao código de cada repo, com rebuild programado: não "cattle" descartável, e sim um "pet" reconstruível.
- Não rode o agente no mesmo ambiente das execuções arriscadas; deixe-o orquestrar dev boxes remotos onde o trabalho de fato roda.
Fontes
Palestra: "Don't Build Agents, Build Environments Instead" — Adam Azzam (Modal), apresentada por Hamel Husain. Vídeo: https://youtu.be/JolFqvXj3BE