o que sobe e o que não sobe
Privacidade
Escrito para você conferir, não para você acreditar. Todo comando desta página roda na sua máquina e mostra exatamente o que está guardado.
O texto do seu prompt nunca sai daqui
O que o Batuta grava do seu turno é o hash do prompt, o número de caracteres e quantas palavras sobraram depois da limpeza. O texto, nunca.
E o hash é feito com um sal local — um número aleatório gerado uma vez na sua máquina, guardado em ~/.batuta/sal com permissão 0600, que nunca é enviado. Sem o sal, ninguém consegue testar um palpite de prompt contra o hash. Nem nós.
O que fica na sua máquina
| arquivo | o que é |
|---|---|
| ~/.batuta/sal | número aleatório criado uma vez, que nunca sai daí |
| ~/.batuta/index.txt | nome, descrição e palavras das skills que você já tem |
| ~/.batuta/eventos.jsonl | uma linha por turno: hash do prompt, comprimento, skills sugeridas e se você usou alguma |
| ~/.batuta/config.txt | suas preferências |
Não fica gravado em lugar nenhum: o texto do seu prompt, a resposta do modelo, nome de arquivo do seu projeto, seu usuário, sua máquina.
O que sobe — se você deixar
Enviar dado é opt-in explícito. Vem desligado. Enquanto estiver desligado, nada sai da sua máquina — e o batuta report continua funcionando inteiro, offline. O valor local não é refém do upload.
Se você ligar, o que sobe é o resumo diário agregado por skill — nunca evento cru. 200 turnos por dia viram cerca de 20 linhas, mais ou menos assim:
{
"schema": "batuta.daily_summary.v1",
"day": "2026-08-24",
"installation": "9f2c1ab4de77e015",
"skills": [
{ "skill": "systematic-debugging", "routes": 12, "activations": 9,
"turns_ok": 8, "cost_usd": 0.184, "ghost": false }
]
}Sem prompt. Sem hash de prompt. Sem identificador de turno. Sem caminho de arquivo. O installation é derivado do próprio sal, então não carrega seu nome, sua máquina nem sua pasta — serve só para dizer “estas linhas vieram do mesmo lugar”.
Confira antes de decidir
batuta privacy # o que está guardado
batuta summary # exatamente o que subiria, imprimido na sua tela
batuta config upload yes # só depois de ver o de cimaApagar tudo
rm -rf ~/.batutaÉ isso. Não tem conta, não tem login, não tem servidor guardando um espelho do seu histórico.
O holdout, declarado
Em 5% dos turnos o roteador se cala de propósito. Isso não é bug: é o grupo de controle que permite medir causa em vez de correlação. É declarado na primeira execução, é configurável e é desligável com batuta config holdout 0. Experimento escondido destrói o projeto — então ele não é escondido.