gsantana.dev
Gabriel Santana

Sobre

Gabriel Santana

Arquiteto de Soluções de IA

[email protected]

Projeto e construo sistemas em nuvem, ultimamente com foco em agentes de IA: plataformas distribuídas de agentes, RAG corporativo e a infraestrutura que os mantém rodando entre nuvens.

Este site é onde escrevo sobre isso: posts práticos sobre Azure e arquitetura, e os Princípios em que me apoio para tomar decisões de design.

CertLabs

Microsoft Azure, da administração à arquitetura de soluções.

Projetos

O que eu construí

19 projetos do meu GitHub, de um mapa indoor para pessoas cegas em 2020 às plataformas de agentes deste ano. Os grandes primeiro, depois o laboratório.

O logo do Corollary: uma fita azul e violeta dobrada em C em volta de um ponto violeta.

2022 · 202617 estrelas

Corollary

Um runtime de agentes que mantém cada conclusão presa à evidência que a sustenta.

Agentes costumam guardar o estado como um log de mensagens, então um fato errado no passo 3 é lido no passo 40 com a mesma confiança de um resultado de ferramenta verificado. O Corollary guarda crenças no lugar: cada afirmação registra de onde ela vem, e um sistema de manutenção de verdade retira cada conclusão que dependia de uma entrada corrigida e deriva de novo só essas. O modelo apenas propõe afirmações; o runtime as valida, executa as ferramentas e monta todo contexto a partir das crenças que continuam valendo.

  • Corrija uma entrada e só o que dependia dela muda: 12 de 20 conclusões no demo, sem nenhuma chamada ao modelo
  • As respostas vêm com uma prova que um verificador determinístico confere: contas, citações e datas
  • Python
  • mypy strict
  • Claude
  • OpenAI-compatible
  • Ollama
  • MkDocs
O grafo de crenças do Corollary: a receita do 2º trimestre é corrigida, as conclusões que dependiam dela saem (OUT) e são derivadas de novo, e uma crença de risco independente fica intocada.
A tela de entrada do ReachUp.
O mapa indoor do ReachUp com a posição do visitante entre as lojas.
O menu lateral com mapa, anúncios, narrador e feedback.

2020 · 20247 estrelas

ReachUp!

Um Google Maps para dentro do shopping, feito para quem não pode vê-lo.

Um app de localização indoor para pessoas cegas e com baixa visão. Beacons Bluetooth espalhados pelo shopping dizem ao celular onde ele está, e o app guia o visitante por voz até lojas, banheiros e restaurantes. Ajuda também qualquer um com pressa, e a gestão do shopping recebe relatórios de visitas e um canal de anúncios.

  • Distância pelo RSSI e TxPower de cada beacon, zonas pelos ids major e minor
  • Modo narrador e busca por voz no app inteiro
  • Dart
  • Flutter
  • MobX
  • ASP.NET Core
  • MySQL
  • BLE beacons
  • TypeScript
A distribuição dos beacons sobre a planta do shopping.
Beacons Bluetooth Low Energy espalhados pelo shopping transmitem o UUID, a força do sinal e os ids major e minor. O app Flutter estima onde o visitante está a partir desses sinais e o guia por voz até lojas, banheiros e restaurantes. Ele conversa com uma Web API em ASP.NET Core com autenticação JWT, sobre MySQL, onde a gestão do shopping publica anúncios e lê relatórios de visitas.
github.com/gabe-santana/agentic-mesh
Demo do AgenticMesh: um PDF é ingerido, o chat responde com citações e o trace do pipeline abre.
O chat com uma resposta em Markdown e o painel de trace do pipeline.

2026

AgenticMesh

Uma plataforma distribuída de agentes de IA e RAG enterprise.

Você sobe seus documentos, conversa com um agente que responde a partir deles citando as fontes e abre o trace de cada resposta: quanto tempo levaram a busca e a geração, quais trechos voltaram com qual score e o prompt de sistema exato que o modelo recebeu.

  • Streaming token a token por SSE, renderizado em Markdown
  • Ingestão assíncrona: workers Celery quebram, geram embeddings e indexam no Qdrant
  • Seis serviços, um docker compose up
  • Python
  • FastAPI
  • Celery
  • Qdrant
  • PostgreSQL
  • Redis
  • Next.js
  • Azure AI Foundry
  • Docker
github.com/gabe-santana/laya-classifier
O painel do laya-classifier analisando uma caixa de entrada de exemplo.
E-mails passando por um portal de análise para as filas de entregar, alertar e quarentena.

2026

laya-classifier

Um filtro de segurança de e-mail em que o modelo lê e o código confere.

