Skip to content

4. Visão de Containers

Esta seção apresenta o diagrama de containers do CRP.AI, detalhando cada unidade implantável do sistema, suas responsabilidades, tecnologias, APIs, armazenamento e dependências.

4.1 Diagrama de Containers

4.2 Detalhamento dos Containers

4.2.1 AI Gateway — LiteLLM Proxy

PropriedadeValor
ResponsabilidadeGateway de IA: ponto de comunicação com provedores de modelo. Recebe requisições dos colaboradores por virtual key e do Olimpo API por credencial de serviço para operações de gestão. Autentica, aplica limites, roteia ao provedor e registra dados operacionais.
TecnologiaPython, LiteLLM, Docker
APIs e protocolosAPI REST compatível com OpenAI API para consumo de modelos; API administrativa REST para gestão de chaves, times e logs
ArmazenamentoPostgreSQL dedicado: virtual keys (hash), teams, budgets, spend logs
DependênciasPostgreSQL (LiteLLM), Prometheus, provedores de IA e integração de tracing quando configurada

O LiteLLM Proxy opera em rede interna. Colaboradores o acessam diretamente para consumo de IA com virtual keys. O Olimpo API o acessa para operações administrativas. Credenciais dos provedores residem exclusivamente no LiteLLM Proxy.


4.2.2 Olimpo API

PropriedadeValor
ResponsabilidadeIntegração de governança do módulo CRP.AI. Aplica política corporativa de acesso, persiste times, permissões, budgets, metadados de chaves e auditoria; solicita operações à API administrativa do AI Gateway. Sincroniza colaboradores e times com o Controle de Projetos.
TecnologiaJava, Spring Boot
APIs e protocolosAPI REST. Endpoints de gestão de times, chaves, modelos, acesso IA, instalação e auditoria. Autenticação JWT via Keycloak.
ArmazenamentoPostgreSQL (Olimpo): times, membros, permissões, configurações de acesso IA, budgets, logs de auditoria
DependênciasKeycloak SSO (validação JWT), AI Gateway por integração administrativa (LiteLLM Proxy na implantação atual), PostgreSQL (Olimpo), Controle de Projetos (sincronização)

A autorização é delegada ao Keycloak, que emite tokens JWT com os papéis necessários para operações de gestão e administração do CRP.AI.


4.2.3 Olimpo Frontend

PropriedadeValor
ResponsabilidadeInterface web do CRP.AI: portal administrativo (gestão de times, modelos, budgets) e portal de autoatendimento do colaborador (Minha Chave, consumo, regeneração)
TecnologiaReact, nginx
APIs e protocolosConsome Olimpo API via REST/HTTPS com JWT. Autenticação via Keycloak.
ArmazenamentoStateless — estado reside no Olimpo API
DependênciasOlimpo API, Keycloak SSO

4.2.4 CRP.AI Installer

PropriedadeValor
ResponsabilidadeCLI de configuração do ambiente local do colaborador. Verifica o ambiente, autentica o colaborador, obtém a configuração de IA e configura o OpenCode. Pode oferecer a instalação da CRP.AI Skill do catálogo corporativo e a configuração opcional do MCP Azure DevOps.
TecnologiaNode.js, distribuído via npm (@crp/crp-ai)
APIs e protocolosKeycloak (OAuth2 Device Authorization), Olimpo API (REST/JWT)
ArmazenamentoPersiste configuração local: opencode.json, manifesto de skills e, quando o MCP é confirmado, arquivo de ambiente do Azure DevOps
DependênciasKeycloak SSO, Olimpo API, OpenCode CLI, npm registry

Fluxo de execução:

  1. Verificação do ambiente: detecta se o OpenCode está instalado e oferece instalação automática
  2. Autenticação: inicia fluxo de autenticação via Keycloak — exibe um código no terminal para validação no navegador
  3. Obtenção de configuração: consulta autenticada ao Olimpo API e recebe virtual keys, Base URLs e modelos disponíveis
  4. Skills (opcional): oferece a instalação da skill disponível no catálogo corporativo pelo Nexus
  5. Configuração do OpenCode: escreve o arquivo de configuração com provedores, modelos e chaves
  6. Azure DevOps MCP (opcional): se houver PAT provisionado, configura a integração após confirmação do colaborador

4.2.5 PostgreSQL — LiteLLM

PropriedadeValor
ResponsabilidadeBanco de dados operacional do gateway. Armazena virtual keys (hash), teams, budgets, rate limits, configurações de modelos e spend logs
TecnologiaPostgreSQL
DependênciasNenhuma

