---
url: https://docs.ogmabox.com/it/development/architecture.md
description: >-
  Scopri l’architettura di Ogma: backend Rust, frontend Vue, shell Electron,
  archiviazione locale, ambiente di esecuzione dei plugin, server MCP e
  creazione dei pacchetti desktop.
---

# Architettura {#architecture}

Ogma è un’applicazione desktop locale con un backend Rust, un frontend Vue, una shell Electron, archiviazione locale dei progetti, un ambiente di esecuzione dei plugin e integrazione MCP opzionale.

## Componenti principali {#high-level-components}

| Componente | Posizione | Responsabilità |
| --- | --- | --- |
| Backend proxy/API Rust | `crates/proxy` | Proxy MITM, API REST, archiviazione, scanner, ripetizione delle richieste, automazione, plugin, MCP, OAST ed endpoint di controllo del browser. |
| Frontend Vue | `frontend/src` | Interfaccia dell’area di lavoro, store, rotte, editor, scanner, iframe dei plugin, area di lavoro IA e utilità. |
| Shell desktop Electron | `desktop` | Applicazione desktop distribuita come pacchetto, integrazione delle finestre del browser, bridge delle impostazioni e ciclo di vita dell’applicazione. |
| Documentazione | `docs` | Sito di documentazione VitePress. |
| Directory dei dati | `ogma-data` o directory dei dati delle applicazioni della piattaforma | Database SQLite, materiale della CA, plugin, esportazioni, backup e file. |

## Backend {#backend}

Il backend espone un’API REST e un servizio di ascolto del proxy. I principali moduli del backend includono:

* `proxy_server.rs`: intercettazione e inoltro HTTP.
* `intercept.rs` e `intercept_rules.rs`: coda di intercettazione e verifica delle corrispondenze.
* `store.rs` e `store_actor.rs`: accesso al database del progetto e riferimento asincrono allo store.
* `api.rs`: instradamento e gestori dell’API.
* `replay.rs`, `automate.rs` e `workflows.rs`: esecuzione ripetibile delle richieste.
* `passive_scanner.rs` e `active_scanner.rs`: motori di scansione.
* `plugins.rs` e `plugin_runtime.rs`: metadati dei plugin, ambiente di esecuzione in sandbox, autorizzazioni ed eventi.
* `mcp.rs`: risorse e strumenti MCP.
* `ca.rs`, `tls_cert.rs`, `client_cert.rs`: supporto per certificati e TLS.
* `ws_history.rs`, `ws_replay.rs` e `sse.rs`: supporto per il traffico in streaming.
* `oast.rs`: servizi di callback fuori banda.

## Frontend {#frontend}

Il frontend è un’applicazione Vue che utilizza il caricamento differito a livello di rotta per la maggior parte delle viste dell’area di lavoro.

Aree principali:

* `router/index.ts`: rotte dell’area di lavoro e delle impostazioni.
* `components/NavSidebar.vue`: navigazione principale del prodotto.
* `stores/*`: store Pinia per cronologia, ripetizione, automazione, rilievi di sicurezza, flussi di lavoro, plugin, ambito, shell, IA e altri stati.
* `api/client.ts` e `api/types.ts`: interfaccia tipizzata del client dell’API.
* `views/*`: pagine delle funzionalità dell’area di lavoro.
* `components/WorkspacePanel.vue`: pannello dell’area di lavoro IA e shell inversa.
* `views/PluginsView.vue` e `views/PluginPageView.vue`: installazione e gestione dei plugin e hosting degli iframe frontend.

## Shell desktop {#desktop-shell}

La shell Electron offre l’esperienza desktop distribuita come pacchetto e funzioni native di bridge:

* Apertura e controllo della finestra dell’applicazione.
* Persistenza delle impostazioni desktop nell’archiviazione locale del frontend.
* Apertura delle finestre del Browser Ogma e delle viste browser integrate.
* Creazione dei pacchetti di risorse e binari per la distribuzione desktop.

## Modello di archiviazione {#storage-model}

Ogma conserva localmente i dati delle valutazioni. Le migrazioni del backend definiscono tabelle limitate a ciascun progetto per:

* Cronologia HTTP e corpi dei messaggi.
* Traffico WebSocket e SSE.
* Sessioni e tentativi di Ripetizione.
* Sessioni, esecuzioni ed esiti di Automazione.
* Rilievi di sicurezza e collegamenti alle evidenze.
* Flussi di lavoro e relative esecuzioni.
* Preimpostazioni di ambito.
* Plugin e relative autorizzazioni.
* File, esportazioni, backup e impostazioni.

## Ambiente di esecuzione dei plugin {#plugin-runtime}

I plugin possono includere componenti backend, componenti frontend o entrambi.

I plugin backend vengono eseguiti in una sandbox JavaScript e ricevono un oggetto `sdk`. I plugin frontend vengono eseguiti in iframe con isolamento sandbox e comunicano tramite un bridge controllato da Ogma.

Limiti importanti:

* I plugin frontend non possono accedere al DOM della pagina principale.
* I comandi del bridge vengono convalidati sul server.
* Le azioni backend protette richiedono autorizzazioni dichiarate e concesse.
* I pacchetti installati vengono copiati nella directory dei plugin gestita da Ogma per garantire un comportamento stabile durante l’esecuzione.

Consulta [Sistema di plugin](../plugins/README.md).

## Integrazione MCP {#mcp-integration}

Il server MCP espone il contesto dei progetti Ogma agli assistenti esterni. Per impostazione predefinita si avvia in modalità di sola lettura. Le capacità di scrittura, esportazione, invio di richieste, esecuzione dei flussi di lavoro e controllo dell’intercettazione richiedono autorizzazioni esplicite.

Consulta [Configurazione di MCP](../mcp-setup.md).

## Principi di progettazione {#design-principles}

* Priorità al funzionamento locale per impostazione predefinita.
* Rilievi di sicurezza collegati alle evidenze.
* Definizione dell’ambito prima dell’automazione.
* Controlli espliciti delle autorizzazioni per IA, plugin, invio di richieste ed esportazioni.
* Navigazione rapida per i flussi di lavoro ricorrenti di chi esegue i test.
* Compatibilità con i flussi di lavoro proxy consolidati, mantenendo Ogma estensibile.
