8 min de leitura

Separe o acesso de staging e produção para agentes de programação

Separe o acesso de staging e produção para agentes de programação com credenciais distintas, endpoints fixos, aprovações humanas, registros de auditoria e revogação testada.

Separe o acesso de staging e produção para agentes de programação

Agentes de programação nunca devem alternar entre staging e produção trocando uma variável, uma URL ou uma instrução vaga. Credenciais e destinos separados dificultam uma chamada acidental ao ambiente errado. Uma decisão humana na fronteira de produção torna uma chamada intencional responsabilizável.

Já vi equipes chamarem sua configuração de «ambientes separados» porque tinham dois hostnames em um repositório. Depois, um script de implantação herdou um token de produção, um fixture de teste apontou para um projeto ativo ou um agente encontrou uma credencial em uma sessão de shell e usou o caminho que funcionava. O hostname era de staging. A autoridade era de produção. Isso não é separação.

A regra útil é simples: o acesso ao staging deve permitir que um agente prove que uma alteração funciona sem ter autoridade capaz de afetar a produção. O acesso à produção deve existir como uma capacidade separada e restrita, concedida por uma pessoa para uma execução específica e revogável enquanto a execução estiver ativa.

Nomes de ambientes não criam uma fronteira de segurança

Um rótulo de staging não protege nada por si só. Existe uma fronteira de segurança quando uma chamada direcionada ao staging não consegue se autenticar na produção e quando uma chamada que chega à produção não consegue realizar um trabalho relevante sem uma identidade de produção concedida separadamente.

As equipes costumam misturar três coisas diferentes:

  • Roteamento decide para onde vai uma solicitação, como https://api.staging.example.
  • Autenticação decide qual principal o serviço enxerga, como uma conta de serviço ou uma chave SSH.
  • Autorização decide o que esse principal pode fazer depois que a autenticação é bem-sucedida.

Alterar apenas o roteamento deixa as outras duas partes intactas. Alterar apenas a credencial também deixa uma possibilidade perigosa: uma credencial de staging pode se autenticar na produção porque um administrador reutilizou um cliente, uma função ou uma chave nos dois ambientes. Uma fronteira de ambiente bem definida altera os três elementos.

Comece com contas, projetos, tenants, namespaces ou assinaturas separadas do provedor quando o serviço permitir. Eles fornecem um identificador concreto para conferir. Bancos de dados, armazenamentos de objetos, filas e destinos de implantação separados vêm naturalmente depois. Se um provedor obrigar staging e produção a compartilhar uma conta, crie principais e escopos de recursos distintos. Trate a conta compartilhada como uma fragilidade aceita, que exige revisão adicional.

Não use dados de clientes de produção para tornar o staging mais realista. Copiá-los sem um processo deliberado de anonimização transforma o problema de controle de acesso em exposição de privacidade. Use dados sintéticos no desenvolvimento comum. Se um teste precisar de registros com o formato da produção, gere um conjunto reduzido e higienizado e documente quem aprovou seu uso.

Uma fronteira prática tem evidências que um revisor consegue inspecionar:

Elemento da fronteiraStagingProdução
DestinoHostname ou conta dedicada de stagingHostname ou conta dedicada de produção
CredencialPrincipal exclusivo do stagingPrincipal exclusivo da produção
PermissõesOperações e recursos de testeApenas operações restritas em ambiente ativo
DadosSintéticos ou higienizadosDados ativos somente quando a tarefa exigir
AprovaçãoControles normais de desenvolvimentoAutorização humana deliberada

A diferença entre um ambiente e um domínio de autorização importa. É possível executar muitos ambientes dentro de um único domínio de autorização, mas um agente com uma credencial compartilhada e ampla pode circular entre eles. Essa configuração ajuda a operação, não a contenção.

Uma credencial de produção precisa ser outra identidade

O acesso à produção precisa de um principal distinto, não de um segundo rótulo preso à credencial de staging. Se o mesmo token de API, função de nuvem, usuário de banco de dados ou chave SSH puder operar nos dois ambientes, um erro de roteamento pode virar um incidente.

Crie identidades com base na ação que o agente precisa executar. Um agente de programação que precisa inspecionar uma implantação não deve herdar permissão para alterar configurações de identidade, excluir armazenamento, ler todas as tabelas de um banco ou abrir um shell interativo em todos os hosts. «Administrador, porque o agente pode precisar» é um atalho que transforma caminhos de código desconhecidos em autoridade de produção.