O Olimpo API nunca acessa diretamente este banco — toda interação ocorre pela API REST administrativa do AI Gateway, implementada atualmente pelo LiteLLM Proxy.


4.2.6 PostgreSQL — Olimpo

PropriedadeValor
ResponsabilidadeBanco de dados de aplicação do Olimpo. Armazena times, membros, permissões, configurações de acesso IA, budgets, metadados de chaves e logs de auditoria
TecnologiaPostgreSQL
DependênciasNenhuma

O banco mantém metadados da virtual key, como key_id, alias e parâmetros. O valor da chave é provisionado pelo gateway no arquivo de configuração local necessário ao colaborador; ele não é persistido no banco do Olimpo.


4.3 Fluxos de Comunicação entre Containers

4.3.1 Consumo de Modelo de IA (runtime)

Colaborador → Ferramenta (OpenCode/CLI) → AI Gateway → Provedor IA

                                            └─ Valida virtual key
                                               Aplica rate limit
                                               Aplica budget
                                               Registra spend log
                                               Emite tracing quando configurado

Na implantação atual, o AI Gateway desse fluxo é o LiteLLM Proxy.

Sequência detalhada:

  1. O colaborador, já configurado pelo CRP.AI Installer, faz uma requisição via ferramenta (OpenCode, Continue, Cursor)
  2. A ferramenta envia a requisição diretamente ao AI Gateway
  3. O AI Gateway valida a virtual key, verifica rate limits e budget restante
  4. O AI Gateway roteia a requisição ao provedor configurado usando a credencial do provedor (armazenada apenas no AI Gateway)
  5. O AI Gateway registra a chamada nos spend logs e pode emitir tracing quando a integração estiver configurada
  6. A resposta do provedor é retornada diretamente à ferramenta do colaborador

4.3.2 Gestão Administrativa

Administrador → Olimpo Frontend → Olimpo API (módulo CRP.AI) ─┬─ PostgreSQL Olimpo (dados de aplicação)
                                                              └─ API administrativa do AI Gateway (LiteLLM Proxy)

Gerenciar time com acesso a IA:

  1. Administrador autentica-se no Olimpo Frontend (Keycloak SSO)
  2. Frontend envia requisição ao Olimpo API com JWT do admin
  3. Olimpo API valida permissão, persiste a política no PostgreSQL e solicita a criação ou atualização do time na API administrativa do AI Gateway

Gerar chave para colaborador:

  1. Administrador define parâmetros (budget, modelos, limites)
  2. Olimpo API solicita ao AI Gateway a geração da virtual key
  3. AI Gateway gera a virtual key e mantém seu estado técnico; Olimpo API armazena apenas metadados — a chave nunca é persistida no banco do Olimpo

4.3.3 Instalação e Configuração do Colaborador

O fluxo completo de execução do CRP.AI Installer está detalhado na seção 4.2.4, incluindo o diagrama de sequência com as etapas de verificação de ambiente, autenticação, obtenção de credenciais, instalação de skills e configuração do OpenCode.


4.3.4 Monitoramento

O LiteLLM e o Olimpo API expõem métricas no formato Prometheus. A integração de tracing depende da topologia aprovada e da política de retenção aplicável.


4.4 Tabela-Resumo de Containers

ContainerTecnologiaBanco de Dados
AI Gateway (LiteLLM Proxy)Python, LiteLLM, DockerPostgreSQL (LiteLLM)
Olimpo APIJava, Spring BootPostgreSQL (Olimpo)
Olimpo FrontendReact, nginxNenhum (stateless)
CRP.AI InstallerNode.jsNenhum (stateless)
PostgreSQL (LiteLLM)PostgreSQL
PostgreSQL (Olimpo)PostgreSQL

4.5 Decisões de Design Relevantes

  1. Virtual Keys por colaborador: cada colaborador recebe uma virtual key individual com escopo limitado (modelos, budget, rate limits). Isso permite rastreabilidade individual e revogação independente.

  2. AI Gateway acessível na rede interna: colaboradores consomem IA diretamente via AI Gateway, sem latência adicional de camada intermediária.

  3. Separação de bancos de dados: PostgreSQL do LiteLLM e do Olimpo são instâncias independentes. Nenhum componente acessa diretamente o banco do outro — toda comunicação é via API REST.

  4. Abstração do gateway: o Olimpo API utiliza uma camada de abstração que concentra a integração administrativa com a API específica do gateway. Uma troca de gateway reduz alterações na lógica de governança, mas consumidores continuam dependentes do endpoint exposto pelo AI Gateway selecionado.