# camthink-ai/ne301-model-converter architecture

> Architecture diagram of the GitHub repository camthink-ai/ne301-model-converter, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/camthink-ai/ne301-model-converter
- Repository: https://github.com/camthink-ai/ne301-model-converter

## Overview

NE301 Model Converter is a browser-based workflow for converting PyTorch YOLO models into NE301 `.bin` files. Users provide a model, class definitions, optional calibration data, and conversion settings; the frontend starts a task, displays live progress and logs, and downloads the result. The backend validates uploads, tracks tasks, and delegates conversion to a Docker-based NE301 toolchain. Setup checks, task/performance reporting, configuration, and NE301 diagnostics are supporting capabilities. Edges are limited to README statements and shown source references; some toolchain internals are unsampled.

Main entry points: [`backend/app/main.py`](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/main.py) (FastAPI application), [`backend/app/core/docker_adapter.py`](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/docker_adapter.py) (Docker conversion toolchain), [`frontend/src/pages/HomePage.tsx`](https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/pages/HomePage.tsx) (Conversion page), [`backend/app/core/task_manager.py`](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/task_manager.py) (Task manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Conversion interface"]
  node_home["Conversion page<br/>[HomePage.tsx]"]
  node_uploads["Model and data uploads"]
  node_conversion_hook["Conversion controller<br/>[useConversion.ts]"]
  node_api_client["API client<br/>[api.ts]"]
  node_monitor["Progress and logs"]
  node_app_state["Conversion state<br/>[app.ts]"]
  node_setup_page["Setup page<br/>[SetupPage.tsx]"]
  node_app_router["Page router<br/>[App.tsx]"]
end

subgraph group_api["HTTP and task APIs"]
  node_fastapi["FastAPI application<br/>[main.py]"]
  node_convert_api["Conversion endpoint<br/>[convert.py]"]
  node_tasks_api["Task and result endpoints<br/>[tasks.py]"]
  node_websocket_api["WebSocket endpoint<br/>[websocket.py]"]
  node_setup_api["Setup endpoint<br/>[setup.py]"]
end

subgraph group_runtime["Conversion runtime"]
  node_task_manager["Task manager<br/>[task_manager.py]"]
  node_docker_toolchain["Docker conversion toolchain<br/>[docker_adapter.py]"]
  node_converter["Converter adapter<br/>[converter.py]"]
  node_ne301_config["NE301 configuration<br/>[ne301_config.py]"]
  node_performance["Performance monitor"]
end

subgraph group_support["Setup and diagnostics"]
  node_environment["Environment detection<br/>[environment.py]"]
  node_quantization["TFLite quantization tool<br/>[tflite_quant.py]"]
  node_bin_diagnostics["Binary diagnostics"]
end

subgraph group_contracts["Shared contracts"]
  node_config["Runtime settings<br/>[config.py]"]
  node_schemas["API and task schemas<br/>[schemas.py]"]
end

node_user(("Operator"))
node_docker["Docker and NE301 tools"]
node_browser(("Web browser"))

node_user -->|"uses"| node_browser
node_browser -.->|"opens"| node_home
node_app_router -->|"routes to"| node_home
node_app_router -->|"routes to"| node_setup_page
node_home -->|"renders"| node_uploads
node_home -->|"starts and controls"| node_conversion_hook
node_home -->|"reads and updates"| node_app_state
node_home -->|"renders"| node_monitor
node_conversion_hook -->|"calls"| node_api_client
node_conversion_hook -->|"opens WebSocket"| node_browser
node_api_client -->|"sends HTTP requests"| node_fastapi
node_browser -->|"HTTP and WebSocket"| node_fastapi
node_fastapi -->|"registers route"| node_convert_api
node_fastapi -->|"registers route"| node_setup_api
node_fastapi -->|"registers route"| node_tasks_api
node_fastapi -->|"registers route"| node_websocket_api
node_convert_api -->|"validates input"| node_schemas
node_convert_api -->|"creates task"| node_task_manager
node_convert_api -->|"runs conversion"| node_docker_toolchain
node_docker_toolchain -->|"runs in container"| node_docker
node_docker_toolchain -->|"reads settings"| node_config
node_docker_toolchain -->|"uses configuration"| node_ne301_config
node_docker_toolchain -->|"records metrics"| node_performance
node_docker_toolchain -->|"updates task"| node_task_manager
node_converter -->|"delegates"| node_docker_toolchain
node_task_manager -->|"broadcasts updates"| node_websocket_api
node_websocket_api -->|"sends live updates"| node_browser
node_tasks_api -->|"reads task state"| node_task_manager
node_tasks_api -->|"queries metrics"| node_performance
node_tasks_api -.->|"serves result"| node_browser
node_setup_api -->|"checks environment"| node_environment
node_environment -->|"checks Docker"| node_docker_toolchain
node_environment -->|"returns status"| node_schemas
node_fastapi -->|"loads settings"| node_config
node_fastapi -->|"initializes loop"| node_task_manager

click node_home "https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/pages/HomePage.tsx"
click node_uploads "https://github.com/camthink-ai/ne301-model-converter/tree/main/frontend/src/components/upload"
click node_conversion_hook "https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/hooks/useConversion.ts"
click node_api_client "https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/services/api.ts"
click node_monitor "https://github.com/camthink-ai/ne301-model-converter/tree/main/frontend/src/components/monitor"
click node_app_state "https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/store/app.ts"
click node_setup_page "https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/pages/SetupPage.tsx"
click node_app_router "https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/App.tsx"
click node_fastapi "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/main.py"
click node_convert_api "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/api/convert.py"
click node_tasks_api "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/api/tasks.py"
click node_websocket_api "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/api/websocket.py"
click node_setup_api "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/api/setup.py"
click node_task_manager "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/task_manager.py"
click node_docker_toolchain "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/docker_adapter.py"
click node_converter "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/converter.py"
click node_ne301_config "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/ne301_config.py"
click node_performance "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/performance_monitor.py"
click node_environment "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/environment.py"
click node_quantization "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/tools/quantization/tflite_quant.py"
click node_bin_diagnostics "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/tools/diagnose_bin_file.py"
click node_config "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/config.py"
click node_schemas "https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/models/schemas.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_home,node_uploads,node_conversion_hook,node_api_client,node_monitor,node_app_state,node_setup_page,node_app_router,node_browser toneBlue
class node_fastapi,node_convert_api,node_tasks_api,node_websocket_api,node_setup_api toneAmber
class node_task_manager,node_docker_toolchain,node_converter,node_ne301_config,node_performance toneMint
class node_environment,node_quantization,node_bin_diagnostics toneRose
class node_config,node_schemas,node_user,node_docker toneIndigo
```

## Components

### Conversion interface

- [Conversion page](https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/pages/HomePage.tsx): `frontend/src/pages/HomePage.tsx`
- [Model and data uploads](https://github.com/camthink-ai/ne301-model-converter/tree/main/frontend/src/components/upload): `frontend/src/components/upload`
- [Conversion controller](https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/hooks/useConversion.ts): `frontend/src/hooks/useConversion.ts`
- [API client](https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`
- [Progress and logs](https://github.com/camthink-ai/ne301-model-converter/tree/main/frontend/src/components/monitor): `frontend/src/components/monitor`
- [Conversion state](https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/store/app.ts): `frontend/src/store/app.ts`
- [Setup page](https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/pages/SetupPage.tsx): `frontend/src/pages/SetupPage.tsx`
- [Page router](https://github.com/camthink-ai/ne301-model-converter/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`

### HTTP and task APIs

- [FastAPI application](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/main.py): `backend/app/main.py`
- [Conversion endpoint](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/api/convert.py): `backend/app/api/convert.py`
- [Task and result endpoints](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/api/tasks.py): `backend/app/api/tasks.py`
- [WebSocket endpoint](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/api/websocket.py): `backend/app/api/websocket.py`
- [Setup endpoint](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/api/setup.py): `backend/app/api/setup.py`

### Conversion runtime

- [Task manager](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/task_manager.py): `backend/app/core/task_manager.py`
- [Docker conversion toolchain](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/docker_adapter.py): `backend/app/core/docker_adapter.py`
- [Converter adapter](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/converter.py): `backend/app/core/converter.py`
- [NE301 configuration](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/ne301_config.py): `backend/app/core/ne301_config.py`
- [Performance monitor](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/performance_monitor.py): `backend/app/core/performance_monitor.py`

### Setup and diagnostics

- [Environment detection](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/environment.py): `backend/app/core/environment.py`
- [TFLite quantization tool](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/tools/quantization/tflite_quant.py): `backend/tools/quantization/tflite_quant.py`
- [Binary diagnostics](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/tools/diagnose_bin_file.py): `backend/tools/diagnose_bin_file.py`

### Shared contracts

- [Runtime settings](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/core/config.py): `backend/app/core/config.py`
- [API and task schemas](https://github.com/camthink-ai/ne301-model-converter/blob/main/backend/app/models/schemas.py): `backend/app/models/schemas.py`

### Other components

- **Operator**
- **Docker and NE301 tools**
- **Web browser**

## Connections

- Operator → Web browser: uses (evidence: `README.md`)
- Web browser → Conversion page: opens
- Page router → Conversion page: routes to (evidence: `frontend/src/App.tsx`)
- Page router → Setup page: routes to (evidence: `frontend/src/App.tsx`)
- Conversion page → Model and data uploads: renders (evidence: `frontend/src/pages/HomePage.tsx`)
- Conversion page → Conversion controller: starts and controls (evidence: `frontend/src/pages/HomePage.tsx`)
- Conversion page → Conversion state: reads and updates (evidence: `frontend/src/pages/HomePage.tsx`)
- Conversion page → Progress and logs: renders (evidence: `frontend/src/pages/HomePage.tsx`)
- Conversion controller → API client: calls (evidence: `frontend/src/hooks/useConversion.ts`)
- Conversion controller → Web browser: opens WebSocket (evidence: `frontend/src/hooks/useConversion.ts`)
- API client → FastAPI application: sends HTTP requests (evidence: `README.md`)
- Web browser → FastAPI application: HTTP and WebSocket (evidence: `README.md`)
- FastAPI application → Conversion endpoint: registers route (evidence: `backend/app/main.py`)
- FastAPI application → Setup endpoint: registers route (evidence: `backend/app/main.py`)
- FastAPI application → Task and result endpoints: registers route (evidence: `backend/app/main.py`)
- FastAPI application → WebSocket endpoint: registers route (evidence: `backend/app/main.py`)
- Conversion endpoint → API and task schemas: validates input (evidence: `backend/app/api/convert.py`)
- Conversion endpoint → Task manager: creates task (evidence: `backend/app/api/convert.py`)
- Conversion endpoint → Docker conversion toolchain: runs conversion (evidence: `backend/app/api/convert.py`)
- Docker conversion toolchain → Docker and NE301 tools: runs in container (evidence: `README.md`)
- Docker conversion toolchain → Runtime settings: reads settings (evidence: `backend/app/core/docker_adapter.py`)
- Docker conversion toolchain → NE301 configuration: uses configuration (evidence: `backend/app/core/docker_adapter.py`)
- Docker conversion toolchain → Performance monitor: records metrics (evidence: `backend/app/core/docker_adapter.py`)
- Docker conversion toolchain → Task manager: updates task (evidence: `backend/app/core/docker_adapter.py`)
- Converter adapter → Docker conversion toolchain: delegates (evidence: `backend/app/core/converter.py`)
- Task manager → WebSocket endpoint: broadcasts updates (evidence: `backend/app/api/websocket.py`)
- WebSocket endpoint → Web browser: sends live updates (evidence: `README.md`)
- Task and result endpoints → Task manager: reads task state (evidence: `backend/app/api/tasks.py`)
- Task and result endpoints → Performance monitor: queries metrics (evidence: `backend/app/api/tasks.py`)
- Task and result endpoints → Web browser: serves result
- Setup endpoint → Environment detection: checks environment (evidence: `backend/app/api/setup.py`)
- Environment detection → Docker conversion toolchain: checks Docker (evidence: `backend/app/core/environment.py`)
- Environment detection → API and task schemas: returns status (evidence: `backend/app/core/environment.py`)
- FastAPI application → Runtime settings: loads settings (evidence: `backend/app/main.py`)
- FastAPI application → Task manager: initializes loop (evidence: `backend/app/main.py`)