O Laya, um modelo de decisão de pesos abertos, responde cinco perguntas tipadas sobre cada e-mail numa única passada, em inglês e português. Código comum confere o que um modelo não deve adivinhar, como DMARC, domínios parecidos e links disfarçados, e uma política curta transforma os dois em entregar, alertar ou quarentena.

  • 9 de 10 ataques pegos, nenhum e-mail legítimo em quarentena
  • Cerca de 60 ms por e-mail numa GPU de notebook
  • Python
  • Laya
  • PyTorch
  • FastAPI
  • ModernBERT
Capa do Sightline: quadros de vídeo virando achados com timestamp.
Sightline na AWS: App Runner, RDS e duas Lambdas em subnets privadas, chamando Bedrock, EventBridge, Transcribe e S3.

2026

Sightline

Inteligência autônoma de vídeo e áudio para agentes de IA.

Transforma horas de vídeo gravado em respostas auditáveis. Cada achado volta como JSON validado por schema, com ID do vídeo, timestamp e confiança, e o modelo nunca pode inventar os dois primeiros.

  • Ingestão em três saltos de EventBridge, cada um com retry e dead-letter queue
  • Subnets privadas, sem NAT gateway: todo serviço AWS por VPC endpoint
  • Terraform
  • AWS
  • Bedrock
  • Transcribe
  • EventBridge
  • Lambda
  • App Runner
  • RDS
VCN da Oracle Cloud e VPC do Google Cloud ligadas por um túnel IPsec entre o DRG e a HA VPN.

2026

Hybrid MCP Agent Orchestrator

O raciocínio de IA do Google Cloud sobre os dados da Oracle Cloud, com MCP no meio.

Uma arquitetura de referência para soberania de dados sem abrir mão de inovação: agentes Gemini no Vertex AI executam tools direto sobre um Oracle Autonomous Database por meio de servidores MCP no OKE, através de uma HA VPN site-to-site, sem copiar os dados para fora.

  • IPsec IKEv2 com AES-256-GCM, roteamento BGP, CIDRs sem sobreposição
  • MTU fixado em 1460 bytes para os payloads JSON-RPC do MCP não fragmentarem no túnel
  • Terraform
  • Vertex AI
  • Gemini
  • MCP
  • Cloud Run
  • OKE
  • Oracle ATP
  • Kafka
  • BGP
github.com/gabe-santana/gsantana-dev
A página inicial do gsantana.dev.

2026

gsantana.dev

Este site.

Um site Next.js exportado estaticamente na Cloudflare, em dois idiomas, em que toda página é gerada antes. O pouco que precisa de servidor, como a newsletter, o login com GitHub e o progresso de leitura sincronizado, são Pages Functions pequenas sobre D1.

  • Busca full-text sem servidor que baixa só os pedaços que a consulta precisa
  • Diagramas desenhados em canvas a partir de uma spec para os dois idiomas e tamanhos de tela
  • Next.js
  • TypeScript
  • Cloudflare Pages
  • D1
  • R2
  • Pagefind
  • Tailwind
Um rastreador embarcado com Arduino no veículo envia a posição para a Track API, um serviço ASP.NET Core publicado na Azure. A API grava cada ponto no MongoDB, cujos change streams avisam a API das novas posições, e o app Flutter mostra o veículo se movendo num mapa ao vivo.

20212 estrelas

Track me

Rastreamento de veículos, de um Arduino no carro até um mapa ao vivo.

Meu TCC de eletrônica e automação: um rastreador embarcado com Arduino vai no veículo e envia a posição para uma API ASP.NET Core, os change streams do MongoDB empurram cada ponto novo e um app Flutter acompanha o veículo no mapa.

  • A API é publicada na Azure App Service pelo GitHub Actions
  • C#
  • ASP.NET Core
  • MongoDB
  • Flutter
  • Arduino
  • Azure App Service

Do laboratório

Projetos menores: compiladores, engines, templates e experimentos, cada um feito para aprender algo.

examples/main.gabRUST
sumTwo = (n1: int, n2: int): int => n1 + n2;
 
main = (argc: int, argv: Array<string>): int => {
    sum: int = sumTwo(1, 1);
    return 0;
}

20214 estrelas

Gabe language

Um compilador escrito do zero, para uma linguagem minha.

Gabe é uma linguagem funcional pequena e fortemente tipada, com sintaxe parecida com C, compilada para Linux em x86. O lexer e os tokens são escritos à mão em C, para aprender cada etapa, da análise léxica à geração de código.

  • C
  • x86
  • Make
Ver código
O tabuleiro do py-chess na posição inicial.

2022

