Pitch: Como uso múltiplos perfis de Claude e Codex ao mesmo tempo no terminal com Rust
Se você usa CLIs de LLM (como claude-code, codex ou gemini-cli), já sentiu a dor. Essas ferramentas salvam a autenticação de forma global (geralmente em ~/.config). Quer mudar da conta da empresa para a conta pessoal? Tem que deslogar e logar de novo, ou ficar fazendo malabarismo com variáveis de ambiente.
Eu resolvi isso criando o cloak, uma ferramenta em Rust que permite isolar identidades por diretório. Com ele, consigo ter quatro instâncias do Claude abertas em abas diferentes, cada uma logada em uma conta distinta, sem nenhum conflito.
O Problema da Identidade Global
A maioria das CLIs modernas de IA não foi feita para quem "multitaska" entre diferentes clientes ou contextos. Elas assumem que você é um usuário único com uma chave única. Se você exporta uma ANTHROPIC_API_KEY global, ela vaza para todos os seus projetos.
A Solução: Isolamento de Processo via exec(2)
O cloak não é um wrapper pesado ou um daemon. Ele funciona como um roteador de ambiente:
- Associação por diretório: Você define qual perfil um repositório usa com um simples
cloak use workoucloak use personal. - Resolução de Escopo: Ao subir a árvore de diretórios, ele encontra o arquivo
.cloake resolve o caminho de configuração isolado (ex:~/.config/cloak/profiles/work/claude). - Ponte de Execução: Ele define as variáveis de ambiente necessárias (como
CLAUDE_CONFIG_DIR) e limpa as globais para evitar vazamentos. - Substituição de Processo: Ele usa a syscall
execpara substituir o processo atual pelo da CLI real. Para o seu terminal, é como se a CLI original estivesse rodando nativamente, mas com o "manto" (cloak) da identidade correta.
O Diferencial: Múltiplos Perfis Simultâneos
A grande vantagem é que o isolamento acontece no nível do processo filho. Isso significa que eu posso:
- No diretório
/projeto-a, rodar o Claude com a conta da empresa. - No diretório
/side-project, rodar o Claude com a conta pessoal. - Tudo ao mesmo tempo.
Funcionalidades Adicionais
- Account Inspection: Ele lê os arquivos de credenciais locais (JWTs, JSONs) e te diz exatamente quem está logado em cada perfil antes de você disparar um comando caro.
- Editor Integration: Consegui isolar até o
user-data-dirde editores como Cursor e VS Code, garantindo que as extensões também respeitem o perfil do projeto. - Usage Limits: Ele captura os snapshots de limites de uso e centraliza tudo em um comando
cloak profile limits.
O projeto está em Rust pela performance e segurança de memória, garantindo que esse roteamento de ambiente tenha overhead zero.
O que acham dessa abordagem de isolamento por diretório comparado ao uso de containers ou VMs para desenvolvimento?
Repositório: https://github.com/juniormartinxo/cloak