Divida o acesso pelo impacto, não pelo cargo. As divisões comuns incluem:

  • Uma identidade de implantação em staging que pode escrever somente nos recursos de staging.
  • Uma identidade de observação em produção que pode ler uma pequena superfície de saúde ou versão.
  • Uma identidade de implantação em produção que pode atualizar um único serviço ou canal de versão.
  • Uma identidade separada de emergência para pessoas, fora dos fluxos rotineiros dos agentes.

Não dê ao agente o token pessoal de um desenvolvedor. Tokens pessoais acumulam permissões com o tempo, sobrevivem a mudanças de função e costumam funcionar em mais sistemas do que o próprio dono lembra. Eles também deixam o rastro de auditoria ambíguo: o log mostra uma pessoa, mas um processo autônomo fez a solicitação.

Se o provedor oferecer identidade de workload, credenciais de curta duração ou contas de serviço com escopo, use esses recursos. A duração ajuda, mas não corrige um escopo amplo. Uma credencial de administrador válida por dez minutos ainda pode excluir um banco de produção no primeiro minuto.

A Publicação Especial 800-53 do NIST descreve o princípio do menor privilégio no controle AC-6: as organizações devem conceder apenas o acesso necessário às tarefas atribuídas. Isso parece óbvio até que um agente precise de uma correção rápida e alguém escolha uma função de proprietário. O padrão não define a permissão exata para cada caso. Ele torna inevitável a pergunta certa na revisão: qual ação única deixa de funcionar se removermos esta permissão?

Para SSH, chaves separadas são obrigatórias, mas insuficientes. Dê à chave de produção acesso a hosts nomeados ou a uma conta restrita, desative caminhos amplos de encaminhamento quando o ambiente permitir e evite colocar um shell geral atrás de uma credencial destinada a um único comando de implantação. Uma chave que abre um shell irrestrito em produção oferece ao agente uma superfície de ação grande e difícil de revisar.

A separação de endpoints precisa de uma verificação executável

A configuração deve fazer uma mistura entre ambientes falhar antes que uma chamada de API saia da máquina. Não peça ao agente para lembrar em qual ambiente está. Faça o perfil selecionado carregar o destino e o nome da identidade, depois rejeite combinações que você nunca pretende permitir.

Este padrão de shell não armazena segredos. Ele valida os valores que selecionam o segredo e o endpoint antes que um wrapper ou corretor de credenciais faça a solicitação:

#!/usr/bin/env sh
set -eu

case "${AGENT_ENV:?set AGENT_ENV}" in
  staging)
    API_BASE="https://api.staging.example.internal"
    CREDENTIAL_REF="agent-staging-deploy"
    ;;
  production)
    API_BASE="https://api.example.com"
    CREDENTIAL_REF="agent-production-deploy"
    ;;
  *)
    printf '%s\n' "AGENT_ENV must be staging or production" >&2
    exit 64
    ;;
esac

printf 'environment=%s\nendpoint=%s\ncredential_ref=%s\n' \
  "$AGENT_ENV" "$API_BASE" "$CREDENTIAL_REF"

Uma chamada ao staging produz uma saída com este formato:

environment=staging
endpoint=https://api.staging.example.internal
credential_ref=agent-staging-deploy

Trate essa saída como um registro de pré-verificação, não como prova de autorização. O script apenas impede uma associação local incorreta. O armazenamento de credenciais ou o gateway de ações ainda precisa recusar a resolução de agent-production-deploy enquanto uma pessoa não tiver concedido acesso à produção.

Evite configurações que aceitem URLs arbitrárias do agente. Uma interface de solicitação como curl "$TARGET" com um token bearer transforma toda string gerada em um possível destino. Mesmo agentes cuidadosos cometem erros, e texto não confiável em um repositório pode influenciar as chamadas de suas ferramentas. Em vez disso, ofereça ao agente ações nomeadas ou perfis de endpoint fixos.

O mesmo princípio vale para SSH. Não exponha um argumento genérico host junto com uma chave de produção. Vincule uma ação de implantação em produção a um grupo de hosts e a um comando remoto esperados, ou faça a pessoa escolher o destino no momento da aprovação.

