API Gateway¶
O API Gateway é o ponto de entrada único do AIOS. Construído com Hono.js para performance máxima, com segurança enterprise integrada.
Base URL: http://localhost:3000 (desenvolvimento)
Middlewares (em ordem de execução)¶
graph LR
REQ[Requisição] --> SH[Secure Headers]
SH --> RL[Rate Limiter]
RL --> IS[Input Sanitizer]
IS --> AU[Audit Logger]
AU --> AT[Auth JWT]
AT --> RO[Rota]
RO --> RES[Resposta] 1. Secure Headers¶
Aplica headers de segurança HTTP padrão: - X-Content-Type-Options: nosniff - X-Frame-Options: DENY - Referrer-Policy: strict-origin-when-cross-origin
2. Rate Limiter¶
Sliding window por IP + tenant_id, usando Redis:
Configurável via .env.docker:
3. Input Sanitizer (OWASP LLM01)¶
Detecta e bloqueia prompt injection antes de chegar ao LLM. Retorna 400 com error: "prompt_injection_detected".
4. Audit Logger¶
Cada requisição gera um log imutável com checksum SHA-256. Em produção, persiste em audit_logs no PostgreSQL.
5. Auth JWT (rotas /v1/*)¶
O token deve conter:
Endpoints¶
GET /health¶
Verificação de saúde do serviço.
Sem autenticação.
POST /v1/squads/{squad}/run¶
Executa uma squad com o input fornecido.
Requer: Authorization: Bearer <token>
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
input | string | Sim | Tarefa para a squad (máx 32.000 chars) |
model_tier | "tier1" | "tier2" | "tier3" | Não | Padrão: tier2 |
options | object | Não | Opções adicionais da squad |
| Código | Error | Causa |
|---|---|---|
| 400 | prompt_injection_detected | Input contém padrão de injeção |
| 400 | invalid_body | JSON inválido |
| 401 | unauthorized | Token ausente ou inválido |
| 422 | validation_error | Schema do body inválido |
| 429 | rate_limit_exceeded | Limite de requisições atingido |
| 500 | internal_error | Erro interno |
GET /v1/squads¶
Lista squads disponíveis para o tenant autenticado.
Model Routing¶
O gateway roteia automaticamente para o LLM correto baseado em model_tier:
| Tier | LLM | Quando usar |
|---|---|---|
tier1 | claude-sonnet-4-6 | Tasks complexas, código crítico, decisões |
tier2 | ollama/qwen2.5-coder:3b | Padrão — automações, boilerplate |
tier3 | openrouter/google/gemini-2.0-flash-exp | Contexto longo (>32K), análise de docs |
Configure os modelos via env:
MODEL_TIER1=claude-sonnet-4-6
MODEL_TIER2=ollama/qwen2.5-coder:3b
MODEL_TIER3=openrouter/google/gemini-2.0-flash-exp