você › testa o checkout, a chave é sk_live_51Hx9KqLm2Vw8fQ agente › ✓ cobrança criada
Funcionou, e a chave de produção ficou no histórico da conversa, nos logs e no provedor do modelo. Para trocar, só depois de achar todos os lugares.
Cofre de segredos local-first
O Arca descriptografa o cofre só na memória e injeta as variáveis no processo filho. Sem .env em disco, sem segredo colado no chat. Cada uso é autorizado, limitado e auditado.
$ arca unlock --vault pessoal ✓ cofre destravado por 15 min $ arca run -- go run . conectando em postgres://app:████████@db.interno:5432/api servidor ouvindo em :8080
O problema
Você pediu ao agente: "testa o checkout". O teste chama a API do Stripe, então precisa de STRIPE_KEY. Três jeitos de entregar a chave, e o que acontece quando o agente tenta ver o valor:
você › testa o checkout, a chave é sk_live_51Hx9KqLm2Vw8fQ agente › ✓ cobrança criada
Funcionou, e a chave de produção ficou no histórico da conversa, nos logs e no provedor do modelo. Para trocar, só depois de achar todos os lugares.
.envvazaagente › cat .env STRIPE_KEY=sk_live_51Hx9KqLm2Vw8fQ agente › ✓ cobrança criada
Funcionou, e qualquer leitura de arquivo, ou um README com instrução escondida, entrega a chave ao contexto do agente.
agente › arca run -- npm test ✓ cobrança criada agente › arca run -- printenv STRIPE_KEY ████████████████████
O teste usa a chave de verdade. Se o agente tentar imprimi-la, a saída é redigida e ele só vê blocos.
Um cofre no lugar de vários .env
.env para cada projetoHoje cada projeto carrega a própria cópia dos mesmos segredos. Com o Arca, os segredos ficam num cofre só, e cada pasta guarda apenas um .arca que diz a qual projeto e ambiente ela pertence.
api/.env STRIPE_KEY=sk_live_… web/.env STRIPE_KEY=sk_live_… worker/.env STRIPE_KEY=sk_live_… (antiga)
.arca por pastacentralizaapi/.arca projeto api, ambiente dev web/.arca projeto web, ambiente dev worker/.arca projeto worker, ambiente dev cofre cifrado: STRIPE_KEY, …
.arca não tem segredo nenhum: pode ir para o git.arca init, sem copiar nada..env1 · Importe o que já existe
O Arca mostra uma prévia só com os nomes das chaves, aponta duplicadas e conflitos e importa para o projeto e ambiente que você escolher.
$ arca scan --project api --env dev ./api/.env
2 · Vincule a pasta
.arcaUm arquivo pequeno, sem segredo, que diz o projeto e o ambiente. Flags como --env prod sempre vencem o arquivo.
$ cd api && arca init --project api --env dev .arca criado (projeto api, ambiente dev).
3 · Rode sem arquivo
.envO arca run acha o projeto pelo .arca e injeta as variáveis no processo. O .env original já pode ir embora.
$ arca run -- npm start
Vários projetos usam o mesmo banco? Guarde a senha num item e referencie. A referência guarda o nome do item e do campo, nunca o valor.
$ arca ref add DATABASE_URL 'postgres://${item:db/pg#user}:${item:db/pg#password}@${item:db/pg#host}/api' # trocou a senha em db/pg? todo projeto que a referencia já usa a nova
Como funciona
O mesmo cofre, do café ao fim do dia. Você pediu "testa o checkout" e o teste chama o Stripe. A saída abaixo é ilustrativa.
A senha mestra vai para o arca agent, que guarda a chave só na memória, num socket 0600, por 15 minutos. Nada fica em disco.
$ arca unlock --vault pessoal ✓ cofre destravado por 15 min
Ele chama arca run. O Arca acha o projeto pelo .arca da pasta, confere se ele foi liberado, aplica a política de cada segredo, injeta STRIPE_KEY e DATABASE_URL no processo e redige a saída.
agente › arca run -- npm test ✓ cobrança de teste criada ✓ 12 testes passando
A política de STRIPE_KEY em prod exige aprovação a cada uso. O agente espera; um diálogo aparece na janela do Arca e um aviso no desktop. A aprovação vale para um único run e expira em 60 segundos.
agente › arca run --env prod -- npm run smoke ⏳ aguardando aprovação humana (60 s) você › arca approve ✓ aprovado uma vez
O cofre pode cortar o acesso do agente com a tela bloqueada. No dia seguinte, a auditoria mostra cada uso, sem nenhum valor.
$ arca audit --last 3 09:02 run api/dev agente liberado 09:15 run api/prod agente aprovado por você 18:52 run api/dev agente negado: tela bloqueada
O agente do Arca identifica o chamador pelo /proc do PID do socket, sem acreditar no que o cliente declara. Pedir o mesmo cofre, por três caminhos:
arca item show banco/itau --revealNo terminal ou na janela, verificado. Pode tudo, inclusive ver os valores.
arca run -- npm testO agente de IA, sem terminal. Só consegue rodar. Perde o acesso com a tela bloqueada.
python -c "socket.connect(...)"Script, nc, qualquer coisa. Nunca recebe a chave nem descobre se o cofre está destravado.
Recursos
Quando o agente vai tocar produção
O agente espera você aprovar na janela ou com arca approve. Uso único, prazo curto, falha fechada se ninguém responder.
$ arca policy --project api --env prod DATABASE_URL --confirm sim
Quando você dá git push ou ssh
O Arca vira credential helper e ssh-agent. A chave privada nunca sai do cofre, só a assinatura. O agente usa só o que você liberar.
$ arca git add github.com --item github/pat $ arca git setup github.com
Quando o app pede um certificado
O certificado ou o JSON de serviço vira arquivo temporário em memória, passado por variável, zerado e apagado quando o processo termina.
TLS_CERT=${file:certs/api} # vira um caminho em tmpfs, só durante o run
Quando você tem .env espalhados
Acha chaves SSH, AWS, kube e .env pela máquina, sem mostrar valores, e importa do Bitwarden ou de CSV com prévia e triagem.
$ arca discover $ arca scan --project api --env dev ./app/.env
Quando o notebook morre
Cópias cifradas em pasta, pendrive, nuvem ou Git privado, com código de recuperação e restauração testada antes de confiar nela.
$ arca backup setup
Quando o agente entra em loop
Teto de runs por minuto e um log só de acréscimo com cada uso, sem valores, para você saber o que rodou e quando.
$ arca config set --rate 5 $ arca audit
Também: itens tipados (login, chave, token, banco, cartão), gerador de senha, TOTP, 100% local, Argon2id e AES-256-GCM.
Janela Tauri em HTML puro, escuro por padrão, Ctrl+K global. O dia a dia é no terminal; a janela mostra aprovações, agentes e a saúde do cofre.



