Pular para o conteúdo

ADR 0005 — O serviço Python sai do ar, e o Render sai do mapa

Status: canônico · Escopo: Onde o apps/llm-service roda, e por que ele não roda em lugar nenhum agora · Atualizado em: 2026-08-11

O apps/llm-service — 10 mil linhas de Python, FastAPI com pydantic-ai — rodava no Render no plano gratuito. Existiam duas implantações possíveis no repositório e nenhum registro da escolha: só um comentário de uma linha no workflow de deploy dizendo que produção usava o Render.

A pergunta que abriu esta decisão foi: a Cloudflare roda Python em Workers, por que estamos no Render? Investigando, a resposta mudou de “qual hospedagem” para “isto precisa estar no ar?”.

Nada que vendemos hoje passa pelo serviço.

CaminhoUsa o serviço Python?
Ligação ao vivoNão — a Vapi conversa com a OpenAI direto (provider: 'openai')
Chat hospedado e /labSim — e o chat saiu do foco comercial
Follow-up 30 min após ligaçãoSim — mas entrega por SMS, e o Twilio não está configurado

O serviço sustentava uma superfície engavetada e um follow-up sem canal de entrega.

Python Workers (Pyodide) — rejeitada. A Cloudflare roda Python compilado para WebAssembly e aceita apenas pacote puro ou PyEmscripten; extensão C nativa não roda. O psycopg até tem contorno — existe driver Neon HTTP no código —, mas pydantic-ai e logfire/OpenTelemetry num runtime que a própria documentação descreve como “estágios iniciais” transformam a migração em semanas de reescrita com risco de descobrir no fim que uma dependência não compila.

Cloudflare Containers — adiada, e é o caminho quando voltar. O apps/llm-edge-worker já está inteiro configurado: instância basic, máximo 3, dorme em 10 min. Roda a imagem Docker que já existe, sem reescrever nada. Custa o Workers Paid (US$ 5/mês, com 25 GiB-hora inclusas) e tira um fornecedor do mapa.

Desligar — escolhida. Manter no ar de graça também não custava dinheiro, mas custava um fornecedor a mais, uma issue viva (#97, hibernação) e a impressão de que o chat funciona.

  1. O serviço sai do ar. O Render deixa de existir na arquitetura: render.yaml e o workflow de publicação de imagem foram removidos.
  2. O código fica. São 10 mil linhas de trabalho real, com testes e evals; apagar seria destruir valor por uma decisão de hospedagem.
  3. Quando voltar, volta em Cloudflare Containers, pelo apps/llm-edge-worker.
  4. LLM_SERVICE_URL vira opcional, e quem depende dela recusa alto em vez de estourar.

⚠️ O chat hospedado para de responder. chat.tactflow.io/book/:slug continua abrindo e o agendamento continua de pé, mas o turno de conversa devolve 503 com motivo explícito. Era o link de demonstração citado no runbook — quem for demonstrar hoje demonstra a ligação, que é o produto.

  • Um fornecedor a menos, e o custo continua zero
  • A #97 (hibernação do LLM no Render) perde o objeto
  • Voltar ao chat passa a ter um preço explícito: US$ 5/mês e ligar o llm-edge-worker
  • ⚠️ Enquanto estiver desligado, /lab e a ingestão de conhecimento também não funcionam