Arquitectura
Ogma es una aplicación de escritorio local con un backend en Rust, un frontend en Vue, un contenedor Electron, almacenamiento local de proyectos, un entorno de ejecución de plugins e integración MCP opcional.
Componentes principales
| Componente | Ubicación | Responsabilidad |
|---|---|---|
| Backend de proxy/API en Rust | crates/proxy | Proxy MITM, API REST, almacenamiento, escáneres, repetición de solicitudes, automatización, plugins, MCP, OAST y endpoints de control del navegador. |
| Frontend en Vue | frontend/src | Interfaz del espacio de trabajo, almacenes de estado, rutas, editores, escáneres, iframes de plugins, espacio de trabajo de IA y utilidades. |
| Contenedor de escritorio Electron | desktop | Aplicación de escritorio empaquetada, integración de ventanas del navegador, puente de configuración y ciclo de vida de la aplicación. |
| Documentación | docs | Sitio de documentación VitePress. |
| Directorio de datos | ogma-data o directorio de datos de aplicaciones de la plataforma | Base de datos SQLite, material de la CA, plugins, exportaciones, copias de seguridad y archivos. |
Backend
El backend expone una API REST y un servicio de escucha del proxy. Sus módulos principales incluyen:
proxy_server.rs: interceptación y reenvío HTTP.intercept.rseintercept_rules.rs: cola de interceptación y coincidencia de reglas.store.rsystore_actor.rs: acceso a la base de datos del proyecto y referencia asíncrona al almacén.api.rs: enrutamiento y manejadores de la API.replay.rs,automate.rsyworkflows.rs: ejecución repetible de solicitudes.passive_scanner.rsyactive_scanner.rs: motores de escaneo.plugins.rsyplugin_runtime.rs: metadatos de plugins, entorno de ejecución en sandbox, permisos y eventos.mcp.rs: recursos y herramientas MCP.ca.rs,tls_cert.rs,client_cert.rs: soporte de certificados y TLS.ws_history.rs,ws_replay.rsysse.rs: soporte de tráfico en streaming.oast.rs: servicios de callbacks fuera de banda.
Frontend
El frontend es una aplicación Vue que utiliza carga diferida por ruta para la mayoría de las vistas del espacio de trabajo.
Áreas principales:
router/index.ts: rutas del espacio de trabajo y de configuración.components/NavSidebar.vue: navegación principal del producto.stores/*: almacenes Pinia para el historial, la repetición de solicitudes, la automatización, los hallazgos, los flujos de trabajo, los plugins, el alcance, el shell, la IA y otros estados.api/client.tsyapi/types.ts: interfaz tipada del cliente de la API.views/*: páginas de funciones del espacio de trabajo.components/WorkspacePanel.vue: panel del espacio de trabajo de IA y shell inversa.views/PluginsView.vueyviews/PluginPageView.vue: instalación y gestión de plugins y alojamiento de sus iframes de frontend.
Contenedor de escritorio
El contenedor Electron proporciona la experiencia de escritorio empaquetada y funciones de puente nativas:
- Apertura y control de la ventana de la aplicación.
- Persistencia de la configuración de escritorio en el almacenamiento local del frontend.
- Apertura de ventanas del Navegador Ogma y vistas de navegador integradas.
- Empaquetado de recursos y binarios para su distribución en escritorio.
Modelo de almacenamiento
Ogma mantiene los datos de las evaluaciones en local. Las migraciones del backend definen tablas por proyecto para:
- Historial HTTP y cuerpos de mensajes.
- Tráfico WebSocket y SSE.
- Sesiones e intentos de repetición de solicitudes.
- Sesiones, ejecuciones y resultados de Automatización.
- Hallazgos y enlaces a evidencias.
- Flujos de trabajo y sus ejecuciones.
- Ajustes predefinidos de alcance.
- Plugins y sus permisos.
- Archivos, exportaciones, copias de seguridad y configuración.
Entorno de ejecución de plugins
Los plugins pueden incluir componentes de backend, componentes de frontend o ambos.
Los plugins de backend se ejecutan en un sandbox de JavaScript y reciben un objeto sdk. Los plugins de frontend se ejecutan en iframes con aislamiento de sandbox y se comunican mediante un puente controlado por Ogma.
Límites importantes:
- Los plugins de frontend no pueden acceder al DOM de la página principal.
- Los comandos del puente se validan en el servidor.
- Las acciones protegidas del backend requieren permisos declarados y concedidos.
- Los paquetes instalados se copian al directorio de plugins gestionado por Ogma para garantizar un comportamiento estable durante la ejecución.
Consulta Sistema de plugins.
Integración MCP
El servidor MCP expone el contexto de los proyectos de Ogma a asistentes externos. Se inicia en modo de solo lectura de forma predeterminada. Las capacidades de escritura, exportación, envío de solicitudes, ejecución de flujos de trabajo y control de interceptación requieren permisos explícitos.
Consulta Configuración de MCP.
Principios de diseño
- Prioridad al trabajo local de forma predeterminada.
- Hallazgos vinculados a evidencias.
- Definición del alcance antes de automatizar.
- Controles de permisos explícitos para la IA, los plugins, el envío de solicitudes y las exportaciones.
- Navegación rápida para los flujos de trabajo habituales del evaluador.
- Compatibilidad con los flujos de trabajo de proxy consolidados, manteniendo la extensibilidad de Ogma.