Uma verificação que compara apenas uma string como production tem um ponto fraco: nomes podem mentir. Confira também os identificadores do provedor. Um número de conta na nuvem, ID de projeto, ID de assinatura, proprietário do repositório ou ID do cluster de banco de dados oferece algo menos sujeito a mudanças quando alguém copia um arquivo de configuração.

Prompts não podem autorizar uma alteração ativa

Uma instrução que diz «nunca toque na produção» é um contexto útil, mas não é controle de acesso. Agentes seguem saídas de ferramentas, arquivos do repositório, descrições de tarefas e seus próprios planos intermediários. Qualquer um deles pode criar conflito ou confusão. Um prompt não fica diante da solicitação de rede para negá-la.

Uma decisão de produção precisa de um ponto de aplicação fora do processo do agente. Esse ponto deve saber qual processo solicitou a ação, qual identidade de produção ele quer usar, para onde a chamada irá e qual é a ação. Depois, deve exigir uma escolha humana explícita ou rejeitar a chamada.

A aprovação por sessão e a aprovação por chamada resolvem problemas diferentes.

A aprovação por sessão funciona quando uma pessoa revisou uma execução limitada, como um agente aplicando um plano de implantação revisado a um serviço. Ela reduz interrupções repetidas e ainda vincula a autoridade a um processo específico. A aprovação deve expirar quando o processo terminar, não permanecer válida pelo resto do dia porque o terminal continua aberto.

A aprovação por chamada é adequada para ações irreversíveis ou de alto impacto: excluir dados, rotacionar credenciais, alterar a exposição da rede, publicar uma versão ou escrever em um banco de produção. Exigir um clique ou autenticação local a cada uso é intencionalmente mais lento. Esse atrito indica que a ação merece atenção.

Não treine as pessoas a aprovar cartões opacos. Uma tela de aprovação deve tornar a decisão clara, mostrando a identidade do processo, o destino, a identidade da credencial, o método e um resumo da solicitação. «O agente solicita acesso» não oferece nada para o revisor avaliar. «Processo de programação assinado solicita POST para o endpoint de implantação em produção usando a identidade de implantação em produção» já permite identificar uma incompatibilidade.

O Sallyport usa essa separação diretamente: o cofre permanece bloqueado até ser aberto por autenticação local; depois, um novo processo de agente exige autorização de sessão por padrão, enquanto credenciais individuais podem exigir aprovação a cada uso. O agente nunca recebe o segredo de API ou SSH.

Essa escolha rejeita uma recomendação popular: colocar um token de produção em uma variável de ambiente rigorosamente controlada e confiar em um prompt cuidadoso. Ela é popular porque é fácil de conectar aos scripts existentes. Falha porque o processo do agente ainda detém a autoridade, e qualquer chamada de ferramenta capaz de ler seu ambiente ou reutilizar seu processo pode gastá-la.

A falha geralmente começa com uma conveniência inofensiva

Mantenha os segredos de produção fora dos agentes
O Sallyport mantém segredos de API e SSH de produção no cofre criptografado e executa as ações por conta própria.

Incidentes entre ambientes raramente começam com alguém decidindo atacar a produção. Eles começam com uma pequena conveniência que remove uma das verificações.

Considere um repositório de versões com dois perfis. A equipe usa DEPLOY_ENV=staging nos testes e DEPLOY_ENV=production nas execuções ativas. Os dois perfis obtêm DEPLOY_TOKEN do mesmo shell do desenvolvedor porque isso facilitou os primeiros testes. O token tem acesso aos dois projetos de implantação.

Um agente recebe a tarefa de validar uma implantação no staging. Ele lê um script que constrói o endpoint a partir de DEPLOY_ENV. Um comando anterior no mesmo terminal deixou DEPLOY_ENV=production, enquanto um auxiliar posterior imprime um rótulo de staging com base em um arquivo de configuração separado. O agente vê o rótulo, executa o auxiliar e a solicitação vai para o endpoint de produção com um token aceito nesse ambiente.

Nada nessa sequência exige malícia ou uma exploração incomum. A equipe tinha dois rótulos, uma credencial compartilhada, duas fontes de verdade e nenhum ponto de aprovação. Os logs podem até mostrar uma conta normal de desenvolvedor, porque o token compartilhado pertencia a essa pessoa.

