Gleam.br Wiki

GBR: ADR-0008 Motor de Inferência Soberano na Borda (BYOC via Llama.cpp) | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

GBR: ADR-0008 Motor de Inferência Soberano na Borda (BYOC via Llama.cpp)

  • *Status:* Aceito
  • *Data:* 2026-05-01

*Contexto:*

As fases anteriores do projeto dependiam de provedores Cloud (Gemini, Groq) via chamadas HTTP (padrão BYOM - Bring Your Own Model)[cite: 53]. Para atingir a verdadeira autonomia na Borda (Edge), operando sob políticas estritas de Zero-Trust e Air-gapped (ambientes sem internet), o Agente Gleam-BR precisava de um motor cognitivo local. A integração direta com ferramentas escritas em Python ou a dependência de daemons externos (como o servidor Ollama) violariam o princípio de ter um único binário resiliente e auto-contido.

*Decisão:*

  1. **Integração Direta com llama.cpp:** Optou-se por utilizar o repositório oficial em C/C++ (llama.cpp) como submódulo nativo (gbr_llm), compilando o seu núcleo matemático paralelamente ao projeto via CMake/GCC (MinGW no Windows)[cite: 53, 54].
  2. *Ponte FFI via Rustler:* O código C++ é encapsulado por um NIF (Native Implemented Function) escrito em Rust. O Rust garante o gerenciamento de lifecycles e a segurança de tipagem na passagem de BitArrays e Strings entre o Erlang (BEAM) e os ponteiros brutos do C++.
  3. *Oráculo como Ator OTP:* O módulo oracle.gleam deixou de ser uma abstração de utilitários HTTP e foi promovido a um *Ator OTP (GenServer)*[cite: 53]. Isso garante que a inicialização da IA e a gestão de estado ocorram isoladamente.

*Consequências:*

  • *Positivas:* Soberania total dos dados, eliminando custos de Egress (FinOps) e latência de rede em consultas analíticas de código. A arquitetura suporta modelos quantizados minúsculos (GGUF, 1.58-bit) capazes de rodar em CPUs comoditizadas[cite: 53].
  • *Negativas/Riscos:* A complexidade da compilação cruzada (Cross-compilation) e a gestão de ABIs (como a linkagem estática do libstdc++ e o contorno da ausência do prefixo lib no Windows) aumentam drasticamente a barreira de entrada para desenvolvedores que desejam compilar o core do projeto a partir do zero[cite: 54].