Aviso honesto: fluxo NÃO oficial e não testado por nós
Nem a Anthropic nem a Google dão suporte a correr um agente numa TV box com Termux. Nós não o testámos de ponta a ponta numa caixa concreta: o guia junta peças que existem e funcionam em separado (Termux, Termux:Boot, wake lock, a API do Claude e os bots do Telegram). Cada caixa chinesa é um mundo e, na tua, algum passo pode mudar. Faz isto com calma e com uma caixa com que não te importes de experimentar.
Uma TV box Android de 30 € (ou um telemóvel antigo da gaveta) pode fazer de «computador ligado 24/7» para um agente de IA. A caixa só executa; o Claude pensa na nuvem. Tu falas com ele através de um bot do Telegram privado que só te responde a ti, mesmo com o portátil desligado.
Como funciona
Escreves ao bot
A partir do Telegram, no teu telemóvel, onde estiveres.
A caixa recolhe a mensagem
O Termux pergunta ao Telegram a cada poucos segundos (long polling, sem abrir portas).
O Claude pensa na nuvem
A caixa envia a tarefa à API do Claude e recebe a resposta.
Recebes a resposta
O bot devolve-ta pelo Telegram. Só ao teu chat_id.
Para que serve (e para que não serve)
| Sim | Não |
|---|---|
| Resumir textos, redigir, responder a dúvidas | Nada pesado: tem 2 GB de RAM |
| Avisos programados todas as manhãs | Nada que precise de um navegador a sério |
| Scripts pequenos que se repetem | Substituir um Mac Mini: é muitíssimo mais lento |
O que precisas
- Uma TV box Android tua: tipo X96Q, H96 ou semelhante, chip ARM de 4 núcleos, 2 GB de RAM e Android 7 ou superior (melhor 9+). Uns 25-35 €. Não a box da tua operadora: costuma estar bloqueada, é deles e mexer nela pode ir contra o teu contrato.
- Wi-Fi ou cabo, e um teclado/rato USB (ou a app de comando no telemóvel) para os primeiros passos.
- Uma conta na consola do Claude (platform.claude.com) com saldo. A API paga-se por utilização; não é a subscrição Pro.
- Telegram no telemóvel.
Passo 0: o prompt (foto + Claude)
Tira uma foto à caixa (e à etiqueta de baixo, se tiver o modelo) e cola-a no claude.ai com este prompt. O Claude vai guiar-te de forma adaptada à tua caixa:
Esta é a minha TV box Android (foto em anexo). Quero transformá-la num servidor que execute um agente de IA 24/7, mesmo com o portátil desligado. Plano:
1) Identifica o modelo, o chip (arquitetura ARM, 32 ou 64 bits) e a versão provável do Android. Se não tiveres a certeza, diz-me como confirmar nas Definições ou com "uname -m" e "getprop ro.build.version.release".
2) Guia-me passo a passo para instalar o Termux e o Termux:Boot a partir do F-Droid (não do Google Play) NESTE aparelho, com as definições do Android necessárias (fontes desconhecidas, tirar a otimização de bateria ao Termux).
3) Que o Android não mate o processo: termux-wake-lock e arranque automático com o Termux:Boot.
4) Escreve-me um bot do Telegram em Python SEM dependências externas (só a biblioteca padrão) que:
- use long polling (sem abrir portas),
- responda SÓ ao meu chat_id (lido de uma variável de ambiente) e ignore os restantes,
- envie as minhas mensagens à API do Claude e me devolva a resposta,
- leia as chaves de variáveis de ambiente. NUNCA me peças para colar as minhas chaves neste chat.
5) Diz-me como testá-lo e como ver os logs se falhar.
Vai passo a passo: dá-me um passo, espera que eu diga «feito» ou o erro, e continua.Em baixo tens o mesmo caminho por escrito, caso prefiras fazê-lo à mão.
Passo 1: Termux e Termux:Boot a partir do F-Droid
- Na caixa, abre o navegador e descarrega o F-Droid em f-droid.org. Permite instalar apps de «fontes desconhecidas» quando to pedir.
- A partir do F-Droid instala o Termux e o Termux:Boot. Os dois do mesmo sítio: o Termux:Boot só executa scripts se estiver assinado com a mesma chave que o Termux, e cada loja assina com uma chave diferente.
- Abre o Termux:Boot uma vez (basta abri-lo). Assim o Android deixa-o arrancar ao ligar.
- Definições do Android → Apps → Termux → Bateria → Sem restrições / não otimizar.
Passo 2: preparar o Linux dentro do Termux
Abre o Termux e escreve:
pkg update && pkg upgrade -y
pkg install -y python
uname -m # aarch64 = ARM de 64 bits (o normal)
Passo 3: o bot do Telegram
- No Telegram, fala com o @BotFather →
/newbot→ dá-lhe um nome. Ele dá-te um token: não o partilhes. - O teu chat_id: escreve qualquer coisa ao teu bot novo e abre no navegador
https://api.telegram.org/bot<O_TEU_TOKEN>/getUpdates. Procura"chat":{"id":123456789: esse número é o teu chat_id.
Passo 4: as chaves, fora do código e fora do chat
Cria uma chave na consola do Claude → API keys. Depois, no Termux:
nano ~/.agente.env
Cola isto com os teus valores:
export ANTHROPIC_API_KEY="sk-ant-..."
export TELEGRAM_TOKEN="123456:ABC..."
export CHAT_ID="123456789"
export MODELO="coloca-aqui-o-id-do-modelo"
Copia o ID do modelo da lista oficial de modelos (um Haiku é o mais barato para tarefas pequenas). Guarda (Ctrl+O, Enter, Ctrl+X) e protege o ficheiro:
chmod 600 ~/.agente.env
Define um limite de gastos
Na consola do Claude, em Limits, fixa um teto de gastos mensal. Assim, mesmo que algo corra mal, não apanhas um susto.
Passo 5: o agente (Python sem dependências)
nano ~/agente.py
import json, os, time, urllib.request
TG = f"https://api.telegram.org/bot{os.environ['TELEGRAM_TOKEN']}"
YO = int(os.environ["CHAT_ID"])
KEY, MODELO = os.environ["ANTHROPIC_API_KEY"], os.environ["MODELO"]
def post(url, data, headers=None):
req = urllib.request.Request(url, json.dumps(data).encode(), {"Content-Type": "application/json", **(headers or {})})
with urllib.request.urlopen(req, timeout=120) as r:
return json.load(r)
def claude(texto):
r = post("https://api.anthropic.com/v1/messages",
{"model": MODELO, "max_tokens": 1500,
"system": "És o meu assistente. Respostas claras e curtas, em português europeu.",
"messages": [{"role": "user", "content": texto}]},
{"x-api-key": KEY, "anthropic-version": "2023-06-01"})
return "".join(b.get("text", "") for b in r.get("content", [])) or "(sem resposta)"
offset = 0
while True:
try:
upd = post(f"{TG}/getUpdates", {"offset": offset, "timeout": 50})
for u in upd.get("result", []):
offset = u["update_id"] + 1
msg = u.get("message") or {}
if msg.get("chat", {}).get("id") != YO or "text" not in msg:
continue # só te responde a ti
post(f"{TG}/sendMessage", {"chat_id": YO, "text": "Recebido. Vou tratar disso."})
post(f"{TG}/sendMessage", {"chat_id": YO, "text": claude(msg["text"])[:4000]})
except Exception as e:
print("erro:", e)
time.sleep(10)
Testa-o:
source ~/.agente.env && python ~/agente.py
Escreve ao teu bot a partir do Telegram. Se te responder, funciona. Ctrl+C para o parar.
Passo 6: que não adormeça e arranque sozinho
mkdir -p ~/.termux/boot
nano ~/.termux/boot/agente.sh
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
. ~/.agente.env
nohup python ~/agente.py >> ~/agente.log 2>&1 &
chmod +x ~/.termux/boot/agente.sh
Reinicia a caixa. Sem abrir nada, escreve ao bot: deverá responder. Se não, vê o log com cat ~/agente.log. O termux-wake-lock deixa uma notificação fixa do Termux: é normal, é o que evita que o Android o feche.
Ideias de tarefas para começar
- «Resume-me este texto que te colo.»
- «Escreve-me 3 versões desta mensagem para um cliente.»
- «Faz-me o guião de um reel sobre X.»
- Avisos: instala o
cronie(pkg install cronie) e programa um script que corra todas as manhãs e te envie o resultado para o bot.
Limites e segurança (lê isto)
- Não oficial e não testado por nós de ponta a ponta. Se um passo falhar na tua caixa, cola o erro no Claude.
- O Claude Code (a ferramenta de terminal) no Termux também não é suportado oficialmente; por isso este guia usa a API diretamente.
- Custo: cada mensagem gasta tokens da API. Limite de gastos definido = tranquilidade.
- Chaves: só em
~/.agente.env, na caixa. Nunca no chat com o Claude, nunca em capturas de ecrã, nunca no GitHub. - Privacidade: o que envias ao bot passa pelo Telegram e pela API da Anthropic. Não lhe passes dados sensíveis.
- Se venderes ou ofereceres a caixa: apaga o Termux (ou repõe as definições de fábrica) e revoga a chave de API e o token do bot.
Checklist
- TV box tua (ou telemóvel antigo) com Android 7 ou superior.
- Termux e Termux:Boot instalados a partir do F-Droid, e Termux:Boot aberto uma vez.
- Termux sem otimização de bateria.
- Bot criado com o @BotFather e o teu chat_id anotado.
- Chaves em
~/.agente.envcomchmod 600e limite de gastos definido. - O bot responde-te depois de reiniciares a caixa.