Corrigir o problema visível definindo DEPLOY_ENV=staging com mais cuidado não corrige o projeto. O reparo é estrutural:

  1. Substitua o token compartilhado por identidades específicas para cada ambiente.
  2. Vincule cada identidade à conta, ao projeto ou ao conjunto de recursos permitido.
  3. Resolva a identidade por um corretor ou cofre, em vez de usar o ambiente de shell do agente.
  4. Exija autorização humana antes que a identidade de produção possa fazer uma chamada.
  5. Registre o processo, o destino, a referência da identidade, a ação, o resultado e a decisão de aprovação.

Mantenha as configurações de produção e staging em uma única fonte de verdade revisada quando possível, mas não as torne intercambiáveis. Um bloco copiado com um hostname alterado é onde começa a deriva silenciosa. Torne cada perfil explícito o suficiente para que um revisor possa comparar lado a lado o ID da conta, a referência da credencial e as operações permitidas.

A aprovação de produção deve descrever uma execução limitada

Uma aprovação humana só tem valor quando a pessoa consegue associá-la a um trabalho pretendido. «Permitir produção para este agente» é amplo demais. Isso entrega uma capacidade sem um ponto final que o revisor consiga reconhecer.

Defina uma execução de produção com limites concretos: o processo do agente, o repositório ou a tarefa, o serviço pretendido, a classe de ação permitida e uma condição de expiração. Os detalhes dependem das suas ferramentas, mas a decisão deve responder a estas perguntas antes da primeira chamada:

  • Qual processo local está solicitando e é possível identificar sua autoridade de assinatura de código ou seu executável?
  • Qual conta ou endpoint de produção receberá a solicitação?
  • Qual identidade de credencial será usada pela ação?
  • Que ação o agente poderá executar durante esta execução?
  • Quando a autorização termina e quem pode revogá-la agora?

A identidade do processo merece mais atenção. Um rótulo de terminal ou um nome de agente declarado é fácil de imitar. Em uma máquina de desenvolvimento gerenciada, a autoridade de assinatura de código fornece uma indicação mais forte de qual programa abriu a solicitação. Isso não prova que a tarefa é sensata, mas ajuda a impedir que outro processo local use um nome conhecido.

A fadiga de aprovações é uma falha de projeto. Se toda solicitação inofensiva de staging pedir um clique, as pessoas aprovarão sem ler. Mantenha o trabalho normal de staging disponível por meio de suas próprias credenciais restritas. Reserve os prompts de produção para chamadas cujo destino e impacto justifiquem a interrupção.

O erro oposto é pior: uma aprovação que silenciosamente cubra todos os processos futuros do agente. Depois de alguns dias, isso não se distingue de acesso permanente à produção. Vincule a aprovação à execução, faça-a expirar quando a execução terminar e torne a revogação imediata, em vez de depender de um ticket tratado mais tarde.

Para uma implantação que altera vários recursos de produção, não finja que cinco aprovações independentes tornam a revisão melhor. Peça uma autorização de sessão somente se o próprio plano for limitado e visível. Exija aprovação por chamada quando cada chamada puder criar um efeito irreversível diferente. O controle deve corresponder à ação, não cumprir um ritual.

Os registros de auditoria precisam mostrar quem usou a autoridade

Use um único ponto de controle local
Um aplicativo assinado na barra de menus do macOS mantém o núcleo do cofre no próprio processo, sem um daemon separado.

Um log de auditoria de produção deve permitir reconstruir uma ação sem confiar no próprio relato do agente. Uma transcrição de conversa ou histórico de terminal pode ajudar na investigação, mas qualquer um deles pode estar incompleto, editado ou desconectado da credencial que realmente fez a chamada.

Registre o caminho da solicitação no ponto de aplicação, onde a credencial é usada. Capture a identidade do processo do agente, o identificador da sessão, a referência da credencial solicitada, o destino resolvido, o método ou a classe do comando SSH, o horário, o resultado da aprovação, o status da resposta e o evento de revogação. Oculte segredos e corpos de solicitações sensíveis. Um registro de auditoria útil não precisa se transformar em outra fonte de vazamento de dados de clientes.

O controle AU-2 do NIST SP 800-53 exige a definição dos eventos registrados por uma organização. Esse detalhe importa. «Registramos a atividade do agente» não é uma definição. Decida se uma solicitação negada, uma aprovação, um uso de credencial, uma incompatibilidade de destino e uma revogação de sessão contam como eventos. Se você não consegue ver uma solicitação negada, não sabe se a fronteira interrompeu um erro ou se a solicitação nunca chegou até ela.

