# bin220797/dsha architecture

> Architecture diagram of the GitHub repository bin220797/dsha, 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/bin220797/dsha
- Repository: https://github.com/bin220797/dsha

## Overview

DSHA is an Android launcher that packages and manages a Linux/DSH environment, then exposes it through a mobile web UI, terminal, and optional LAN access. The primary workflow is configure, install or verify the environment, start DSH, and use its web interface. Separate branches cover device-control bridges, plugins and updates, backup/restore, and emergency recovery. The README documents these capabilities; sampled source confirms the install pipeline, storage maintenance, update state handling, LAN proxy, and recovery service, but not every connection between them.

Main entry points: [`app/src/main/java/com/deepseekharness/app/ui/MainActivity.java`](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/MainActivity.java) (Launcher UI), [`app/src/main/java/com/deepseekharness/app/core/HarnessController.java`](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/HarnessController.java) (Harness controller), [`app/src/main/java/com/deepseekharness/app/ui/InstallFragment.java`](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/InstallFragment.java) (Install screen), [`app/src/main/java/com/deepseekharness/app/runtime/InstallPipeline.java`](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/runtime/InstallPipeline.java) (Install pipeline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_user_flow["User workflow"]
  node_main_ui["Launcher UI<br/>[MainActivity.java]"]
  node_config_ui["Configuration"]
  node_install_ui["Install screen"]
end

subgraph group_environment["Environment runtime"]
  node_install_pipeline["Install pipeline"]
  node_harness["Harness controller"]
  node_container["Container runtime"]
  node_runtime_tasks["Runtime tasks<br/>[RuntimeTasks.java]"]
  node_terminal["Terminal session"]
  node_plugin_repo["Plugin repository"]
  node_update_engine["Update engine<br/>[UpdateEngine.java]"]
end

subgraph group_web_device["Web and device access"]
  node_web_manager["Web process manager"]
  node_web_ui["Web preview"]
  node_lan_proxy["LAN proxy"]
  node_device_bridge["Device bridge"]
  node_adb_bridge["ADB bridge<br/>[AdbBridge.java]"]
end

subgraph group_data_recovery["Data and recovery"]
  node_backup_manager["Backup manager<br/>[BackupManager.java]"]
  node_backup_jobs["Backup jobs"]
  node_data_store["User data"]
  node_storage_ui["Storage maintenance"]
  node_storage_maintenance["Storage service"]
  node_recovery_ui["Recovery screen"]
  node_recovery_controller["Recovery controller"]
  node_recovery_service["Recovery service"]
end

node_user(("User"))
node_internet(("Release services"))
node_browser_client(("LAN browser"))

node_user -->|"opens"| node_main_ui
node_main_ui -->|"configures"| node_config_ui
node_main_ui -->|"starts install"| node_install_ui
node_install_ui -->|"runs checks"| node_install_pipeline
node_install_pipeline -->|"probes runtime"| node_container
node_main_ui -->|"starts DSH"| node_harness
node_harness -->|"dispatches tasks"| node_runtime_tasks
node_runtime_tasks -->|"runs commands"| node_container
node_user -->|"opens terminal"| node_terminal
node_harness -->|"manages web"| node_web_manager
node_user -->|"opens web UI"| node_web_ui
node_browser_client -->|"sends requests"| node_lan_proxy
node_lan_proxy -->|"forwards requests"| node_web_manager
node_harness -->|"enables bridge"| node_device_bridge
node_device_bridge -->|"uses ADB"| node_adb_bridge
node_user -->|"manages plugins"| node_plugin_repo
node_user -->|"checks updates"| node_update_engine
node_update_engine -->|"downloads releases"| node_internet
node_user -->|"requests backup"| node_backup_manager
node_backup_manager -->|"runs jobs"| node_backup_jobs
node_backup_jobs -->|"reads and writes"| node_data_store
node_user -->|"reviews storage"| node_storage_ui
node_storage_ui -->|"inspects or cleans"| node_storage_maintenance
node_user -->|"opens recovery"| node_recovery_ui
node_recovery_ui -->|"controls recovery"| node_recovery_controller
node_recovery_service -->|"checks state"| node_recovery_controller

click node_main_ui "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/MainActivity.java"
click node_config_ui "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/ConfigFragment.java"
click node_install_ui "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/InstallFragment.java"
click node_install_pipeline "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/runtime/InstallPipeline.java"
click node_harness "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/HarnessController.java"
click node_container "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/runtime/ContainerRuntime.java"
click node_runtime_tasks "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/RuntimeTasks.java"
click node_terminal "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/TerminalSessionOwner.java"
click node_web_manager "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/runtime/WebProcessManager.java"
click node_web_ui "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/WebPreviewActivity.java"
click node_lan_proxy "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/LanProxyService.java"
click node_device_bridge "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/DeviceBridgeService.java"
click node_adb_bridge "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/bridge/AdbBridge.java"
click node_plugin_repo "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/PluginRepository.java"
click node_update_engine "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/UpdateEngine.java"
click node_backup_manager "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/BackupManager.java"
click node_backup_jobs "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/backup/NativeBackupJobs.java"
click node_data_store "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/backup/UserDataLayout.java"
click node_storage_ui "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/StorageActivity.java"
click node_storage_maintenance "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/backup/StorageMaintenance.java"
click node_recovery_ui "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/RecoveryActivity.java"
click node_recovery_controller "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/recovery/RecoveryController.java"
click node_recovery_service "https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/recovery/RecoveryService.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_main_ui,node_config_ui,node_install_ui,node_user,node_browser_client toneBlue
class node_install_pipeline,node_harness,node_container,node_runtime_tasks,node_terminal,node_plugin_repo,node_update_engine toneAmber
class node_web_manager,node_web_ui,node_lan_proxy,node_device_bridge,node_adb_bridge toneMint
class node_backup_manager,node_backup_jobs,node_data_store,node_storage_ui,node_storage_maintenance,node_recovery_ui,node_recovery_controller,node_recovery_service toneRose
class node_internet toneIndigo
```

## Components

### User workflow

- [Launcher UI](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/MainActivity.java): `app/src/main/java/com/deepseekharness/app/ui/MainActivity.java`
- [Configuration](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/ConfigFragment.java): `app/src/main/java/com/deepseekharness/app/ui/ConfigFragment.java`
- [Install screen](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/InstallFragment.java): `app/src/main/java/com/deepseekharness/app/ui/InstallFragment.java`

### Environment runtime

- [Install pipeline](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/runtime/InstallPipeline.java): `app/src/main/java/com/deepseekharness/app/runtime/InstallPipeline.java`
- [Harness controller](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/HarnessController.java): `app/src/main/java/com/deepseekharness/app/core/HarnessController.java`
- [Container runtime](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/runtime/ContainerRuntime.java): `app/src/main/java/com/deepseekharness/app/runtime/ContainerRuntime.java`
- [Runtime tasks](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/RuntimeTasks.java): `app/src/main/java/com/deepseekharness/app/core/RuntimeTasks.java`
- [Terminal session](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/TerminalSessionOwner.java): `app/src/main/java/com/deepseekharness/app/core/TerminalSessionOwner.java`
- [Plugin repository](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/PluginRepository.java): `app/src/main/java/com/deepseekharness/app/core/PluginRepository.java`
- [Update engine](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/core/UpdateEngine.java): `app/src/main/java/com/deepseekharness/app/core/UpdateEngine.java`

### Web and device access

- [Web process manager](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/runtime/WebProcessManager.java): `app/src/main/java/com/deepseekharness/app/runtime/WebProcessManager.java`
- [Web preview](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/WebPreviewActivity.java): `app/src/main/java/com/deepseekharness/app/ui/WebPreviewActivity.java`
- [LAN proxy](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/LanProxyService.java): `app/src/main/java/com/deepseekharness/app/LanProxyService.java`
- [Device bridge](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/DeviceBridgeService.java): `app/src/main/java/com/deepseekharness/app/DeviceBridgeService.java`
- [ADB bridge](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/bridge/AdbBridge.java): `app/src/main/java/com/deepseekharness/app/bridge/AdbBridge.java`

### Data and recovery

- [Backup manager](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/BackupManager.java): `app/src/main/java/com/deepseekharness/app/BackupManager.java`
- [Backup jobs](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/backup/NativeBackupJobs.java): `app/src/main/java/com/deepseekharness/app/backup/NativeBackupJobs.java`
- [User data](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/backup/UserDataLayout.java): `app/src/main/java/com/deepseekharness/app/backup/UserDataLayout.java`
- [Storage maintenance](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/StorageActivity.java): `app/src/main/java/com/deepseekharness/app/ui/StorageActivity.java`
- [Storage service](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/backup/StorageMaintenance.java): `app/src/main/java/com/deepseekharness/app/backup/StorageMaintenance.java`
- [Recovery screen](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/ui/RecoveryActivity.java): `app/src/main/java/com/deepseekharness/app/ui/RecoveryActivity.java`
- [Recovery controller](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/recovery/RecoveryController.java): `app/src/main/java/com/deepseekharness/app/recovery/RecoveryController.java`
- [Recovery service](https://github.com/bin220797/dsha/blob/main/app/src/main/java/com/deepseekharness/app/recovery/RecoveryService.java): `app/src/main/java/com/deepseekharness/app/recovery/RecoveryService.java`

### Other components

- **User**
- **Release services**
- **LAN browser**

## Connections

- User → Launcher UI: opens
- Launcher UI → Configuration: configures
- Launcher UI → Install screen: starts install
- Install screen → Install pipeline: runs checks
- Install pipeline → Container runtime: probes runtime
- Launcher UI → Harness controller: starts DSH
- Harness controller → Runtime tasks: dispatches tasks
- Runtime tasks → Container runtime: runs commands
- User → Terminal session: opens terminal
- Harness controller → Web process manager: manages web
- User → Web preview: opens web UI
- LAN browser → LAN proxy: sends requests
- LAN proxy → Web process manager: forwards requests
- Harness controller → Device bridge: enables bridge
- Device bridge → ADB bridge: uses ADB
- User → Plugin repository: manages plugins
- User → Update engine: checks updates
- Update engine → Release services: downloads releases
- User → Backup manager: requests backup
- Backup manager → Backup jobs: runs jobs
- Backup jobs → User data: reads and writes
- User → Storage maintenance: reviews storage
- Storage maintenance → Storage service: inspects or cleans
- User → Recovery screen: opens recovery
- Recovery screen → Recovery controller: controls recovery
- Recovery service → Recovery controller: checks state
