# yash-srivastava/overdrive-release architecture

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

- Interactive diagram: https://gitdiagram.com/yash-srivastava/overdrive-release
- Repository: https://github.com/yash-srivastava/overdrive-release

## Overview

OverDrive is an on-device BYD head-unit app for dashcam recording, sentry/proximity monitoring, vehicle telemetry and control, and remote integrations. The main user workflow is camera and vehicle events entering the app, being monitored or recorded, then surfaced through overlays, a recording library, or notifications; users can also configure automations and remote access. The graph includes documented MQTT/Home Assistant and tunnel capabilities. Sampled excerpts are partial, so uncertain wiring among unsampled subsystems is omitted.

Main entry points: [`app/src/main/java/com/overdrive/app/camera/OemDashcamPipeline.java`](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/camera/OemDashcamPipeline.java) (Dashcam pipeline), [`app/src/main/java/com/overdrive/app/byd/BydDataCollector.java`](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/byd/BydDataCollector.java) (Vehicle telemetry), [`app/src/main/java/com/overdrive/app/services/VehicleActuatorService.java`](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/services/VehicleActuatorService.java) (Vehicle controls), [`app/src/main/java/com/overdrive/app/daemon/SentryDaemon.java`](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/daemon/SentryDaemon.java) (Sentry daemon)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["App runtime"]
  node_app["OverDrive app"]
  node_daemon["Background daemons"]
  node_config[("Configuration")]
  node_overlay["Status overlay"]
end

subgraph group_surveillance["Camera and sentry"]
  node_camera_daemon["Camera daemon<br/>[CameraDaemon.java]"]
  node_camera_pipeline["Dashcam pipeline"]
  node_motion["Motion detection"]
  node_manual_clip["Instant replay"]
  node_sentry["Sentry daemon<br/>[SentryDaemon.java]"]
end

subgraph group_vehicle["Vehicle features"]
  node_vehicle_data["Vehicle telemetry"]
  node_actuator["Vehicle controls"]
  node_automation["Automations<br/>[Automations.java]"]
  node_trip_score["Trip scoring"]
end

subgraph group_integrations["Remote integrations"]
  node_mqtt["MQTT publisher"]
  node_tunnels["Remote access tunnels"]
  node_telegram["Telegram bot"]
end

node_driver(("Driver"))
node_camera_hw["Vehicle cameras"]
node_vehicle["BYD vehicle"]
node_mqtt_broker["MQTT broker"]
node_ha(("Home Assistant"))
node_user(("Remote user"))

node_driver -->|"configures"| node_app
node_app -->|"reads settings"| node_config
node_daemon -->|"runs"| node_camera_daemon
node_camera_daemon -->|"records with"| node_camera_pipeline
node_camera_hw -->|"supplies frames"| node_camera_pipeline
node_sentry -->|"detects motion"| node_motion
node_sentry -->|"triggers recording"| node_camera_pipeline
node_driver -->|"requests replay"| node_manual_clip
node_manual_clip -->|"exports buffered clip"| node_camera_pipeline
node_camera_pipeline -->|"reports state"| node_overlay
node_vehicle -->|"provides telemetry"| node_vehicle_data
node_vehicle_data -->|"publishes data"| node_mqtt
node_mqtt -->|"publishes telemetry"| node_mqtt_broker
node_mqtt_broker -->|"delivers telemetry"| node_ha
node_ha -->|"sends commands"| node_mqtt_broker
node_mqtt_broker -->|"dispatches commands"| node_actuator
node_actuator -->|"controls"| node_vehicle
node_vehicle_data -->|"provides state"| node_automation
node_automation -->|"executes actions"| node_actuator
node_vehicle_data -->|"supplies trip samples"| node_trip_score
node_tunnels -.->|"enables remote access"| node_user
node_telegram -.->|"sends alerts"| node_user