A evidência de adulteração importa depois de um incidente, porque os logs comuns da aplicação costumam ficar em um local que um administrador ou processo comprometido pode alterar. Um diário encadeado por hashes torna as mudanças detectáveis quando a cadeia é verificada contra os registros armazenados. Ele não transforma decisões ruins em boas nem substitui backups, revisão de acesso ou retenção externa. Ele oferece aos investigadores uma forma de detectar alterações.

O Sallyport grava as visões de Sessões e Atividade a partir de um único log de auditoria criptografado e encadeado por hashes, e sp audit verify pode verificar essa cadeia offline sem uma chave do cofre. Isso é útil quando a pergunta é se o registro mudou, e não se o agente afirma que se comportou bem.

Crie uma rotina de revisão compatível com o risco. Revise autorizações de produção e tentativas negadas depois de execuções relevantes do agente. Compare periodicamente as identidades de produção em uso com as ações que elas realmente executaram. Permissões que nunca aparecem no log são candidatas à remoção. Permissões que você não consegue explicar já são amplas demais.

Rotação e revogação precisam funcionar durante o incidente

Revogue uma execução ativa do agente
O diário de sessões permite a revogação imediata, para que uma execução aprovada do agente seja interrompida enquanto está ativa.

Credenciais separadas só limitam o dano se você puder parar rapidamente de usar a credencial de produção. Um plano de rotação que exige encontrar todos os scripts, editar todas as estações de trabalho e esperar uma janela semanal de implantação não é um controle de incidente.

Dê a cada identidade de agente em produção um responsável, um local onde ela é emitida, uma lista de seus destinos permitidos e um caminho de revogação documentado. Mantenha essas informações separadas do valor secreto. Durante um incidente, as pessoas que respondem precisam saber o que desativar sem abrir arquivos que possam conter credenciais.

Teste esta sequência antes de precisar dela:

  1. Inicie uma execução aprovada do agente em produção que possa realizar uma operação inofensiva e reversível.
  2. Revogue a sessão ou desative a credencial de produção.
  3. Faça o agente repetir a operação.
  4. Confirme que o ponto de aplicação a nega e que a negativa aparece no registro de auditoria.
  5. Emita uma credencial substituta e confirme que o acesso ao staging continua funcionando de forma independente.

Esse teste detecta uma falha operacional comum: a interface mostra «revogado», mas um token em cache, uma conexão SSH persistente ou um processo de longa duração continua funcionando. Para APIs, examine a duração do token e o comportamento de renovação. Para SSH, examine as conexões existentes e a multiplexação. Um botão de revogação só é confiável quando a próxima ação tentada falha.

Faça a rotação das identidades de staging e produção separadamente. Se um segredo de staging vazar, você não deve precisar interromper a produção. Se a autoridade de produção se tornar incerta, revogue e substitua a credencial mesmo quando a exposição suspeita parecer pequena. As pessoas costumam subestimar a distância percorrida por um token no histórico do shell, na saída de depuração, em logs copiados ou no contexto de ferramentas do agente.

Crie a fronteira antes de conceder acesso ativo

As equipes devem conquistar o acesso à produção por meio de evidências, não da confiança em um prompt ou em um modelo de agente. Uma tarefa de programação geralmente tem um caminho de staging, uma simulação, uma consulta somente leitura ou um fluxo de publicação operado por uma pessoa que pode comprovar a maior parte do trabalho primeiro.

Use este teste de prontidão antes de permitir uma nova ação em produção:

  • Staging e produção usam credenciais diferentes que não conseguem se autenticar entre os ambientes.
  • O agente não consegue ler segredos em texto simples de arquivos, variáveis de ambiente, prompts ou saídas de ferramentas.
  • O caminho da solicitação verifica um destino fixo e um identificador de conta ou projeto do provedor.
  • Uma pessoa vê a ação de produção e concede a autoridade fora do processo do agente.
  • Revogação, registro de negativas e verificação de auditoria foram exercitados, não apenas presumidos.

Se um item falhar, mantenha a ação no staging ou faça uma pessoa executar o trabalho de produção diretamente. Isso não é uma derrota da automação por agentes. É uma declaração precisa de que o caminho de controle ainda não está concluído.

