# vinayaka-29/vyomix architecture

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

- Interactive diagram: https://gitdiagram.com/vinayaka-29/vyomix
- Repository: https://github.com/vinayaka-29/vyomix

## Overview

SatQuery AI is a web platform for asking natural-language questions about remote-sensing imagery. Users upload sensor or time-paired images, submit a query, and receive an automatically routed analysis with evidence, visual overlays, confidence and an auditable trace; reports can be downloaded. The README documents the controller stages and major specialist capabilities. Some backend excerpts are partial, so links among unsampled implementation details are omitted; the frontend client excerpt also shows a different endpoint from the documented upload/query flow.

Main entry points: [`backend/api/routes.py`](https://github.com/vinayaka-29/vyomix/blob/main/backend/api/routes.py) (Upload and Query API), [`backend/agent/executor.py`](https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/executor.py) (Plan Executor), [`frontend/src/routes/index.tsx`](https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/routes/index.tsx) (Analysis Workspace), [`frontend/src/lib/satquery.ts`](https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/lib/satquery.ts) (API Client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User Interface"]
  node_workspace["Analysis Workspace<br/>[index.tsx]"]
  node_upload_ui["Image Upload<br/>[UploadPanel.tsx]"]
  node_query_ui["Query Input<br/>[QueryBox.tsx]"]
  node_api_client["API Client<br/>[satquery.ts]"]
  node_results_ui["Results and Overlays"]
  node_trace_ui["Trace Viewer"]
end

subgraph group_api["API and Controller"]
  node_backend["FastAPI Service<br/>[main.py]"]
  node_routes["Upload and Query API<br/>[routes.py]"]
  node_validation["Raster Validation<br/>[file_validator.py]"]
  node_modality["Modality Detection"]
  node_interpreter["Query Interpreter"]
  node_classifier["Task Compatibility<br/>[task_classifier.py]"]
  node_planner["Execution Planner<br/>[planner.py]"]
  node_executor["Plan Executor<br/>[executor.py]"]
end

subgraph group_specialists["Analysis Specialists"]
  node_vqa["Image VQA<br/>[vqa_model.py]"]
  node_caption["Scene Captioning"]
  node_grounding["Text Grounding<br/>[grounding_model.py]"]
  node_change["Change Detection"]
  node_change_vqa["Change VQA"]
  node_fusion_model["Optical-SAR Fusion"]
  node_model_server["VLM Inference<br/>[model_server.py]"]
end

subgraph group_audit["Evidence and Reporting"]
  node_fusion["Evidence Fusion<br/>[evidence_fusion.py]"]
  node_confidence["Confidence and Conflicts<br/>[confidence.py]"]
  node_trace["Execution Trace<br/>[execution_trace.py]"]
  node_report["Mission PDF Report"]
end

subgraph group_adaptation["Model Adaptation"]
  node_lora["LoRA Fine-Tuning"]
end

node_user(("Analyst"))
node_training_data[("BigEarthNet and VRSBench")]

node_user -->|"uses"| node_workspace
node_workspace -->|"presents"| node_upload_ui
node_workspace -->|"presents"| node_query_ui
node_workspace -->|"submits analysis"| node_api_client
node_api_client -->|"requests analysis"| node_backend
node_backend -->|"registers routes"| node_routes
node_routes -->|"validates uploads"| node_validation
node_routes -->|"detects modality"| node_modality
node_routes -->|"interprets query"| node_interpreter
node_interpreter -->|"provides intent"| node_classifier
node_classifier -->|"checks compatibility"| node_planner
node_planner -->|"dispatches plan"| node_executor
node_executor -->|"runs specialist"| node_vqa
node_executor -->|"runs specialist"| node_caption
node_executor -->|"runs specialist"| node_grounding
node_executor -->|"runs specialist"| node_change
node_executor -->|"runs specialist"| node_change_vqa
node_executor -->|"runs specialist"| node_fusion_model
node_vqa -->|"uses inference"| node_model_server
node_grounding -->|"uses inference"| node_model_server
node_executor -->|"submits evidence"| node_fusion
node_fusion -->|"scores disagreement"| node_confidence
node_routes -->|"records execution"| node_trace
node_routes -->|"generates report"| node_report
node_routes -->|"returns analysis"| node_results_ui
node_routes -->|"returns trace"| node_trace_ui
node_lora -.->|"adapts on"| node_training_data

click node_workspace "https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/routes/index.tsx"
click node_upload_ui "https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/components/UploadPanel.tsx"
click node_query_ui "https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/components/QueryBox.tsx"
click node_api_client "https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/lib/satquery.ts"
click node_results_ui "https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/components/ResultsDashboard.tsx"
click node_trace_ui "https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/components/ExecutionTracePanel.tsx"
click node_backend "https://github.com/vinayaka-29/vyomix/blob/main/backend/main.py"
click node_routes "https://github.com/vinayaka-29/vyomix/blob/main/backend/api/routes.py"
click node_validation "https://github.com/vinayaka-29/vyomix/blob/main/backend/validation/file_validator.py"
click node_modality "https://github.com/vinayaka-29/vyomix/blob/main/backend/validation/modality_detector.py"
click node_interpreter "https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/query_interpreter.py"
click node_classifier "https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/task_classifier.py"
click node_planner "https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/planner.py"
click node_executor "https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/executor.py"
click node_vqa "https://github.com/vinayaka-29/vyomix/blob/main/backend/models/vqa_model.py"
click node_caption "https://github.com/vinayaka-29/vyomix/blob/main/backend/models/captioning_model.py"
click node_grounding "https://github.com/vinayaka-29/vyomix/blob/main/backend/models/grounding_model.py"
click node_change "https://github.com/vinayaka-29/vyomix/blob/main/backend/models/change_detection.py"
click node_change_vqa "https://github.com/vinayaka-29/vyomix/blob/main/backend/models/change_vqa_model.py"
click node_fusion_model "https://github.com/vinayaka-29/vyomix/blob/main/backend/models/optical_sar_fusion.py"
click node_model_server "https://github.com/vinayaka-29/vyomix/blob/main/backend/models/model_server.py"
click node_fusion "https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/evidence_fusion.py"
click node_confidence "https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/confidence.py"
click node_trace "https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/execution_trace.py"
click node_report "https://github.com/vinayaka-29/vyomix/blob/main/backend/reporting/report_generator.py"
click node_lora "https://github.com/vinayaka-29/vyomix/blob/main/backend/training/lora_finetune_vlm.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_workspace,node_upload_ui,node_query_ui,node_api_client,node_results_ui,node_trace_ui toneBlue
class node_backend,node_routes,node_validation,node_modality,node_interpreter,node_classifier,node_planner,node_executor,node_training_data toneAmber
class node_vqa,node_caption,node_grounding,node_change,node_change_vqa,node_fusion_model,node_model_server toneMint
class node_fusion,node_confidence,node_trace,node_report toneRose
class node_lora,node_user toneIndigo
```

## Components

### User Interface

- [Analysis Workspace](https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/routes/index.tsx): `frontend/src/routes/index.tsx`
- [Image Upload](https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/components/UploadPanel.tsx): `frontend/src/components/UploadPanel.tsx`
- [Query Input](https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/components/QueryBox.tsx): `frontend/src/components/QueryBox.tsx`
- [API Client](https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/lib/satquery.ts): `frontend/src/lib/satquery.ts`
- [Results and Overlays](https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/components/ResultsDashboard.tsx): `frontend/src/components/ResultsDashboard.tsx`
- [Trace Viewer](https://github.com/vinayaka-29/vyomix/blob/main/frontend/src/components/ExecutionTracePanel.tsx): `frontend/src/components/ExecutionTracePanel.tsx`

### API and Controller

- [FastAPI Service](https://github.com/vinayaka-29/vyomix/blob/main/backend/main.py): `backend/main.py`
- [Upload and Query API](https://github.com/vinayaka-29/vyomix/blob/main/backend/api/routes.py): `backend/api/routes.py`
- [Raster Validation](https://github.com/vinayaka-29/vyomix/blob/main/backend/validation/file_validator.py): `backend/validation/file_validator.py`
- [Modality Detection](https://github.com/vinayaka-29/vyomix/blob/main/backend/validation/modality_detector.py): `backend/validation/modality_detector.py`
- [Query Interpreter](https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/query_interpreter.py): `backend/agent/query_interpreter.py`
- [Task Compatibility](https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/task_classifier.py): `backend/agent/task_classifier.py`
- [Execution Planner](https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/planner.py): `backend/agent/planner.py`
- [Plan Executor](https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/executor.py): `backend/agent/executor.py`

### Analysis Specialists

- [Image VQA](https://github.com/vinayaka-29/vyomix/blob/main/backend/models/vqa_model.py): `backend/models/vqa_model.py`
- [Scene Captioning](https://github.com/vinayaka-29/vyomix/blob/main/backend/models/captioning_model.py): `backend/models/captioning_model.py`
- [Text Grounding](https://github.com/vinayaka-29/vyomix/blob/main/backend/models/grounding_model.py): `backend/models/grounding_model.py`
- [Change Detection](https://github.com/vinayaka-29/vyomix/blob/main/backend/models/change_detection.py): `backend/models/change_detection.py`
- [Change VQA](https://github.com/vinayaka-29/vyomix/blob/main/backend/models/change_vqa_model.py): `backend/models/change_vqa_model.py`
- [Optical-SAR Fusion](https://github.com/vinayaka-29/vyomix/blob/main/backend/models/optical_sar_fusion.py): `backend/models/optical_sar_fusion.py`
- [VLM Inference](https://github.com/vinayaka-29/vyomix/blob/main/backend/models/model_server.py): `backend/models/model_server.py`

### Evidence and Reporting

- [Evidence Fusion](https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/evidence_fusion.py): `backend/agent/evidence_fusion.py`
- [Confidence and Conflicts](https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/confidence.py): `backend/agent/confidence.py`
- [Execution Trace](https://github.com/vinayaka-29/vyomix/blob/main/backend/agent/execution_trace.py): `backend/agent/execution_trace.py`
- [Mission PDF Report](https://github.com/vinayaka-29/vyomix/blob/main/backend/reporting/report_generator.py): `backend/reporting/report_generator.py`

### Model Adaptation

- [LoRA Fine-Tuning](https://github.com/vinayaka-29/vyomix/blob/main/backend/training/lora_finetune_vlm.py): `backend/training/lora_finetune_vlm.py`

### Other components

- **Analyst**
- **BigEarthNet and VRSBench**

## Connections

- Analyst → Analysis Workspace: uses
- Analysis Workspace → Image Upload: presents
- Analysis Workspace → Query Input: presents
- Analysis Workspace → API Client: submits analysis
- API Client → FastAPI Service: requests analysis
- FastAPI Service → Upload and Query API: registers routes
- Upload and Query API → Raster Validation: validates uploads
- Upload and Query API → Modality Detection: detects modality
- Upload and Query API → Query Interpreter: interprets query
- Query Interpreter → Task Compatibility: provides intent
- Task Compatibility → Execution Planner: checks compatibility
- Execution Planner → Plan Executor: dispatches plan
- Plan Executor → Image VQA: runs specialist
- Plan Executor → Scene Captioning: runs specialist
- Plan Executor → Text Grounding: runs specialist
- Plan Executor → Change Detection: runs specialist
- Plan Executor → Change VQA: runs specialist
- Plan Executor → Optical-SAR Fusion: runs specialist
- Image VQA → VLM Inference: uses inference
- Text Grounding → VLM Inference: uses inference
- Plan Executor → Evidence Fusion: submits evidence
- Evidence Fusion → Confidence and Conflicts: scores disagreement
- Upload and Query API → Execution Trace: records execution
- Upload and Query API → Mission PDF Report: generates report
- Upload and Query API → Results and Overlays: returns analysis
- Upload and Query API → Trace Viewer: returns trace
- LoRA Fine-Tuning → BigEarthNet and VRSBench: adapts on
