15 KiB
15 KiB
Especificação Técnica: Arcadia Kernel
Versão: 3.3
Status: ✅ Produção
Última atualização: 2026-04-08
1. Visão Geral
O Arcadia Kernel é o sistema operacional nativo da ArcadiaSuite - um orquestrador de serviços em Node.js que unifica discovery, health monitoring e gerenciamento de processos.
1.1 Objetivos
- Discovery: Descobrir automaticamente todos os serviços do ecossistema
- Orquestração: Iniciar, parar e reiniciar serviços (processos e containers)
- Observabilidade: Health checks, logs e métricas centralizados
- Integração: Unificar visão da Casa de Máquinas com dados reais
1.2 Arquitetura
┌─────────────────────────────────────────────────────────────────────────┐
│ ARCADIA APPLICATION (5000) │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ ARCADIA KERNEL (5001) │ │
│ ├─────────────────────────────────────────────────────────────────┤ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │ │
│ │ │ Dashboard │ │ Process │ │ LogAggregator │ │ │
│ │ │ (Web UI) │ │ Manager │ │ │ │ │
│ │ └──────┬──────┘ └──────┬──────┘ └─────────────────────────┘ │ │
│ │ │ │ │ │
│ │ └────────────────┴────────────────┐ │ │
│ │ │ │ │ │
│ │ ┌───────────┴───────────┐ │ │ │
│ │ │ Service Registry │◄──┼──┐ │ │
│ │ │ (Unified Discovery) │ │ │ │ │
│ │ └───────────┬───────────┘ │ │ │ │
│ │ │ │ │ │ │
│ │ ┌─────────────────────┼───────────────┘ │ │ │
│ │ │ │ │ │ │
│ │ ┌──┴──┐ ┌──────────┐ ┌┴─────────┐ ┌────┴─────┐ ┌────────┐ │ │
│ │ │Static│ │ Coolify │ │ XOS │ │ Docker │ │ ... │ │ │
│ │ │Disc. │ │ Disc. │ │ Disc. │ │ Disc. │ │ │ │ │
│ │ └──┬──┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └───┬────┘ │ │
│ │ │ │ │ │ │ │ │
│ │ └──────────┴─────────────┴─────────────┴────────────┘ │ │
│ │ │ │ │
│ │ ┌──────────┴──────────┐ │ │
│ │ │ UnifiedRegistry │ │ │
│ │ │ (Agregação + Dedu) │ │ │
│ │ └──────────┬──────────┘ │ │
│ └─────────────────────────┼─────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────┴──────────────────┐ │
│ │ global.arcadiaKernelRegistry │ │
│ │ (Acesso direto - mesmo processo) │ │
│ └──────────────────┬──────────────────┘ │
│ │ │
│ ┌───────────────────────┴───────────────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────────┐ │
│ │ Casa de │ │ /api/engine-room/* │ │
│ │ Máquinas │ │ (API Express) │ │
│ │ (React UI) │ │ │ │
│ └─────────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
Legenda:
───► HTTP/HTTPS ─ ─► Acesso direto (memória)
Porta 5000: App principal Porta 5001: Kernel Dashboard (interno)
2. Componentes
2.1 Core (ProcessManager, HealthMonitor, LogAggregator)
Status: ✅ Estável
- ProcessManager: Gerencia processos Node.js/Python locais
- HealthMonitor: Health checks periódicos
- LogAggregator: Coleta e armazena logs
2.2 Service Registry
Status: ✅ Implementado
Catálogo central de serviços com:
- Registro manual ou automático
- Health status tracking
- Capabilities e metadados
- Eventos (service:registered, service:health_changed, etc)
2.3 Discovery Providers
| Provider | Status | Descrição |
|---|---|---|
StaticDiscovery |
✅ | DNS interno (nomes fixos) |
CoolifyDiscovery |
✅ | API Coolify (produção) |
DockerDiscovery |
✅ | Docker labels (fallback) |
XOSDiscovery |
✅ | Banco XOS (filas, integrações) |
UnifiedRegistry |
⏳ | Agregador (Semana 5) |
3. Discovery Providers
3.1 StaticDiscovery
Descobre serviços via nomes DNS fixos na rede Docker.
// Ex: http://contabil:8003, http://bi:8004
3.2 CoolifyDiscovery
Consulta API Coolify para descobrir serviços em produção.
Endpoints:
GET /api/v1/services- Docker Compose servicesGET /api/v1/applications- Aplicações
Filtro: arcadia.discovery.enabled=true
3.3 DockerDiscovery
Lê labels de containers Docker na rede local.
Labels:
arcadia.discovery.enabled=truearcadia.name=MetaSet BIarcadia.type=pythonarcadia.port=8100arcadia.capabilities=dashboards,charts,sql_lab
3.4 XOSDiscovery
Consulta banco de dados para descobrir serviços XOS.
Descobre:
- Filas de atendimento (
xos_queues) - Integrações WhatsApp (
whatsapp_sessions) - Automações ativas (
xos_automations)
4. API do Kernel
4.1 Endpoints Core
| Endpoint | Método | Descrição |
|---|---|---|
/health |
GET | Health check do Kernel |
/api/kernel/services |
GET | Lista serviços do ProcessManager |
/api/kernel/services/:id/start |
POST | Inicia serviço |
/api/kernel/services/:id/stop |
POST | Para serviço |
/api/kernel/services/:id/restart |
POST | Reinicia serviço |
/api/kernel/services/:id/logs |
GET | Logs do serviço |
4.2 Endpoints Registry
| Endpoint | Método | Descrição |
|---|---|---|
/api/registry/services |
GET | Lista serviços descobertos |
/api/registry/services/:id |
GET | Detalhes de um serviço |
/api/registry/by-category/:cat |
GET | Serviços por categoria |
/api/registry/by-capability/:cap |
GET | Serviços por capability |
/api/registry/stats |
GET | Estatísticas do registry |
/api/registry/discover |
POST | Força discovery manual |
4.3 Endpoints Casa de Máquinas
| Endpoint | Método | Descrição |
|---|---|---|
/api/engine-room/status |
GET | Status unificado (Registry + Presets) |
/api/engine-room/engine/:name/health |
GET | Health de um motor |
/api/engine-room/engine/:name/start |
POST | Inicia motor |
/api/engine-room/engine/:name/stop |
POST | Para motor |
/api/engine-room/engine/:name/restart |
POST | Reinicia motor |
/api/engine-room/engine/:name/logs |
GET | Logs do motor |
5. Integração Casa de Máquinas
5.1 Fluxo de Dados
Casa de Máquinas (React)
│
▼
/api/engine-room/status
│
▼
┌─────────────────────────────┐
│ fetchRegistryServices() │
│ │
│ PRIORIDADE 1: Registry │
│ Global (mesmo processo) │
│ ───────────────────────── │
│ (global.arcadiaKernel │
│ .serviceRegistry) │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Acesso │ │
│ │ direto │ │
│ │ (memória) │ │
│ └──────┬──────┘ │
│ │ │
│ Se falhar: │
│ ───────────────────────── │
│ PRIORIDADE 2: HTTP │
│ Fallback para porta 5001 │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ http.get │ │
│ │ 127.0.0.1 │ │
│ │ localhost │ │
│ └──────┬──────┘ │
└─────────┼───────────────────┘
│
▼
Resposta JSON
│
▼
Frontend Render
5.2 Implementação Atual
// server/engine-room/routes.ts
async function fetchRegistryServicesWithRetry(): Promise<any[] | null> {
// PRIORIDADE 1: Registry global (mesmo processo Node.js)
const globalRegistry = (global as any).arcadiaKernelRegistry;
if (globalRegistry) {
const services = globalRegistry.getServices();
console.log(`[Engine Room] Usando Registry global: ${services.length} serviços`);
return services;
}
// PRIORIDADE 2: HTTP request para porta 5001 (fallback)
console.log('[Engine Room] Registry global não disponível, tentando HTTP...');
// ... retry com 127.0.0.1 e localhost
}
Vantagens do Registry Global
| Aspecto | HTTP (antigo) | Registry Global (novo) |
|---|---|---|
| Latência | ~10-50ms | ~0.1ms |
| Confiabilidade | Problemas com loopback Docker | 100% (mesmo processo) |
| Complexidade | Retry, timeout, hostname | Acesso direto |
| Failover | Necessário | Não aplicável |
Inicialização no server/index.ts
// Inicia Kernel ANTES do servidor HTTP
const kernel = new ArcadiaKernel({
dashboard: { enabled: true, port: 5001, host: '0.0.0.0' },
autoStart: process.env.KERNEL_AUTOSTART === 'true',
});
await kernel.start();
// Exporta Registry globalmente
if (kernel.serviceRegistry) {
(global as any).arcadiaKernelRegistry = kernel.serviceRegistry;
}
// DEPOIS inicia servidor HTTP (porta 5000)
httpServer.listen({ port: 5000, host: "0.0.0.0" }, ...);
6. Configuração
6.1 Variáveis de Ambiente
# Kernel
KERNEL_ENABLED=true
KERNEL_AUTOSTART=true
# Coolify Discovery
COOLIFY_API_TOKEN=seu_token_aqui
# MetaSet
METASET_HOST=metaset
METASET_PORT=8100
# Modo Docker (desativa spawn de processos)
DOCKER_MODE=true
6.2 Docker Compose Labels
services:
metaset:
labels:
- "arcadia.discovery.enabled=true"
- "arcadia.name=MetaSet BI"
- "arcadia.type=python"
- "arcadia.category=bi"
- "arcadia.port=8100"
- "arcadia.capabilities=dashboards,charts,sql_lab,rls,embedding"
7. Roadmap
Semana 4 ✅ CONCLUÍDO
- Service Registry
- StaticDiscovery
- CoolifyDiscovery
- DockerDiscovery
- Integração com Casa de Máquinas
Semana 5 ✅ CONCLUÍDO
- XOSDiscovery
- Registry Global (acesso direto)
- Integração Casa de Máquinas via memória
- UnifiedRegistry (agregador) - Opcional
Semana 6 PLANEJADO
- Maestro IA (Guardião de IAs)
- Policy Engine
- Audit Trail
Semana 7 PLANEJADO
- Integração completa Maestro
- Documentação P2P
8. Histórico de Mudanças
| Data | Versão | Mudança |
|---|---|---|
| 2026-04-06 | 3.0 | Service Registry + Discovery |
| 2026-04-07 | 3.1 | Integração Casa de Máquinas |
| 2026-04-08 | 3.2 | Coolify Discovery, XOS Discovery, correção MetaSet |
| 2026-04-08 | 3.3 | Registry Global - Casa de Máquinas usa acesso direto (memória) em vez de HTTP |
| 2026-04-08 | 3.4 | MetaSet Consolidado - Migração Metabase → Apache Superset 4.1.0 |
9. Referências
/server/kernel/- Código fonte do Kernel/server/kernel/registry/- Service Registry/server/kernel/discovery/- Discovery Providers/server/engine-room/- Casa de Máquinas (backend)/client/src/pages/Admin.tsx- Casa de Máquinas (frontend)/home/ubuntu/.kimi/kernel e tenants.md- Planejamento executivo