A melhor primeira permissão de produção costuma ser uma ação restrita de observação contra um endpoint de status não sensível. Ela testa seleção de destino, separação de identidades, aprovação, registro e revogação sem permitir que o agente altere o estado visível para os clientes. Depois que esse caminho sobreviver ao uso real, adicione uma ação de escrita por vez e remova as permissões de que o agente nunca precisa.

Não mescle o acesso de staging e produção mais tarde porque as aprovações parecem inconvenientes. O atrito na fronteira de produção é o preço de saber quem autorizou uma ação ativa, qual processo a executou e como interrompê-la. Mantenha essa fronteira deliberada.

FAQ

Variáveis de ambiente separadas bastam para isolar staging e produção?

Não. Uma variável de ambiente é apenas uma indicação de roteamento, a menos que a credencial, a conta de destino, os dados e o limite de permissões também sejam diferentes. Se um processo de staging puder usar uma credencial de produção depois que uma única variável mudar, o acesso não está separado.

Agentes de programação devem usar as mesmas credenciais de produção que os desenvolvedores?

Dê ao agente uma identidade de produção própria, diferente da identidade usada por um desenvolvedor humano ou pela automação de staging. Limite-a às operações de API, repositórios, hosts ou ações de implantação exatos de que ele precisa. Uma credencial de curta duração é preferível quando o provedor oferece esse recurso.

Quais ações de produção devem exigir aprovação humana?

Uma pessoa deve aprovar a execução específica em produção depois de revisar o destino e a ação pretendidos. Uma aprovação para um processo de agente definido pode servir para trabalhos de baixo risco, enquanto chamadas destrutivas ou irreversíveis devem exigir aprovação a cada uso. A aprovação precisa ocorrer fora do canal de texto do próprio agente.

O acesso somente leitura à produção é seguro para um agente de programação com IA?

Não. O acesso de leitura pode expor dados de clientes, configurações internas, código-fonte e credenciais presentes nos registros. Conceda acesso de leitura à produção apenas quando a tarefa exigir isso e, sempre que possível, use exportações com dados ocultos ou um modelo de leitura criado para esse fim.

Um mock local pode substituir o staging nos testes do agente?

Use um ambiente de staging real, com credenciais distintas, uma conta ou projeto separado quando for viável e dados de teste que não possam afetar clientes. Um mock local é útil para obter feedback rápido, mas não comprova que o roteamento, a autorização ou a configuração da implantação funcionam com segurança.

Credenciais separadas impedem um agente de danificar a produção?

Identidades separadas limitam o alcance do dano, mas não impedem que o agente faça uma solicitação incorreta dentro do escopo concedido. Você ainda precisa de permissões restritas, autorização humana para produção, registros úteis e uma forma de revogar uma execução ativa.

Como posso verificar se o agente está realmente apontando para o staging?

Confira o destino e a identidade. Registre o hostname resolvido, o identificador da conta ou do projeto na nuvem, o principal da credencial e a operação solicitada antes de permitir uma ação de produção. Não aceite um rótulo como ENV=prod como prova.

Como as equipes devem fazer a rotação das credenciais usadas por agentes de programação?

Mantenha os segredos de staging e produção em armazenamentos ou namespaces diferentes, com responsáveis e registros de rotação distintos. Faça a rotação da credencial de produção quando uma execução do agente der errado ou quando houver dúvida sobre o limite de autorização. Rotacionar apenas o segredo de staging não corrige uma exposição em produção.

Um prompt do agente pode proibir alterações em produção com segurança?

Não. Um prompt pode ser ignorado, reescrito ou confundido pela saída de ferramentas e pelas instruções do repositório. O controle de produção precisa de um ponto de aplicação que receba a ação tentada e peça aprovação humana ou a rejeite.

Quando um agente de programação realmente precisa de acesso à produção?

O acesso à produção se justifica quando a tarefa não pode ser concluída com staging, uma pessoa consegue explicar a ação e o destino exatos e a credencial tem escopo restrito. Para muitas tarefas de programação, o acesso à produção é desnecessário e deve continuar indisponível.

Sallyport

O Sallyport executa chamadas de API e comandos SSH pelo seu agente de IA. As chaves ficam em um cofre local no seu Mac; você aprova cada execução e toda ação vai para um registro selado.

© 2026 Sallyport · Código aberto sob Apache-2.0 · Oleg Sotnikov