>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Rust

Como Executar um Agente de IA Localmente Sem Vazar Suas Chaves SSH

Quando você executa um utilitário como Claude Code, OpenCode, ou qualquer outro agente autônomo diretamente no console, uma leve sensação de desconforto surge. Estamos dando a um modelo de linguagem de terceiros o direito de executar comandos no terminal, ler arquivos e modificar código-fonte. Enquanto isso, o processo retém os mesmos direitos do seu usuário local por padrão. O modelo pode ler acidentalmente o arquivo .env, fuçar em ~/.ssh/id_rsa, ou baixar configurações do seu diretório home.

Normalmente, as pessoas configuram contêineres Docker ou máquinas virtuais para segurança. Mas isso é inconveniente para o trabalho diário. Contêineres levam uma eternidade para iniciar, consomem gigabytes de RAM e exigem configuração constante de montagem de pastas.

O projeto nono oferece uma solução diferente. Foi criado pela equipe que anteriormente lançou o Sigstore — um padrão de assinatura digital de pacotes usado pelo PyPI, npm e Homebrew.

logo nono

Isolamento de Processos em Frações de Segundo

A ferramenta cria um sandbox para qualquer processo de IA sem usar contêineres, daemons em segundo plano ou discos virtuais. Você simplesmente envolve o lançamento do seu agente em um comando CLI, e o processo imediatamente termina em um ambiente restrito.

O código do projeto é escrito em Rust. macOS, Linux e Windows via WSL2 são suportados.

Aqui está como é o lançamento de um agente:

nono search opencode
nono run --profile nolabs-ai/opencode -- opencode

Após este comando, opencode só pode ler e editar arquivos na pasta atual. Todos os outros diretórios no disco, chaves SSH privadas e variáveis de sistema globais se tornam completamente invisíveis para o processo.

Trabalhando com Perfis de Segurança

As configurações de acesso são armazenadas em um registro especial em registry.nono.sh. Existem perfis prontos para ferramentas populares. Um perfil descreve regras de acesso a arquivos, hosts de rede permitidos e opções de encaminhamento de tokens.

Se um perfil pronto do registro não servir para você, é fácil personalizar:

nono profile init opencode --extends nolabs-ai/opencode
nono run --profile opencode -- opencode

O comando irá gerar um arquivo JSON com configuração declarativa. Você pode editá-lo, salvá-lo no Git da sua empresa e usá-lo em toda a equipe.

Isolamento de Utilitários Externos e Proxy de Tokens

A parte mais interessante do nono é como o projeto trabalha com ferramentas externas. Agentes raramente funcionam em isolamento no vácuo. Geralmente eles chamam utilitários como git, gh, kubectl ou iniciam servidores MCP.

Sandboxes padrão dão ao agente acesso total à rede e às chaves, ou cortam tudo. No nono, utilitários são iniciados em sandboxes filhos separados com suas próprias políticas.

O fluxo de trabalho fica assim:

  • O agente quer executar git, mas o processo filho só recebe acesso ao diretório do repositório e aos arquivos de serviço do Git.
  • O agente solicita trabalhar com gh, mas o token bruto do GitHub não chega à memória do agente de forma alguma.
  • As requisições passam por um servidor proxy embutido onde você pode configurar filtragem no nível do método HTTP.
  • Você pode permitir que o agente leia apenas a lista de issues via requisições GET para a API, bloqueando exclusão de repositórios e pushes para o branch main.

A política de acesso é fixada no arquivo de configuração. O agente não pode alterar essas regras de dentro nem extrair credenciais de autorização da memória.

Exemplo de configuração com restrição de acesso à API do GitHub:

{
  "command_policies": {
    "credentials": {
      "github-api": {
        "type": "proxy",
        "upstream": "https://api.github.com",
        "credential_key": "keyring://gh:github.com/example?decode=go-keyring",
        "env_var": "GH_TOKEN",
        "inject_header": "Authorization",
        "credential_format": "Bearer {}"
      }
    },
    "commands": {
      "gh": {
        "from": {
          "session": {
            "sandbox": {
              "fs_read": ["."],
              "credentials": [
                {
                  "name": "github-api",
                  "endpoint_policy": {
                    "default": "deny",
                    "allow": [
                      { "method": "GET", "path": "/repos/nolabs-ai/nono/issues/**" }
                    ]
                  }
                }
              ]
            }
          }
        }
      }
    }
  }
}

Bibliotecas Prontas para Diferentes Linguagens

Os desenvolvedores não limitaram o projeto a um utilitário CLI. Se você está escrevendo seu próprio agente de IA ou framework de serviço, pode embutir a restrição de permissões diretamente no código da aplicação.

O repositório tem bindings FFI prontos:

  • Python (nono-py)
  • TypeScript (nono-ts)
  • Go (nono-go)
  • Rust (biblioteca nativa)

Início Rápido

Instalar o utilitário no macOS via Homebrew leva um comando:

brew install nono

Para outras plataformas, um script de instalação padrão está disponível:

curl -fsSL https://nono.sh/install.sh | sh

O projeto é distribuído sob a licença Apache-2.0. O código é aberto e o repositório já tem mais de 3.000 estrelas no GitHub.

Vale a Pena Instalar

Se você usa agentes de IA de console como Claude Code, OpenCode diariamente, ou desenvolve suas próprias ferramentas baseadas em MCP, dê uma olhada no nono. É uma forma conveniente de parar de se preocupar com a segurança das chaves SSH e acesso à nuvem, sem sacrificar a velocidade do terminal.

Projetos relacionados