# bogdanticu88/axiom architecture

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

- Interactive diagram: https://gitdiagram.com/bogdanticu88/axiom
- Repository: https://github.com/bogdanticu88/axiom

## Overview

Axiom is an evidence-backed vulnerability-management platform. Its principal workflow takes scanner findings through import and asset/deployment binding, investigation and policy-based prioritisation, approved remediation, verification against the affected deployment, and recorded closure/reporting. The graph also shows the analyst UI, evidence handling, integrations, and durable job infrastructure. Relationships are supported by the README and the cited excerpts or SOURCE INDEX references; unsampled subsystem wiring is not inferred.

Main entry points: [`backend/axiom/domains/cases/service.py`](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/cases/service.py) (Case workflow), [`backend/axiom/domains/evidence/service.py`](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/evidence/service.py) (Evidence store), [`backend/axiom/ingestion/pipeline.py`](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/ingestion/pipeline.py) (Finding ingestion), [`backend/axiom/api/app.py`](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/api/app.py) (API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Finding workflow"]
  node_ui["Analyst UI<br/>[App.tsx]"]
  node_ingest["Finding ingestion<br/>[pipeline.py]"]
  node_adapters["Source adapters<br/>[catalogue.py]"]
  node_cases["Case workflow<br/>[service.py]"]
  node_verification["Verification worker<br/>[worker.py]"]
  node_reports["Reports<br/>[service.py]"]
end

subgraph group_decision["Decisions and action"]
  node_investigation["Investigation<br/>[service.py]"]
  node_policies["Policies and priority<br/>[service.py]"]
  node_actions["Approved actions<br/>[service.py]"]
  node_trackers["Ticket integrations"]
end

subgraph group_platform["Platform services"]
  node_api["API<br/>[app.py]"]
  node_evidence["Evidence store<br/>[service.py]"]
  node_audit["Audit history<br/>[audit.py]"]
end

subgraph group_runtime["Runtime infrastructure"]
  node_database[("PostgreSQL<br/>[db.py]")]
  node_jobs["Durable jobs<br/>[worker.py]"]
end

node_analyst(("Analyst"))

node_analyst -->|"uses"| node_ui
node_ui -->|"requests"| node_api
node_api -->|"routes imports"| node_ingest
node_ingest -->|"parses with"| node_adapters
node_ingest -->|"reads evidence"| node_evidence
node_ingest -->|"creates findings"| node_cases
node_analyst -->|"requests investigation"| node_investigation
node_investigation -->|"uses snapshots"| node_evidence
node_cases -->|"loads policy"| node_policies
node_analyst -->|"approves action"| node_actions
node_actions -.->|"executes approved action"| node_trackers
node_verification -->|"records result"| node_cases
node_verification -->|"records evidence"| node_evidence
node_analyst -->|"closes case"| node_cases
node_analyst -->|"exports report"| node_reports
node_api -->|"uses service"| node_evidence
node_api -->|"serves cases"| node_cases
node_cases -->|"reads and writes"| node_database
node_evidence -->|"records metadata"| node_database
node_evidence -.->|"stores objects"| node_database
node_cases -->|"records decisions"| node_audit
node_jobs -->|"claims jobs"| node_database
node_actions -->|"schedules work"| node_jobs

click node_ui "https://github.com/bogdanticu88/axiom/blob/main/frontend/src/App.tsx"
click node_api "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/api/app.py"
click node_ingest "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/ingestion/pipeline.py"
click node_adapters "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/adapters/catalogue.py"
click node_evidence "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/evidence/service.py"
click node_cases "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/cases/service.py"
click node_investigation "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/investigation/service.py"
click node_policies "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/policies/service.py"
click node_actions "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/actions/service.py"
click node_trackers "https://github.com/bogdanticu88/axiom/tree/main/backend/axiom/integrations"
click node_verification "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/verification/worker.py"
click node_reports "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/reports/service.py"
click node_database "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/db.py"
click node_jobs "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/jobs/worker.py"
click node_audit "https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/audit.py"

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_ui,node_ingest,node_adapters,node_cases,node_verification,node_reports toneBlue
class node_investigation,node_policies,node_actions,node_trackers toneAmber
class node_api,node_evidence,node_audit toneMint
class node_database,node_jobs toneRose
class node_analyst toneIndigo
```

## Components

### Finding workflow

- [Analyst UI](https://github.com/bogdanticu88/axiom/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Finding ingestion](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/ingestion/pipeline.py): `backend/axiom/ingestion/pipeline.py`
- [Source adapters](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/adapters/catalogue.py): `backend/axiom/adapters/catalogue.py`
- [Case workflow](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/cases/service.py): `backend/axiom/domains/cases/service.py`
- [Verification worker](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/verification/worker.py): `backend/axiom/verification/worker.py`
- [Reports](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/reports/service.py): `backend/axiom/domains/reports/service.py`

### Decisions and action

- [Investigation](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/investigation/service.py): `backend/axiom/investigation/service.py`
- [Policies and priority](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/policies/service.py): `backend/axiom/domains/policies/service.py`
- [Approved actions](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/actions/service.py): `backend/axiom/domains/actions/service.py`
- [Ticket integrations](https://github.com/bogdanticu88/axiom/tree/main/backend/axiom/integrations): `backend/axiom/integrations`

### Platform services

- [API](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/api/app.py): `backend/axiom/api/app.py`
- [Evidence store](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/domains/evidence/service.py): `backend/axiom/domains/evidence/service.py`
- [Audit history](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/audit.py): `backend/axiom/audit.py`

### Runtime infrastructure

- [PostgreSQL](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/db.py): `backend/axiom/db.py`
- [Durable jobs](https://github.com/bogdanticu88/axiom/blob/main/backend/axiom/jobs/worker.py): `backend/axiom/jobs/worker.py`

### Other components

- **Analyst**

## Connections

- Analyst → Analyst UI: uses (evidence: `README.md`)
- Analyst UI → API: requests (evidence: `frontend/src/App.tsx`)
- API → Finding ingestion: routes imports (evidence: `backend/axiom/api/app.py`)
- Finding ingestion → Source adapters: parses with (evidence: `backend/axiom/ingestion/pipeline.py`)
- Finding ingestion → Evidence store: reads evidence (evidence: `backend/axiom/ingestion/pipeline.py`)
- Finding ingestion → Case workflow: creates findings (evidence: `backend/axiom/ingestion/pipeline.py`)
- Analyst → Investigation: requests investigation (evidence: `README.md`)
- Investigation → Evidence store: uses snapshots (evidence: `backend/axiom/investigation/service.py`)
- Case workflow → Policies and priority: loads policy (evidence: `backend/axiom/domains/cases/service.py`)
- Analyst → Approved actions: approves action (evidence: `README.md`)
- Approved actions → Ticket integrations: executes approved action
- Verification worker → Case workflow: records result (evidence: `backend/axiom/verification/worker.py`)
- Verification worker → Evidence store: records evidence (evidence: `backend/axiom/verification/worker.py`)
- Analyst → Case workflow: closes case (evidence: `README.md`)
- Analyst → Reports: exports report (evidence: `README.md`)
- API → Evidence store: uses service (evidence: `backend/axiom/api/app.py`)
- API → Case workflow: serves cases (evidence: `backend/axiom/api/app.py`)
- Case workflow → PostgreSQL: reads and writes (evidence: `backend/axiom/domains/cases/service.py`)
- Evidence store → PostgreSQL: records metadata (evidence: `backend/axiom/domains/evidence/service.py`)
- Evidence store → PostgreSQL: stores objects (evidence: `backend/axiom/domains/evidence/service.py`)
- Case workflow → Audit history: records decisions (evidence: `backend/axiom/domains/cases/service.py`)
- Durable jobs → PostgreSQL: claims jobs (evidence: `backend/axiom/jobs/worker.py`)
- Approved actions → Durable jobs: schedules work (evidence: `backend/axiom/domains/actions/service.py`)
