1

Pitch: Fiz um mascote de mesa com ESP32 que reage ao Claude Code, sem OAuth e sem gastar token

Começou como um devaneio pequeno: uma telinha mostrando o consumo de tokens do Claude Code. Daí empolguei com a ideia de fazer algo deliciosamente inútil, juntei uma impressora 3D, um rolo de filamento laranja parado aqui em casa... e nasceu o Claudinho, um Clawd de mesa que reage em tempo real ao que o Claude está fazendo.

Ele mostra quando o Claude está pensando, rodando ferramenta, esperando permissão, deu erro ou terminou. Mostra também o uso das janelas de 5 horas e 7 dias e o contexto, e apita quando o Claude termina ou precisa de mim. Assim eu paro de ficar encarando o terminal.

As duas regras que eu me impus

1. Nada de OAuth. Não aceitava que um enfeite de mesa tivesse acesso à minha conta, nem guardado na placa, nem numa API de terceiros. A saída foi usar o que o Claude Code já entrega no próprio computador:

  • hooks: o Claude Code chama um script a cada evento (começou, usou ferramenta, pediu permissão, terminou...), e o script manda um POST pequeno para a placa na rede local;
  • status line: o Claude Code passa para ela, em JSON, o uso do plano e o contexto. O script repassa só os números.

A placa nunca vê credencial nenhuma, só um segredo local para ninguém da rede mandar evento falso.

2. Custo zero de token. Os hooks rodam em segundo plano, fora do modelo. O Claude nem sabe que o Claudinho existe.

Hardware

Hoje são duas versões:

  • Placa única (a recomendada): a E32R28T, um ESP32 com tela de toque de 2,8" já integrada, alto-falante e bateria. Soldagem: só os 2 fios do USB-C de energia na caixa.
  • Clássica: ESP32-C3 Super Mini + display Nextion 2,4".

Algumas coisas que deram trabalho e foram divertidas:

  • Saber se está carregando. O pino de status do carregador (TP4054) não chega no ESP32. A solução foi olhar só a tensão da bateria: quando pluga o cabo, ela pula uns 100 mV de uma vez, e quando tira, cai o mesmo tanto. Somado a uma tendência lenta de subida, deu para mostrar o raiozinho de carga.
  • A voz. É de robô e gerada na hora na própria placa, sem nada gravado, saindo pelo DAC de 8 bits do ESP32.
  • Extras inúteis, como prometido: jogo da velha, Genius e um painel da impressora 3D Bambu Lab via MQTT local.

Instalação

Entra como plugin do Claude Code, e uma skill guia a gravação do firmware e a configuração do Wi-Fi conversando com você.

Quem fez o quê

A caixa é 100% minha, modelada à mão no SketchUp. O firmware, os scripts, o plugin e boa parte da documentação foram escritos pelo Claude dentro do próprio Claude Code, comigo testando cada passo na placa de verdade. O Codex (GPT) fez uma revisão de segurança. Autoria dividida, para ninguém guardar mágoa quando a Skynet chegar.

Projeto de fã, sem ligação oficial com a Anthropic. Dúvidas e sugestões são bem-vindas!

Carregando publicação patrocinada...