# hooxuefeng/snowedge architecture

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

- Interactive diagram: https://gitdiagram.com/hooxuefeng/snowedge
- Repository: https://github.com/hooxuefeng/snowedge

## Overview

SnowEdge is a local-first workspace for authorized security assessments. The documented flow begins with projects and scope, continues through asset discovery and scans, request and authorization testing, findings and evidence, AI-assisted analysis, retesting, and report delivery. The graph groups these domain stages and includes the persistent job engine as an internal execution layer. Edges are limited to relationships shown in excerpts, the SOURCE INDEX, or README; unsampled capability branches are included where documented, with uncertain wiring omitted.

Main entry points: [`app/main.py`](https://github.com/hooxuefeng/snowedge/blob/main/app/main.py) (Web application), [`app/services/scan_engine.py`](https://github.com/hooxuefeng/snowedge/blob/main/app/services/scan_engine.py) (Scan engine), [`app/request_routes.py`](https://github.com/hooxuefeng/snowedge/blob/main/app/request_routes.py) (Request workspace), [`app/services/job_engine.py`](https://github.com/hooxuefeng/snowedge/blob/main/app/services/job_engine.py) (Persistent job engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Workspace and scope"]
  node_app["Web application<br/>[main.py]"]
  node_scope["Authorized scope<br/>[scope.py]"]
end

subgraph group_discovery["Asset discovery"]
  node_scan_routes["Scan controls<br/>[scan_routes.py]"]
  node_scan_engine["Scan engine<br/>[scan_engine.py]"]
  node_scanners["Network and web probes"]
  node_fingerprints["Technology fingerprints"]
  node_toolchain["External toolchain<br/>[toolchain.py]"]
end

subgraph group_testing["Request testing"]
  node_request_routes["Request workspace<br/>[request_routes.py]"]
  node_request_service["Request handling"]
  node_browser["Browser observation"]
  node_auth_tests["Authorization testing"]
  node_burp["Burp extension<br/>[BurpExtender.java]"]
end

subgraph group_assessment["Findings and analysis"]
  node_findings["Finding workflow<br/>[finding_service.py]"]
  node_evidence["Evidence chain<br/>[evidence_chain.py]"]
  node_evidence_safety["Evidence safety<br/>[evidence_safety.py]"]
  node_copilot["AI analyst<br/>[analyst_copilot.py]"]
  node_skills["Skill registry<br/>[registry.py]"]
  node_hash["Hash analysis"]
  node_utility["Utility tools<br/>[utility_tools.py]"]
end

subgraph group_delivery["Retest and delivery"]
  node_retest["Remediation and retest<br/>[remediation.py]"]
  node_reports["Report delivery<br/>[report_render.py]"]
  node_report_routes["Report controls<br/>[delivery_routes.py]"]
end

subgraph group_runtime["Execution and persistence"]
  node_models[("Assessment records<br/>[models.py]")]
  node_job_engine["Persistent job engine<br/>[job_engine.py]"]
  node_worker["Background worker<br/>[worker.py]"]
end

node_user(("Security assessor"))
node_external_tools["Nmap and scanners"]
node_ai_provider["AI provider"]

node_user -->|"uses"| node_app
node_app -->|"enforces scope"| node_scope
node_app -->|"registers routes"| node_scan_routes
node_scan_routes -->|"invokes scans"| node_scan_engine
node_scan_engine -->|"checks targets"| node_scope
node_scan_engine -->|"uses probes"| node_scanners
node_scan_engine -->|"analyzes observations"| node_fingerprints
node_scan_engine -->|"creates findings"| node_findings
node_scan_routes -->|"queues scan jobs"| node_job_engine
node_user -.->|"selects tools"| node_toolchain
node_toolchain -.->|"dispatches tools"| node_external_tools
node_app -->|"registers routes"| node_request_routes
node_request_routes -->|"handles requests"| node_request_service
node_request_routes -->|"checks target"| node_scope
node_user -.->|"observes assets"| node_browser
node_user -.->|"tests authorization"| node_auth_tests
node_request_routes -.->|"queues work"| node_job_engine
node_scan_engine -->|"records evidence"| node_evidence
node_findings -->|"checks evidence"| node_evidence_safety
node_app -.->|"offers analysis"| node_copilot
node_copilot -->|"requests analysis"| node_ai_provider
node_copilot -->|"uses safeguards"| node_evidence_safety
node_user -.->|"configures skills"| node_skills
node_worker -->|"processes jobs"| node_job_engine
node_job_engine -->|"runs queries"| node_copilot
node_job_engine -->|"stores job state"| node_models
node_app -->|"persists workspace"| node_models
node_user -.->|"retests findings"| node_retest
node_report_routes -->|"renders exports"| node_reports
node_reports -.->|"organizes findings"| node_findings
node_reports -.->|"organizes evidence"| node_evidence
node_user -.->|"analyzes hashes"| node_hash
node_user -.->|"uses utilities"| node_utility
node_burp -.->|"imports requests"| node_request_routes

click node_app "https://github.com/hooxuefeng/snowedge/blob/main/app/main.py"
click node_scope "https://github.com/hooxuefeng/snowedge/blob/main/app/scope.py"
click node_models "https://github.com/hooxuefeng/snowedge/blob/main/app/models.py"
click node_scan_routes "https://github.com/hooxuefeng/snowedge/blob/main/app/scan_routes.py"
click node_scan_engine "https://github.com/hooxuefeng/snowedge/blob/main/app/services/scan_engine.py"
click node_scanners "https://github.com/hooxuefeng/snowedge/tree/main/app/scanners"
click node_fingerprints "https://github.com/hooxuefeng/snowedge/blob/main/app/services/fingerprint_engine.py"
click node_toolchain "https://github.com/hooxuefeng/snowedge/blob/main/app/services/toolchain.py"
click node_request_routes "https://github.com/hooxuefeng/snowedge/blob/main/app/request_routes.py"
click node_request_service "https://github.com/hooxuefeng/snowedge/blob/main/app/services/request_workspace.py"
click node_browser "https://github.com/hooxuefeng/snowedge/blob/main/app/services/browser_workspace.py"
click node_auth_tests "https://github.com/hooxuefeng/snowedge/blob/main/app/services/authorization_testing.py"
click node_findings "https://github.com/hooxuefeng/snowedge/blob/main/app/services/finding_service.py"
click node_evidence "https://github.com/hooxuefeng/snowedge/blob/main/app/services/evidence_chain.py"
click node_evidence_safety "https://github.com/hooxuefeng/snowedge/blob/main/app/services/evidence_safety.py"
click node_copilot "https://github.com/hooxuefeng/snowedge/blob/main/app/services/analyst_copilot.py"
click node_skills "https://github.com/hooxuefeng/snowedge/blob/main/app/skills/registry.py"
click node_job_engine "https://github.com/hooxuefeng/snowedge/blob/main/app/services/job_engine.py"
click node_worker "https://github.com/hooxuefeng/snowedge/blob/main/worker.py"
click node_retest "https://github.com/hooxuefeng/snowedge/blob/main/app/services/remediation.py"
click node_reports "https://github.com/hooxuefeng/snowedge/blob/main/app/services/report_render.py"
click node_report_routes "https://github.com/hooxuefeng/snowedge/blob/main/app/delivery_routes.py"
click node_hash "https://github.com/hooxuefeng/snowedge/tree/main/app/services/hash_analysis"
click node_utility "https://github.com/hooxuefeng/snowedge/blob/main/app/services/utility_tools.py"
click node_burp "https://github.com/hooxuefeng/snowedge/blob/main/integrations/burp-extension/src/main/java/burp/BurpExtender.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_app,node_scope toneBlue
class node_scan_routes,node_scan_engine,node_scanners,node_fingerprints,node_toolchain toneAmber
class node_request_routes,node_request_service,node_browser,node_auth_tests,node_burp toneMint
class node_findings,node_evidence,node_evidence_safety,node_copilot,node_skills,node_hash,node_utility toneRose
class node_retest,node_reports,node_report_routes,node_user,node_external_tools,node_ai_provider toneIndigo
class node_models,node_job_engine,node_worker toneTeal
```

## Components

### Workspace and scope

- [Web application](https://github.com/hooxuefeng/snowedge/blob/main/app/main.py): `app/main.py`
- [Authorized scope](https://github.com/hooxuefeng/snowedge/blob/main/app/scope.py): `app/scope.py`

### Asset discovery

- [Scan controls](https://github.com/hooxuefeng/snowedge/blob/main/app/scan_routes.py): `app/scan_routes.py`
- [Scan engine](https://github.com/hooxuefeng/snowedge/blob/main/app/services/scan_engine.py): `app/services/scan_engine.py`
- [Network and web probes](https://github.com/hooxuefeng/snowedge/tree/main/app/scanners): `app/scanners`
- [Technology fingerprints](https://github.com/hooxuefeng/snowedge/blob/main/app/services/fingerprint_engine.py): `app/services/fingerprint_engine.py`
- [External toolchain](https://github.com/hooxuefeng/snowedge/blob/main/app/services/toolchain.py): `app/services/toolchain.py`

### Request testing

- [Request workspace](https://github.com/hooxuefeng/snowedge/blob/main/app/request_routes.py): `app/request_routes.py`
- [Request handling](https://github.com/hooxuefeng/snowedge/blob/main/app/services/request_workspace.py): `app/services/request_workspace.py`
- [Browser observation](https://github.com/hooxuefeng/snowedge/blob/main/app/services/browser_workspace.py): `app/services/browser_workspace.py`
- [Authorization testing](https://github.com/hooxuefeng/snowedge/blob/main/app/services/authorization_testing.py): `app/services/authorization_testing.py`
- [Burp extension](https://github.com/hooxuefeng/snowedge/blob/main/integrations/burp-extension/src/main/java/burp/BurpExtender.java): `integrations/burp-extension/src/main/java/burp/BurpExtender.java`

### Findings and analysis

- [Finding workflow](https://github.com/hooxuefeng/snowedge/blob/main/app/services/finding_service.py): `app/services/finding_service.py`
- [Evidence chain](https://github.com/hooxuefeng/snowedge/blob/main/app/services/evidence_chain.py): `app/services/evidence_chain.py`
- [Evidence safety](https://github.com/hooxuefeng/snowedge/blob/main/app/services/evidence_safety.py): `app/services/evidence_safety.py`
- [AI analyst](https://github.com/hooxuefeng/snowedge/blob/main/app/services/analyst_copilot.py): `app/services/analyst_copilot.py`
- [Skill registry](https://github.com/hooxuefeng/snowedge/blob/main/app/skills/registry.py): `app/skills/registry.py`
- [Hash analysis](https://github.com/hooxuefeng/snowedge/tree/main/app/services/hash_analysis): `app/services/hash_analysis`
- [Utility tools](https://github.com/hooxuefeng/snowedge/blob/main/app/services/utility_tools.py): `app/services/utility_tools.py`

### Retest and delivery

- [Remediation and retest](https://github.com/hooxuefeng/snowedge/blob/main/app/services/remediation.py): `app/services/remediation.py`
- [Report delivery](https://github.com/hooxuefeng/snowedge/blob/main/app/services/report_render.py): `app/services/report_render.py`
- [Report controls](https://github.com/hooxuefeng/snowedge/blob/main/app/delivery_routes.py): `app/delivery_routes.py`

### Execution and persistence

- [Assessment records](https://github.com/hooxuefeng/snowedge/blob/main/app/models.py): `app/models.py`
- [Persistent job engine](https://github.com/hooxuefeng/snowedge/blob/main/app/services/job_engine.py): `app/services/job_engine.py`
- [Background worker](https://github.com/hooxuefeng/snowedge/blob/main/worker.py): `worker.py`

### Other components

- **Security assessor**
- **Nmap and scanners**
- **AI provider**

## Connections

- Security assessor → Web application: uses (evidence: `README.md`)
- Web application → Authorized scope: enforces scope (evidence: `app/main.py`)
- Web application → Scan controls: registers routes (evidence: `app/main.py`)
- Scan controls → Scan engine: invokes scans (evidence: `app/scan_routes.py`)
- Scan engine → Authorized scope: checks targets (evidence: `app/services/scan_engine.py`)
- Scan engine → Network and web probes: uses probes (evidence: `app/services/scan_engine.py`)
- Scan engine → Technology fingerprints: analyzes observations (evidence: `app/services/scan_engine.py`)
- Scan engine → Finding workflow: creates findings (evidence: `app/services/scan_engine.py`)
- Scan controls → Persistent job engine: queues scan jobs (evidence: `app/scan_routes.py`)
- Security assessor → External toolchain: selects tools (evidence: `README.md`)
- External toolchain → Nmap and scanners: dispatches tools (evidence: `README.md`)
- Web application → Request workspace: registers routes (evidence: `app/main.py`)
- Request workspace → Request handling: handles requests (evidence: `app/request_routes.py`)
- Request workspace → Authorized scope: checks target (evidence: `app/request_routes.py`)
- Security assessor → Browser observation: observes assets (evidence: `README.md`)
- Security assessor → Authorization testing: tests authorization (evidence: `README.md`)
- Request workspace → Persistent job engine: queues work (evidence: `app/request_routes.py`)
- Scan engine → Evidence chain: records evidence (evidence: `app/services/scan_engine.py`)
- Finding workflow → Evidence safety: checks evidence (evidence: `app/services/finding_service.py`)
- Web application → AI analyst: offers analysis (evidence: `README.md`)
- AI analyst → AI provider: requests analysis (evidence: `app/services/analyst_copilot.py`)
- AI analyst → Evidence safety: uses safeguards (evidence: `app/services/analyst_copilot.py`)
- Security assessor → Skill registry: configures skills (evidence: `app/skills/registry.py`)
- Background worker → Persistent job engine: processes jobs (evidence: `worker.py`)
- Persistent job engine → AI analyst: runs queries (evidence: `app/services/job_engine.py`)
- Persistent job engine → Assessment records: stores job state (evidence: `app/services/job_engine.py`)
- Web application → Assessment records: persists workspace (evidence: `app/main.py`)
- Security assessor → Remediation and retest: retests findings (evidence: `README.md`)
- Report controls → Report delivery: renders exports (evidence: `app/delivery_routes.py`)
- Report delivery → Finding workflow: organizes findings (evidence: `README.md`)
- Report delivery → Evidence chain: organizes evidence (evidence: `README.md`)
- Security assessor → Hash analysis: analyzes hashes (evidence: `README.md`)
- Security assessor → Utility tools: uses utilities (evidence: `README.md`)
- Burp extension → Request workspace: imports requests (evidence: `README.md`)