Imagens ilustrativas, com dados de exemplo.
Gerenciador de senhas é feito para humanos preenchendo formulários. O Arca é feito para processos executados por agentes.
| Gerenciador convencional | Arca | |
|---|---|---|
| Quem consome | Pessoa, em formulário | Processo filho, por arca run |
| Segredo em disco | .env, export, clipboard | Nenhum; tmpfs só quando preciso |
| Agente de IA | Vê o valor | Usa, mas não lê |
| Controle de uso | Tudo ou nada | Política, aprovação, limite de taxa |
| Nuvem | Costuma exigir conta | Local; backup é opcional |
O Arca é uma barreira contra acesso acidental e injeção de prompt, não um sandbox. Ele não passou por auditoria externa: leia o modelo de ameaça antes de confiar segredos de produção a ele.
mlock, sem core dump e sem leitura via /proc/PID/mem.arca guard no seu agente de IA bloqueia .env, arquivos do cofre e comandos humanos.innerHTML, CI com govulncheck e gitleaks.Linux. Go 1.26+. Para a janela, Rust e as bibliotecas de desenvolvimento do WebKitGTK 4.1.
$ git clone https://github.com/Joaovitor12j/arca.git && cd arca $ go build -o ~/.local/bin/arca ./cmd/arca
Pacote .deb com a janela e o CLI juntos:
$ scripts/build-deb.sh $ sudo dpkg -i dist/arca_*_amd64.deb
Primeiros passos:
$ arca vault create pessoal $ arca unlock --vault pessoal $ arca scan --project api --env dev ./app/.env $ arca allow --project api $ arca run --project api --env dev -- go run .