Arquitetura
O Ogma é um aplicativo desktop local com backend em Rust, frontend em Vue, shell do Electron, armazenamento local de projetos, ambiente de execução de plugins e integração opcional com MCP.
Componentes principais
| Componente | Localização | Responsabilidade |
|---|---|---|
| Backend de proxy/API em Rust | crates/proxy | Proxy MITM, API REST, armazenamento, scanners, reenvio, automação, plugins, MCP, OAST e endpoints de controle do navegador. |
| Frontend em Vue | frontend/src | Interface do espaço de trabalho, stores, rotas, editores, scanners, iframes de plugins, espaço de trabalho de IA e utilitários. |
| Shell de desktop do Electron | desktop | Aplicativo desktop empacotado, integração de janelas do navegador, ponte de configurações e ciclo de vida do aplicativo. |
| Documentação | docs | Site de documentação do VitePress. |
| Diretório de dados | ogma-data ou diretório de dados de aplicativos da plataforma | Banco de dados SQLite, material da CA, plugins, exportações, backups e arquivos. |
Backend
O backend expõe uma API REST e um serviço de escuta do proxy. Os principais módulos do backend incluem:
proxy_server.rs: interceptação e encaminhamento HTTP.intercept.rseintercept_rules.rs: fila de interceptação e correspondência de regras.store.rsestore_actor.rs: acesso ao banco de dados do projeto e referência assíncrona ao armazenamento.api.rs: roteamento e handlers da API.replay.rs,automate.rseworkflows.rs: execução repetível de requisições.passive_scanner.rseactive_scanner.rs: mecanismos de varredura.plugins.rseplugin_runtime.rs: metadados de plugins, ambiente de execução em sandbox, permissões e eventos.mcp.rs: recursos e ferramentas MCP.ca.rs,tls_cert.rs,client_cert.rs: suporte a certificados e TLS.ws_history.rs,ws_replay.rsesse.rs: suporte a tráfego de streaming.oast.rs: serviços de callback fora de banda.
Frontend
O frontend é um aplicativo Vue que usa carregamento sob demanda por rota para a maioria das visualizações do espaço de trabalho.
Áreas principais:
router/index.ts: rotas do espaço de trabalho e das configurações.components/NavSidebar.vue: navegação principal do produto.stores/*: stores do Pinia para histórico, reenvio, automação, achados, fluxos de trabalho, plugins, escopo, shell, IA e outros estados.api/client.tseapi/types.ts: interface tipada do cliente da API.views/*: páginas de funcionalidades do espaço de trabalho.components/WorkspacePanel.vue: painel do espaço de trabalho de IA e shell reverso.views/PluginsView.vueeviews/PluginPageView.vue: instalação e gerenciamento de plugins e hospedagem dos iframes de frontend.
Shell de desktop
O shell do Electron oferece a experiência de desktop empacotada e funções nativas de ponte:
- Abertura e controle da janela do aplicativo.
- Persistência das configurações de desktop no armazenamento local do frontend.
- Abertura de janelas do Navegador Ogma e visualizações de navegador incorporadas.
- Empacotamento de recursos e binários para distribuição em desktop.
Modelo de armazenamento
O Ogma mantém os dados das avaliações localmente. As migrações do backend definem tabelas restritas a cada projeto para:
- Histórico HTTP e corpos de mensagens.
- Tráfego WebSocket e SSE.
- Sessões e tentativas de Reenvio.
- Sessões, execuções e resultados de Automação.
- Achados e links para evidências.
- Fluxos de trabalho e suas execuções.
- Predefinições de escopo.
- Plugins e suas permissões.
- Arquivos, exportações, backups e configurações.
Ambiente de execução de plugins
Os plugins podem incluir componentes de backend, componentes de frontend ou ambos.
Os plugins de backend são executados em um sandbox de JavaScript e recebem um objeto sdk. Os plugins de frontend são executados em iframes com isolamento de sandbox e se comunicam por uma ponte controlada pelo Ogma.
Limites importantes:
- Os plugins de frontend não podem acessar o DOM da página principal.
- Os comandos da ponte são validados no servidor.
- As ações protegidas do backend exigem permissões declaradas e concedidas.
- Os pacotes instalados são copiados para o diretório de plugins gerenciado pelo Ogma para garantir um comportamento estável durante a execução.
Consulte Sistema de plugins.
Integração com MCP
O servidor MCP expõe o contexto dos projetos do Ogma a assistentes externos. Por padrão, ele inicia em modo somente leitura. As capacidades de escrita, exportação, envio de requisições, execução de fluxos de trabalho e controle de interceptação exigem permissões explícitas.
Consulte Configuração do MCP.
Princípios de design
- Prioridade ao funcionamento local por padrão.
- Achados vinculados a evidências.
- Escopo antes da automação.
- Controles explícitos de permissão para IA, plugins, envio de requisições e exportações.
- Navegação rápida para fluxos de trabalho recorrentes do profissional de testes.
- Compatibilidade com fluxos de trabalho de proxy estabelecidos, mantendo o Ogma extensível.