# openaev-platform/openaev architecture

> Architecture diagram of the GitHub repository openaev-platform/openaev, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/openaev-platform/openaev
- Repository: https://github.com/openaev-platform/openaev

## Overview

OpenAEV is a cyber adversary simulation platform: teams plan and run exercises, deliver injects through integrations, and review execution outcomes and security coverage. The API exposes campaign, workflow, autonomous-run, and attack-path capabilities; ingestion services build attack-path execution and finding data. Security coverage can be exchanged with OpenCTI, and connector orchestration manages connector instances. The sampled sources also show notification processing, full-text search, and coverage-send job handling. Several capabilities are evident from the README and tree, but unsampled implementation details do not establish their internal call wiring.

Main entry points: [`openaev-api/src/main/java/io/openaev/service/SecurityCoverageSendJobService.java`](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/SecurityCoverageSendJobService.java) (Coverage send jobs), [`openaev-api/src/main/java/io/openaev/api/xtm_composer`](https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/xtm_composer) (Connector APIs), [`openaev-api/src/main/java/io/openaev/service/connectors/ConnectorOrchestrationService.java`](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/connectors/ConnectorOrchestrationService.java) (Connector orchestration), [`openaev-api/src/main/java/io/openaev/service/attackpath/ingestion/AttackPathExecutionIngestionService.java`](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/attackpath/ingestion/AttackPathExecutionIngestionService.java) (Execution ingestion)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_campaigns["Exercise planning"]
  node_campaign_api["Campaign APIs"]
  node_autonomous_api["Autonomous runs"]
end

subgraph group_execution["Simulation analysis"]
  node_attackpath_api["Attack paths"]
  node_execution_ingest["Execution ingestion"]
  node_finding_ingest["Finding ingestion"]
  node_coverage_api["Coverage APIs"]
end

subgraph group_integrations["External integrations"]
  node_coverage_service["Coverage exchange"]
  node_coverage_inject["Coverage injects"]
  node_coverage_jobs["Coverage send jobs"]
  node_connector_api["Connector APIs"]
  node_connector_orch["Connector orchestration"]
  node_catalog_ingest["Connector catalog"]
end

subgraph group_platform["Platform services"]
  node_notifications["Notification engine"]
  node_search["Full-text search"]
  node_engine["Analytics engine<br/>[EngineService.java]"]
  node_database[("Platform data")]
end

node_user(("Platform user"))
node_opencti(("OpenCTI"))
node_injectors(("Inject integrations"))

node_user -->|"plans exercises"| node_campaign_api
node_user -->|"starts runs"| node_autonomous_api
node_user -->|"views paths"| node_attackpath_api
node_user -->|"manages coverage"| node_coverage_api
node_user -->|"manages connectors"| node_connector_api
node_execution_ingest -->|"writes executions"| node_database
node_finding_ingest -->|"writes findings"| node_database
node_coverage_jobs -->|"reads and updates jobs"| node_database
node_coverage_jobs -.->|"reports sent results"| node_opencti
node_coverage_service -.->|"exchanges STIX coverage"| node_opencti
node_connector_orch -.->|"checks composer status"| node_opencti
node_connector_api -->|"manages instances"| node_connector_orch
node_catalog_ingest -->|"updates catalog"| node_database
node_notifications -->|"records events"| node_database
node_search -->|"queries entities"| node_database
node_engine -.->|"indexes and searches"| node_database

