- Sandbox leve para execução de código de agentes de IA, oferecendo inicialização 100 vezes mais rápida e eficiência de memória de 10 a 100 vezes maior em comparação com contêineres
- Baseado na tecnologia de isolates do mecanismo JavaScript V8, inicia em poucos milissegundos e usa apenas alguns megabytes, tornando viável criar e descartar um novo sandbox a cada requisição
- No modo Code Mode, em que o agente escreve e executa código TypeScript diretamente em vez de chamar ferramentas, o uso de tokens é reduzido em até 81%
- Também fornece bibliotecas de segurança e utilitários, como filtragem HTTP, injeção de credenciais e sistema de arquivos virtual, construindo um ecossistema para desenvolvimento de agentes
- Vai além dos limites de custo, latência e escalabilidade dos sandboxes baseados em contêineres, permitindo serviços de agentes em escala de consumidores
Contexto: o problema de segurança da execução de código por agentes
- Para que um agente (ou servidor MCP) execute código gerado na hora pela IA, esse código precisa rodar em um ambiente seguro
- Se for executado diretamente no app com
eval(), um usuário malicioso pode inserir vulnerabilidades por meio de injeção de prompt
- É necessário um sandbox isolado tanto da aplicação quanto do mundo externo, permitindo apenas funções específicas às quais o código precisa acessar
Limites da abordagem tradicional com contêineres
- Hoje, a maior parte da indústria usa contêineres baseados em Linux como sandbox
- Contêineres levam centenas de milissegundos para iniciar e exigem centenas de megabytes de memória para rodar
- Para evitar latência, é preciso mantê-los aquecidos, e reutilizar um mesmo contêiner para várias tarefas reduz a segurança
- Em uma escala de consumidores, em que cada usuário final tem um agente e cada agente escreve código, contêineres não são suficientes
Dynamic Worker Loader: sandbox leve
- API que permite que um Cloudflare Worker defina código em tempo de execução e crie instantaneamente um novo Worker dentro do próprio sandbox
- Foi apresentado como recurso experimental em setembro, em uma publicação sobre Code Mode, e agora está em beta aberta para todos os usuários pagos de Workers
- Ao criar um Worker, é possível definir o código com
compatibilityDate, mainModule e modules, passar stubs de RPC com env e bloquear ou interceptar o acesso à internet com globalOutbound
100 vezes mais rápido
- Dynamic Workers são baseados em V8 isolates, o mesmo mecanismo de sandboxing usado pela plataforma Cloudflare Workers há 8 anos
- Um isolate é uma instância do motor de execução JavaScript V8 usado no Google Chrome
- Com inicialização em poucos milissegundos e uso de memória de apenas alguns megabytes, é cerca de 100 vezes mais rápido e de 10 a 100 vezes mais eficiente em memória do que contêineres
- Isso permite criar um novo isolate para cada requisição de usuário, executar um trecho de código e descartá-lo em seguida
Escalabilidade ilimitada
- Muitos provedores de sandbox baseados em contêineres impõem limites ao número global de sandboxes simultâneos e à velocidade de criação
- Como o Dynamic Worker Loader é uma API da mesma tecnologia que opera a própria plataforma, ele não tem essas limitações
- É possível processar milhões de requisições por segundo, carregando um sandbox Dynamic Worker separado para cada requisição e executando tudo em paralelo
Latência zero
- Dynamic Workers descartáveis normalmente rodam na mesma máquina e na mesma thread do Worker que os criou
- Não é necessário comunicar-se globalmente para encontrar um sandbox aquecido; a execução acontece imediatamente no local onde a requisição chegou
- Suportado em centenas de localizações globais da Cloudflare
Ambiente de execução exclusivo para JavaScript
- A única restrição relevante em comparação com contêineres é que o agente precisa escrever JavaScript
- Embora o Workers também ofereça suporte técnico a Python e WebAssembly, para pequenos trechos de código gerados na hora por agentes, JavaScript carrega e executa muito mais rápido
- LLMs são competentes em todas as principais linguagens, e o JavaScript tem um enorme volume de dados de treinamento
- Pela própria natureza da web, JavaScript é uma linguagem projetada para sandboxing
API de ferramentas definida em TypeScript
- O MCP define apenas um esquema plano de chamadas de ferramentas, e o OpenAPI representa APIs REST, mas tanto o esquema quanto o código de chamada são prolixos
- Para APIs expostas ao JavaScript, TypeScript é a melhor resposta única
- Interfaces TypeScript permitem descrever uma API com precisão usando muito menos tokens do que uma especificação OpenAPI equivalente
- O Workers Runtime configura automaticamente uma ponte Cap'n Web RPC entre o sandbox e o código host, permitindo que o agente chame a API como se fosse uma biblioteca local
Filtragem HTTP e injeção de credenciais
- A opção
globalOutbound permite registrar callbacks para todas as requisições HTTP, possibilitando inspeção, reescrita, injeção de chaves de autenticação e bloqueio
- Injeção de credenciais (injeção de tokens): quando o agente envia requisições HTTP para serviços que exigem autenticação, as credenciais são adicionadas à requisição de saída para que o próprio agente não conheça os segredos
- Isso é útil quando APIs conhecidas estão presentes nos dados de treinamento do agente ou ao executar bibliotecas baseadas em REST dentro do sandbox
- Ainda assim, quando não há exigência de compatibilidade, a interface RPC em TypeScript é superior ao HTTP: consome menos tokens, produz código de chamada mais enxuto e facilita restringir com precisão a superfície da API
Arquitetura de segurança comprovada
- Sandboxes baseados em isolates têm uma superfície de ataque mais complexa do que máquinas virtuais de hardware, e bugs de segurança do V8 são mais frequentes do que em hipervisores tradicionais
- A empresa afirma ter cerca de 10 anos de experiência protegendo uma plataforma baseada em isolates
- Aplica patches de segurança do V8 em produção em questão de horas, mais rápido que o Chrome
- Usa uma segunda camada de sandbox customizada e cordoning dinâmico de tenants com base em avaliação de risco
- Expande o sandbox do V8 com recursos de hardware como MPK
- Em parceria com a TU Graz, desenvolve novas defesas, incluindo proteções contra Spectre
- Opera sistemas automáticos de varredura e bloqueio de padrões maliciosos, além de sandboxing adicional quando necessário
Bibliotecas auxiliares
Code Mode (@cloudflare/codemode)
- Biblioteca que simplifica a execução, com Dynamic Workers, de código gerado pelo modelo para ferramentas de IA
- O núcleo é
DynamicWorkerExecutor(), que trata erros comuns de formatação por meio de normalização de código e pode acessar diretamente o fetcher de globalOutbound
codeMcpServer({ server, executor }) encapsula um servidor MCP existente e substitui a superfície de ferramentas por uma única ferramenta code()
openApiMcpServer({ spec, executor, request }) recebe uma especificação OpenAPI e um executor e constrói automaticamente um servidor MCP completo com as ferramentas search() e execute()
Bundling (@cloudflare/worker-bundler)
- Gera os módulos pré-empacotados esperados pelos Dynamic Workers
- Ao fornecer arquivos-fonte e
package.json, resolve dependências npm, faz o bundling com esbuild e retorna o mapa de módulos esperado pelo Worker Loader
- Com
createApp, oferece suporte a apps full-stack que empacotam juntos Worker do servidor, JavaScript do cliente e assets estáticos
- Inclui serving de assets embutido para lidar com content type, ETag e roteamento SPA
Manipulação de arquivos (@cloudflare/shell)
- Fornece ao agente, dentro do Dynamic Worker, um sistema de arquivos virtual
- Com métodos tipados do objeto
state, é possível fazer leitura, escrita, busca, substituição, diff, glob, consulta/atualização de JSON, arquivamento e mais
- O armazenamento é persistido em um Workspace durável (SQLite + R2), preservando arquivos entre execuções
- Operações em larga escala, como
searchFiles, replaceInFiles e planEdits, minimizam idas e voltas de RPC — em vez de fazer loop arquivo a arquivo, tudo é feito em uma chamada
- Escritas em lote são transacionais por padrão: se uma falhar, as anteriores são revertidas automaticamente
- Também oferece declarações de tipos TypeScript pré-construídas e templates de prompt de sistema
Casos de uso
Uso do Code Mode
- Em vez de chamadas sequenciais de ferramentas, o agente escreve uma única função TypeScript para encadear várias chamadas de API, executa no Dynamic Worker e retorna apenas o resultado final
- Como apenas a saída entra na janela de contexto, e não as etapas intermediárias, latência e uso de tokens caem ao mesmo tempo
- O servidor MCP da Cloudflare foi construído assim: toda a API da Cloudflare é exposta com apenas 2 ferramentas (
search, execute) e menos de 1.000 tokens
Construção de automações customizadas
- A Zite está construindo uma plataforma de apps na qual usuários interagem por meio de uma interface de chat
- Nos bastidores, o LLM escreve TypeScript para criar apps CRUD, conectar Stripe, Airtable e Google Calendar, e executar lógica de backend
- Cada automação roda em seu próprio Dynamic Worker, com acesso apenas aos serviços e bibliotecas específicos necessários para aquele endpoint
- Segundo Antony Toron, CTO da Zite, como uma "camada de execução imediata, isolada e segura", a solução apresentou o melhor desempenho em velocidade e suporte a bibliotecas entre todas as plataformas testadas, e hoje processa milhões de execuções por dia
Execução de aplicações geradas por IA
- Também pode ser usado para construir plataformas que geram aplicações completas com IA
- Cada app pode ser criado sob demanda e armazenado em cold storage até ser chamado novamente
- O tempo de inicialização rápido facilita a pré-visualização de mudanças durante desenvolvimento ativo
- Bloqueando ou interceptando requisições de rede do código gerado, é possível garantir a execução segura de apps criados por IA
Política de preços
- Workers carregados dinamicamente são cobrados em US$ 0,002 por Worker único carregado por dia (além dos custos normais de tempo de CPU e invocações dos Workers comuns)
- No caso de uso de "Code Mode" gerado por IA, como todos os Workers são descartáveis, o custo é de US$ 0,002 por carregamento, normalmente insignificante em comparação com o custo de inferência para gerar o código
- A tarifa de US$ 0,002 está isenta durante o período beta
Ainda não há comentários.