- “Bash for Agents” criado pela Vercel
- Ambiente Bash virtual baseado em TypeScript projetado para agentes de IA que precisam de um ambiente Bash seguro e em sandbox
- Funciona sobre um sistema de arquivos virtual em memória (InMemoryFs), oferecendo um ambiente de execução em sandbox sem acesso ao disco real
- Por padrão, o acesso à rede é bloqueado e, quando necessário, há suporte a requisições de rede seguras com base em URLs permitidas via
curl
- Só é possível acessar o sistema de arquivos fornecido, e inclui recursos para evitar loops infinitos e execução recursiva
- Execução de binários ou WASM não é suportada
- Ao usar a API, o isolamento ocorre por unidade de
exec(), então variáveis de ambiente, funções e diretório de trabalho não são mantidos entre chamadas (apenas o estado do sistema de arquivos persiste)
- Oferece configuração detalhada por meio de argumentos de criação, como arquivos iniciais, variáveis de ambiente, diretório de trabalho e limites de execução
- Suporta carregamento lazy de arquivos, permitindo gerar o conteúdo apenas quando necessário, por meio de funções síncronas ou assíncronas
- Com o recurso de comandos personalizados (
defineCommand), é possível adicionar comandos customizados baseados em TypeScript
- Via
CommandContext, há acesso a fs, cwd, env, stdin e exec
- Quatro implementações de sistema de arquivos são fornecidas
- InMemoryFs: puramente baseado em memória
- OverlayFs: leitura do disco, escrita na memória
- ReadWriteFs: permite leitura e escrita no disco real
- MountableFs: monta vários sistemas de arquivos por caminho para compor um namespace unificado
- Suporte ao
bash-tool como ferramenta de integração com AI SDK
- Projetado para combinar com
generateText() e permitir que modelos de IA executem comandos Bash com segurança
- Fornece API compatível com Vercel Sandbox
- Pela classe
Sandbox, pode ser usado com a mesma interface de @vercel/sandbox
- Quando necessário, é fácil migrar para um sandbox real baseado em VM
- Fornece a CLI
just-bash
- Executa com base em OverlayFS e todo o conteúdo gravado é descartado da memória após a execução
- A opção
--json oferece saída de resultados programática
- Também oferece modo de shell interativo (
pnpm shell)
- Por padrão, o acesso à internet é permitido, podendo ser bloqueado com
--no-network
- Comandos suportados
- Inclui a maior parte dos comandos Bash padrão para manipulação de arquivos, processamento de texto, tratamento de dados, compactação, rede etc.
- Também há suporte opcional a comandos de processamento de dados como
jq, sqlite3 e python3 (baseado em Pyodide)
- Em termos de recursos de shell, implementa boa parte da sintaxe do Bash, como pipes, redirecionamento, condicionais, loops, funções, variáveis e padrões glob
- A estrutura padrão de diretórios oferece um ambiente semelhante ao Unix, com
/home/user, /bin, /usr/bin, /tmp etc.
- O controle de acesso à rede usa whitelist baseada em URL e método HTTP
- A opção
dangerouslyAllowFullInternetAccess permite acesso total, se necessário
- O suporte a Python e SQLite é ativado opcionalmente
- Com Python baseado em Pyodide e SQLite baseado em WASM (
sql.js), garantindo execução totalmente em sandbox
- Como mecanismos de proteção de execução, é possível definir limites como profundidade de funções, número de comandos e quantidade de iterações de loop
- Licença Apache-2.0
Ainda não há comentários.