py-chess

Uma engine de xadrez em Python, começando pelo tabuleiro.

O estado do jogo, os movimentos e um tabuleiro em pygame com peças próprias, com anotações rumo à busca alfa-beta e a uma função de avaliação.

  • Python
  • pygame
Ver código
Diagrama de blocos dos registradores, da ULA e da unidade de controle do computador de 8 bits num barramento comum.

2021

Bart, an 8-bit computer

Um computador a partir das portas lógicas.

A arquitetura de um computador de 8 bits no espírito do Digital Computer Electronics, do Malvino: contador de programa, registrador de endereço, RAM de 16 bytes, registrador de instrução, acumulador, ULA e registrador de saída num só barramento.

  • Digital electronics
  • Computer architecture
Ver código
theory/superposition.qsC#
operation MeasureSuperposition() : Result {
    use q = Qubit();    // starts in |0>
    H(q);               // |0> and |1> at once
    return MResetZ(q);  // measure, then reset
}

20224 estrelas

quantum

Primeiros passos em programação quântica.

Programas pequenos em Q# no SDK quântico do .NET: colocar um qubit em superposição, medi-lo e operações aritméticas quânticas.

  • Q#
  • .NET
Ver código
Um cliente chama um único API gateway Ocelot com um bearer token. O gateway confere a autenticação e mapeia cada rota pública para uma Azure Function: o serviço de usuários ou o de posts, que guardam os documentos no MongoDB, rodando com Docker Compose.

20221 estrelas

stupid-micro-service-arch

Microsserviços, na menor versão que ainda conta.

Um API gateway Ocelot que autentica bearer tokens e roteia cada caminho público para uma Azure Function, com serviços de usuários e posts sobre MongoDB.

  • C#
  • Ocelot
  • Azure Functions
  • MongoDB
  • Docker
Ver código
srcPlain Text
Application/   services, DTOs, mappers
Domain/        entities
Domain.Core/   repository and service interfaces
Domain.Services/
Infra/         Entity Framework, repositories
Services/API/  controllers, Dockerfile

2021

rest-api-template

Um template de API REST em camadas DDD.

Um ponto de partida para APIs .NET 5: serviços de aplicação com DTOs e mappers, um núcleo de domínio com interfaces de repositório, infraestrutura em Entity Framework, tudo em Docker.

  • C#
  • .NET 5
  • EF Core
  • Docker
  • DDD
Ver código
Repositories/BaseRepository.csC#
public class BaseRepository<T> : IBaseRepository<T> where T : class
{
    public async Task<T> Get(int id) =>
        await _context.Set<T>().FindAsync(id);
 
    public async Task<IEnumerable<T>> GetAll() =>
        await _context.Set<T>().ToListAsync();
}

2021

ecomm-api

Uma Web API genérica para e-commerce.

Produtos e categorias atrás de um repositório genérico e de um unit of work, para cada entidade nova ganhar o CRUD de graça.

  • C#
  • ASP.NET Core
  • EF Core
Ver código
lib/webapi_web/router.exELIXIR
pipeline :api do
  plug :accepts, ["json"]
end
 
scope "/api", WebapiWeb do
  pipe_through :api
end

2021

web-api-elixir

Uma API JSON em Phoenix.

A base de uma API Phoenix com Ecto, um pipeline JSON e telemetria no LiveDashboard em desenvolvimento.

  • Elixir
  • Phoenix
  • Ecto
Ver código
pattern_matching/pin_operator.exsELIXIR
x = 1
^x = 2              # ** (MatchError)
[^x, 2, 3] = [1, 2, 3]
{y, ^x} = {2, 1}
[head | _] = [1, 2, 3]

2021

elixir-guide

Anotações de Elixir, um conceito por arquivo.

Pattern matching, o operador de match e o pin operator, escritos como scripts executáveis com a saída ao lado de cada linha.

  • Elixir
Ver código
geografical-algorithms/dijkstra.pasPASCAL
for I := 1 to N do
  if (D[C, I] <> 0) and (not ExpA[I]) then
  begin
    NewDA := DA[C] + D[C, I];
    if NewDA < DA[I] then
    begin
      DA[I] := NewDA;
      Ant[I] := C
    end
  end;

2021

Wake up dude, it's time to code in Pascal

Algoritmos clássicos, numa linguagem clássica.

O caminho mínimo de Dijkstra sobre uma matriz de adjacência, bubble sort e quicksort, em Pascal.

  • Pascal
Ver código

2021

iso-game

Um jogo isométrico em Godot.

Os primeiros commits de um jogo isométrico na engine Godot.

  • Godot
  • GDScript
Ver código