Ir al contenido

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 ​

ComponenteUbicaciónResponsabilidad
Backend de proxy/API en Rustcrates/proxyProxy MITM, API REST, almacenamiento, escáneres, repetición de solicitudes, automatización, plugins, MCP, OAST y endpoints de control del navegador.
Frontend en Vuefrontend/srcInterfaz del espacio de trabajo, almacenes de estado, rutas, editores, escáneres, iframes de plugins, espacio de trabajo de IA y utilidades.
Contenedor de escritorio ElectrondesktopAplicación de escritorio empaquetada, integración de ventanas del navegador, puente de configuración y ciclo de vida de la aplicación.
DocumentacióndocsSitio de documentación VitePress.
Directorio de datosogma-data o directorio de datos de aplicaciones de la plataformaBase 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.rs e intercept_rules.rs: cola de interceptación y coincidencia de reglas.
  • store.rs y store_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.rs y workflows.rs: ejecución repetible de solicitudes.
  • passive_scanner.rs y active_scanner.rs: motores de escaneo.
  • plugins.rs y plugin_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.rs y sse.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.ts y api/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.vue y views/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.

Software propietario. Todos los derechos reservados.