click node_campaign_api "https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/chaining"
click node_autonomous_api "https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/autonomous"
click node_attackpath_api "https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/attackpath"
click node_execution_ingest "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/attackpath/ingestion/AttackPathExecutionIngestionService.java"
click node_finding_ingest "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/attackpath/ingestion/AttackPathFindingIngestionService.java"
click node_coverage_api "https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/attack_pattern"
click node_coverage_service "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/stix/SecurityCoverageService.java"
click node_coverage_inject "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/stix/SecurityCoverageInjectService.java"
click node_coverage_jobs "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/SecurityCoverageSendJobService.java"
click node_connector_api "https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/xtm_composer"
click node_connector_orch "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/connectors/ConnectorOrchestrationService.java"
click node_catalog_ingest "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/catalog_connectors/CatalogConnectorIngestionService.java"
click node_notifications "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/notification/engine/NotificationEngineService.java"
click node_search "https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/search/FullTextSearchService.java"
click node_engine "https://github.com/openaev-platform/openaev/blob/main/openaev-model/src/main/java/io/openaev/engine/facade/EngineService.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_campaign_api,node_autonomous_api,node_user toneBlue
class node_attackpath_api,node_execution_ingest,node_finding_ingest,node_coverage_api toneAmber
class node_coverage_service,node_coverage_inject,node_coverage_jobs,node_connector_api,node_connector_orch,node_catalog_ingest toneMint
class node_notifications,node_search,node_engine,node_database toneRose
class node_opencti,node_injectors toneIndigo
```

## Components

### Exercise planning

- [Campaign APIs](https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/chaining): `openaev-api/src/main/java/io/openaev/api/chaining`
- [Autonomous runs](https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/autonomous): `openaev-api/src/main/java/io/openaev/api/autonomous`

### Simulation analysis

- [Attack paths](https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/attackpath): `openaev-api/src/main/java/io/openaev/api/attackpath`
- [Execution ingestion](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/attackpath/ingestion/AttackPathExecutionIngestionService.java): `openaev-api/src/main/java/io/openaev/service/attackpath/ingestion/AttackPathExecutionIngestionService.java`
- [Finding ingestion](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/attackpath/ingestion/AttackPathFindingIngestionService.java): `openaev-api/src/main/java/io/openaev/service/attackpath/ingestion/AttackPathFindingIngestionService.java`
- [Coverage APIs](https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/attack_pattern): `openaev-api/src/main/java/io/openaev/api/attack_pattern`

### External integrations

- [Coverage exchange](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/stix/SecurityCoverageService.java): `openaev-api/src/main/java/io/openaev/service/stix/SecurityCoverageService.java`
- [Coverage injects](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/stix/SecurityCoverageInjectService.java): `openaev-api/src/main/java/io/openaev/service/stix/SecurityCoverageInjectService.java`
- [Coverage send jobs](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/SecurityCoverageSendJobService.java): `openaev-api/src/main/java/io/openaev/service/SecurityCoverageSendJobService.java`
- [Connector APIs](https://github.com/openaev-platform/openaev/tree/main/openaev-api/src/main/java/io/openaev/api/xtm_composer): `openaev-api/src/main/java/io/openaev/api/xtm_composer`
- [Connector orchestration](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/connectors/ConnectorOrchestrationService.java): `openaev-api/src/main/java/io/openaev/service/connectors/ConnectorOrchestrationService.java`
- [Connector catalog](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/service/catalog_connectors/CatalogConnectorIngestionService.java): `openaev-api/src/main/java/io/openaev/service/catalog_connectors/CatalogConnectorIngestionService.java`

### Platform services

- [Notification engine](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/notification/engine/NotificationEngineService.java): `openaev-api/src/main/java/io/openaev/notification/engine/NotificationEngineService.java`
- [Full-text search](https://github.com/openaev-platform/openaev/blob/main/openaev-api/src/main/java/io/openaev/search/FullTextSearchService.java): `openaev-api/src/main/java/io/openaev/search/FullTextSearchService.java`
- [Analytics engine](https://github.com/openaev-platform/openaev/blob/main/openaev-model/src/main/java/io/openaev/engine/facade/EngineService.java): `openaev-model/src/main/java/io/openaev/engine/facade/EngineService.java`
- **Platform data**

### Other components

- **Platform user**
- **OpenCTI**
- **Inject integrations**

## Connections

- Platform user → Campaign APIs: plans exercises
- Platform user → Autonomous runs: starts runs
- Platform user → Attack paths: views paths
- Platform user → Coverage APIs: manages coverage
- Platform user → Connector APIs: manages connectors
- Execution ingestion → Platform data: writes executions
- Finding ingestion → Platform data: writes findings
- Coverage send jobs → Platform data: reads and updates jobs
- Coverage send jobs → OpenCTI: reports sent results
- Coverage exchange → OpenCTI: exchanges STIX coverage
- Connector orchestration → OpenCTI: checks composer status
- Connector APIs → Connector orchestration: manages instances
- Connector catalog → Platform data: updates catalog
- Notification engine → Platform data: records events
- Full-text search → Platform data: queries entities
- Analytics engine → Platform data: indexes and searches
