---
url: https://docs.ogmabox.com/es/development/architecture.md
description: >-
  Conoce la arquitectura de Ogma: backend en Rust, frontend en Vue, contenedor
  Electron, almacenamiento local, entorno de ejecución de plugins, servidor MCP
  y empaquetado de escritorio.
---

# Arquitectura {#architecture}

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 {#high-level-components}

| 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 {#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 {#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 {#desktop-shell}

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 {#storage-model}

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 {#plugin-runtime}

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](../plugins/README.md).

## Integración MCP {#mcp-integration}

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](../mcp-setup.md).

## Principios de diseño {#design-principles}

* 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.