click node_app "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/OverdriveApplication.kt"
click node_daemon "https://github.com/yash-srivastava/overdrive-release/tree/main/app/src/main/java/com/overdrive/app/daemon"
click node_config "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/config/UnifiedConfigManager.kt"
click node_overlay "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/overlay/StatusOverlayService.java"
click node_camera_daemon "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/daemon/CameraDaemon.java"
click node_camera_pipeline "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/camera/OemDashcamPipeline.java"
click node_motion "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/cpp/surveillance/motion_pipeline_v2.cpp"
click node_manual_clip "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/recording/ManualClipService.java"
click node_sentry "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/daemon/SentryDaemon.java"
click node_vehicle_data "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/byd/BydDataCollector.java"
click node_actuator "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/services/VehicleActuatorService.java"
click node_automation "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/automation/Automations.java"
click node_trip_score "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/trips/TripScoreEngine.java"
click node_mqtt "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/mqtt/MqttPublisherService.java"
click node_tunnels "https://github.com/yash-srivastava/overdrive-release/tree/main/app/src/main/java/com/overdrive/app/launcher"
click node_telegram "https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/daemon/telegram/TelegramDaemonLauncher.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_daemon,node_config,node_overlay,node_user toneBlue
class node_camera_daemon,node_camera_pipeline,node_motion,node_manual_clip,node_sentry toneAmber
class node_vehicle_data,node_actuator,node_automation,node_trip_score toneMint
class node_mqtt,node_tunnels,node_telegram toneRose
class node_driver,node_camera_hw,node_vehicle,node_mqtt_broker,node_ha toneIndigo
```

## Components

### App runtime

- [OverDrive app](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/OverdriveApplication.kt): `app/src/main/java/com/overdrive/app/OverdriveApplication.kt`
- [Background daemons](https://github.com/yash-srivastava/overdrive-release/tree/main/app/src/main/java/com/overdrive/app/daemon): `app/src/main/java/com/overdrive/app/daemon`
- [Configuration](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/config/UnifiedConfigManager.kt): `app/src/main/java/com/overdrive/app/config/UnifiedConfigManager.kt`
- [Status overlay](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/overlay/StatusOverlayService.java): `app/src/main/java/com/overdrive/app/overlay/StatusOverlayService.java`

### Camera and sentry

- [Camera daemon](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/daemon/CameraDaemon.java): `app/src/main/java/com/overdrive/app/daemon/CameraDaemon.java`
- [Dashcam pipeline](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/camera/OemDashcamPipeline.java): `app/src/main/java/com/overdrive/app/camera/OemDashcamPipeline.java`
- [Motion detection](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/cpp/surveillance/motion_pipeline_v2.cpp): `app/src/main/cpp/surveillance/motion_pipeline_v2.cpp`
- [Instant replay](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/recording/ManualClipService.java): `app/src/main/java/com/overdrive/app/recording/ManualClipService.java`
- [Sentry daemon](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/daemon/SentryDaemon.java): `app/src/main/java/com/overdrive/app/daemon/SentryDaemon.java`

### Vehicle features

- [Vehicle telemetry](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/byd/BydDataCollector.java): `app/src/main/java/com/overdrive/app/byd/BydDataCollector.java`
- [Vehicle controls](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/services/VehicleActuatorService.java): `app/src/main/java/com/overdrive/app/services/VehicleActuatorService.java`
- [Automations](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/automation/Automations.java): `app/src/main/java/com/overdrive/app/automation/Automations.java`
- [Trip scoring](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/trips/TripScoreEngine.java): `app/src/main/java/com/overdrive/app/trips/TripScoreEngine.java`

### Remote integrations

- [MQTT publisher](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/mqtt/MqttPublisherService.java): `app/src/main/java/com/overdrive/app/mqtt/MqttPublisherService.java`
- [Remote access tunnels](https://github.com/yash-srivastava/overdrive-release/tree/main/app/src/main/java/com/overdrive/app/launcher): `app/src/main/java/com/overdrive/app/launcher`
- [Telegram bot](https://github.com/yash-srivastava/overdrive-release/blob/main/app/src/main/java/com/overdrive/app/daemon/telegram/TelegramDaemonLauncher.java): `app/src/main/java/com/overdrive/app/daemon/telegram/TelegramDaemonLauncher.java`

### Other components

- **Driver**
- **Vehicle cameras**
- **BYD vehicle**
- **MQTT broker**
- **Home Assistant**
- **Remote user**

## Connections

- Driver → OverDrive app: configures
- OverDrive app → Configuration: reads settings
- Background daemons → Camera daemon: runs
- Camera daemon → Dashcam pipeline: records with
- Vehicle cameras → Dashcam pipeline: supplies frames
- Sentry daemon → Motion detection: detects motion
- Sentry daemon → Dashcam pipeline: triggers recording
- Driver → Instant replay: requests replay
- Instant replay → Dashcam pipeline: exports buffered clip
- Dashcam pipeline → Status overlay: reports state
- BYD vehicle → Vehicle telemetry: provides telemetry
- Vehicle telemetry → MQTT publisher: publishes data
- MQTT publisher → MQTT broker: publishes telemetry
- MQTT broker → Home Assistant: delivers telemetry
- Home Assistant → MQTT broker: sends commands
- MQTT broker → Vehicle controls: dispatches commands
- Vehicle controls → BYD vehicle: controls
- Vehicle telemetry → Automations: provides state
- Automations → Vehicle controls: executes actions
- Vehicle telemetry → Trip scoring: supplies trip samples
- Remote access tunnels → Remote user: enables remote access
- Telegram bot → Remote user: sends alerts
