# rohan003pro-netizen/neurostream architecture

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

- Interactive diagram: https://gitdiagram.com/rohan003pro-netizen/neurostream
- Repository: https://github.com/rohan003pro-netizen/neurostream

## Overview

NeuroStream is an adaptive video-streaming demo: a client reports network telemetry, the backend can use a five-sample LSTM prediction or measured bandwidth to select a rendition, then pushes initialization data and video chunks. Video processing creates the multi-resolution assets, while the separate training script produces the model and scaler loaded by the server. The README is empty and the frontend HTML was not sampled, so its wiring to the backend is not shown; the client connections below reflect the backend’s WebSocket contract.

Main entry points: [`NeuroStream/backend/server.py`](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py) (WebSocket server), [`NeuroStream/backend/models/neurostream_lstm.keras`](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/models/neurostream_lstm.keras) (LSTM model), [`NeuroStream/backend/models/scaler.pkl`](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/models/scaler.pkl) (Feature scaler), [`NeuroStream/ml/train.py`](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/ml/train.py) (Model training)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client interface"]
  node_frontend["Frontend<br/>[index.html]"]
end

subgraph group_stream["Streaming backend"]
  node_backend["WebSocket server<br/>[server.py]"]
  node_telemetry["Telemetry window<br/>[server.py]"]
  node_abr["Resolution selection<br/>[server.py]"]
  node_transport["Chunk transport<br/>[server.py]"]
end

subgraph group_ml["Prediction model"]
  node_trainer["Model training<br/>[train.py]"]
  node_model["LSTM model"]
  node_scaler["Feature scaler<br/>[scaler.pkl]"]
end

subgraph group_media["Video assets"]
  node_processor["Video processing<br/>[process_video.py]"]
  node_renditions["Rendition segments"]
end

node_viewer(("Viewer"))

node_viewer -->|"sends telemetry"| node_backend
node_backend -->|"buffers samples"| node_telemetry
node_backend -->|"loads scaler"| node_scaler
node_backend -->|"loads model"| node_model
node_telemetry -->|"scales window"| node_scaler
node_telemetry -->|"predicts bandwidth"| node_model
node_backend -->|"passes mode and state"| node_abr
node_abr -->|"selects rendition"| node_transport
node_transport -->|"reads segments"| node_renditions
node_backend -->|"streams chunks"| node_viewer
node_trainer -->|"saves trained model"| node_model
node_trainer -->|"saves scaler"| node_scaler
node_processor -->|"generates segments"| node_renditions

click node_frontend "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/frontend/index.html"
click node_backend "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py"
click node_telemetry "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py"
click node_abr "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py"
click node_transport "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py"
click node_trainer "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/ml/train.py"
click node_model "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/models/neurostream_lstm.keras"
click node_scaler "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/models/scaler.pkl"
click node_processor "https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/videos/process_video.py"
click node_renditions "https://github.com/rohan003pro-netizen/neurostream/tree/main/NeuroStream/videos/demo"

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_frontend,node_viewer toneBlue
class node_backend,node_telemetry,node_abr,node_transport toneAmber
class node_trainer,node_model,node_scaler toneMint
class node_processor,node_renditions toneRose
```

## Components

### Client interface

- [Frontend](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/frontend/index.html): `NeuroStream/frontend/index.html`

### Streaming backend

- [WebSocket server](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py): `NeuroStream/backend/server.py`
- [Telemetry window](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py): `NeuroStream/backend/server.py`
- [Resolution selection](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py): `NeuroStream/backend/server.py`
- [Chunk transport](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/server.py): `NeuroStream/backend/server.py`

### Prediction model

- [Model training](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/ml/train.py): `NeuroStream/ml/train.py`
- [LSTM model](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/models/neurostream_lstm.keras): `NeuroStream/backend/models/neurostream_lstm.keras`
- [Feature scaler](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/backend/models/scaler.pkl): `NeuroStream/backend/models/scaler.pkl`

### Video assets

- [Video processing](https://github.com/rohan003pro-netizen/neurostream/blob/main/NeuroStream/videos/process_video.py): `NeuroStream/videos/process_video.py`
- [Rendition segments](https://github.com/rohan003pro-netizen/neurostream/tree/main/NeuroStream/videos/demo): `NeuroStream/videos/demo`

### Other components

- **Viewer**

## Connections

- Viewer → WebSocket server: sends telemetry
- WebSocket server → Telemetry window: buffers samples
- WebSocket server → Feature scaler: loads scaler
- WebSocket server → LSTM model: loads model
- Telemetry window → Feature scaler: scales window
- Telemetry window → LSTM model: predicts bandwidth
- WebSocket server → Resolution selection: passes mode and state
- Resolution selection → Chunk transport: selects rendition
- Chunk transport → Rendition segments: reads segments
- WebSocket server → Viewer: streams chunks
- Model training → LSTM model: saves trained model
- Model training → Feature scaler: saves scaler
- Video processing → Rendition segments: generates segments
