Arquitetura
A Orquena começa como um monólito modular orientado a eventos, com processos separados apenas quando carga, segurança ou isolamento justificarem.Esta página resume o desenho. Contratos versionados, ADRs e documentos específicos continuam sendo a autoridade para implementação.
Princípios obrigatórios
- O Platform Kernel permanece neutro em relação aos domínios de negócio.
- Cada registro tenant-owned pertence a uma
Organization. - Conta, grupo ou seleção no frontend não provam autorização.
- PostgreSQL é a fonte canônica do estado de negócio.
- Providers são substituíveis e não definem regras de domínio.
- Aplicações externas não compartilham o banco principal.
- AI Runtime não acessa Prisma nem tabelas diretamente.
- Mudanças de estado publicam eventos através de transactional outbox.
- Trabalhos assíncronos são versionados, idempotentes, observáveis e limitados.
- Realtime melhora a experiência, mas nunca é fonte da verdade.
Hierarquia principal
Processos planejados
Os processos compartilham contratos públicos. Eles não atravessam limites importando implementações internas ou usando o banco como API improvisada.
Modularidade
Fluxo de mensagem
Fluxo de agendamento
Fluxo de IA
- Organização e identidade do agente.
- Template, prompt e model versions.
- Tool calls e referências de resultados.
- Tokens, custo, duração e erros.
- Decisões de política.
- Handoff e aprovação.
- Correlation e causation IDs.
Eventos e jobs
PostgreSQL e outbox fazem a transição durável entre uma transação e o processamento assíncrono. BullMQ sobre Valkey é o adapter inicial, atrás de contratos próprios. Cada job tenant-owned inclui:- Tipo e versão.
organizationIdconfiável.- Idempotency key.
- Correlation e causation IDs.
- Timeout.
- Política de retry e backoff.
- Limite de concorrência.
- Dead-letter e replay auditado.
Dados e credenciais
- PostgreSQL guarda estado de negócio e metadados canônicos.
- Valkey guarda filas, cache e coordenação efêmera.
- Object storage guarda mídia e documentos.
- Credenciais são criptografadas e separadas de configuração comum.
- Tokens de providers nunca aparecem em logs ou eventos de domínio.
- Payloads externos permanecem dentro dos adapters.
Extensibilidade
Plugins declaram:- Identidade e versão.
- Capabilities fornecidas e exigidas.
- Permissions.
- Configuração e credenciais.
- Rotas e contribuições de UI.
- Eventos, jobs e tools.
- Compatibilidade e health checks.
Implantação inicial
A topologia inicial será Docker Compose em VPS, com containers separados para processos e serviços stateful. A evolução para múltiplas máquinas, serviços gerenciados ou orquestração acontece somente com evidência de carga ou necessidade operacional. Separar deployment não muda automaticamente a propriedade dos domínios.Documentos detalhados
Visão arquitetural
Contexto, camadas, processos e limites.
Multi-tenancy
Organizações, memberships e isolamento.
Monorepo
Estrutura e regras de dependência.
Specification Pack
Contratos aceitos antes do código.
docs/architecture/system-context-v1.mddocs/architecture/data-model-v1.mddocs/architecture/events-and-jobs-v1.mddocs/architecture/plugin-contracts-v1.mddocs/architecture/conversation-ai-control-v1.md