# xwtk/hmg_nemesis architecture

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

- Interactive diagram: https://gitdiagram.com/xwtk/hmg_nemesis
- Repository: https://github.com/xwtk/hmg_nemesis

## Overview

NEMESIS is an Android-based Gen5W head-unit package manager and runtime. The user browses installed packages or the USB/online store, resolves compatibility and dependencies, then installs or updates packages; Manager also exposes settings, apps, services, logs, and system-update checks. Its Android UI invokes a native command-line runtime, whose indexed modules cover package operations, USB handling, updates, services, and root access. The README documents USB-based initial installation and major capabilities, but most native command dispatch and several UI flows were not excerpted, so those links are omitted or marked unverified.

Main entry points: [`Sources/manager/src/com/nemesis/manager/Cli.java`](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/Cli.java) (Native CLI bridge), [`Sources/native/nemesis.h`](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/nemesis.h) (Runtime interfaces), [`Sources/manager/src/com/nemesis/manager/StoreActivity.java`](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/StoreActivity.java) (Package Store), [`Sources/native/main.c`](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/main.c) (Native command runtime)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_manager["Manager app"]
  node_home["Manager dashboard<br/>[MainActivity.java]"]
  node_package_views["Installed packages"]
  node_store["Package Store<br/>[StoreActivity.java]"]
  node_update_list["Updates screen"]
  node_dialogs["Install and update flow"]
  node_update_service["Core update service<br/>[UpdateService.java]"]
  node_cli["Native CLI bridge<br/>[Cli.java]"]
  node_apps["Apps and launch<br/>[AppsActivity.java]"]
  node_services_ui["Service controls"]
  node_settings["Settings"]
  node_logs["Log viewer<br/>[LogActivity.java]"]
  node_crashlog[("Manager diagnostics<br/>[CrashLog.java]")]
end

subgraph group_packages["Package management"]
  node_store_data["Catalog parsing<br/>[StoreList.java]"]
  node_portal["Portal client<br/>[Portal.java]"]
  node_dependencies["Dependency planning<br/>[DepPlan.java]"]
  node_pkg_updates["Package updates<br/>[PkgUpdates.java]"]
  node_rule["Version and network rules<br/>[UpdateRule.java]"]
end

subgraph group_runtime["Native runtime"]
  node_native_entry["Native command runtime<br/>[main.c]"]
  node_native_package["Package engine<br/>[pkg.c]"]
  node_native_usb["USB handler<br/>[usb.c]"]
  node_native_update["Update engine<br/>[update.c]"]
  node_native_services["Service manager<br/>[svc.c]"]
  node_native_root["Root access<br/>[su.c]"]
  node_native_meta["Compatibility metadata<br/>[meta.c]"]
  node_native_util["Runtime utilities<br/>[util.c]"]
  node_native_ini["INI parsing<br/>[ini.c]"]
  node_native_api["Runtime interfaces<br/>[nemesis.h]"]
end

subgraph group_platform["Head-unit platform"]
  node_car["Gen5W head unit"]
  node_usb_drive[("USB drive")]
  node_service_portal["NEMESIS portal"]
end

node_driver(("Vehicle user"))

node_driver -->|"opens"| node_home
node_home -->|"opens"| node_package_views
node_home -->|"opens"| node_store
node_home -->|"lists packages"| node_cli
node_package_views -->|"runs commands"| node_cli
node_store -->|"reads USB catalog"| node_cli
node_store -->|"parses catalog"| node_store_data
node_store -->|"opens updates"| node_update_list
node_store -.->|"fetches listings"| node_portal
node_pkg_updates -->|"parses rows"| node_store_data
node_pkg_updates -->|"loads catalog"| node_portal
node_pkg_updates -->|"checks packages"| node_cli
node_update_list -->|"finds updates"| node_pkg_updates
node_dialogs -->|"inspects packages"| node_cli
node_dialogs -->|"plans dependencies"| node_dependencies
node_dialogs -->|"finds dependencies"| node_pkg_updates
node_update_service -->|"checks core update"| node_portal
node_update_service -->|"checks compatibility"| node_cli
node_update_service -->|"compares versions"| node_rule
node_apps -.->|"shares launch state"| node_home
node_services_ui -.->|"runs commands"| node_cli
node_settings -.->|"configures access"| node_portal
node_logs -->|"collects logs"| node_cli
node_cli -->|"executes binary"| node_native_entry
node_native_package -->|"uses interfaces"| node_native_api
node_native_usb -->|"uses interfaces"| node_native_api
node_native_update -->|"uses interfaces"| node_native_api
node_native_services -->|"uses interfaces"| node_native_api
node_native_root -->|"uses interfaces"| node_native_api
node_native_meta -->|"uses interfaces"| node_native_api
node_native_util -->|"uses interfaces"| node_native_api
node_native_ini -.->|"uses interfaces"| node_native_api
node_car -.->|"provides installation media"| node_usb_drive
node_usb_drive -.->|"supplies packages"| node_native_usb
node_service_portal -.->|"serves package data"| node_portal
node_native_entry -.->|"dispatches commands"| node_native_package
node_native_entry -.->|"dispatches commands"| node_native_usb
node_native_entry -.->|"dispatches commands"| node_native_update
node_native_entry -.->|"dispatches commands"| node_native_services

click node_home "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/MainActivity.java"
click node_package_views "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/PackageActivity.java"
click node_store "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/StoreActivity.java"
click node_store_data "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/StoreList.java"
click node_portal "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/Portal.java"
click node_dependencies "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/DepPlan.java"
click node_pkg_updates "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/PkgUpdates.java"
click node_update_list "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/UpdatesActivity.java"
click node_dialogs "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/DialogActivity.java"
click node_rule "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/UpdateRule.java"
click node_update_service "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/UpdateService.java"
click node_cli "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/Cli.java"
click node_apps "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/AppsActivity.java"
click node_services_ui "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/ServiceActivity.java"
click node_settings "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/SettingsActivity.java"
click node_logs "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/LogActivity.java"
click node_crashlog "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/CrashLog.java"
click node_native_entry "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/main.c"
click node_native_package "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/pkg.c"
click node_native_usb "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/usb.c"
click node_native_update "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/update.c"
click node_native_services "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/svc.c"
click node_native_root "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/su.c"
click node_native_meta "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/meta.c"
click node_native_util "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/util.c"
click node_native_ini "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/ini.c"
click node_native_api "https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/nemesis.h"

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_package_views,node_store,node_update_list,node_dialogs,node_update_service,node_cli,node_apps,node_services_ui,node_settings,node_logs,node_crashlog,node_driver toneBlue
class node_store_data,node_portal,node_dependencies,node_pkg_updates,node_rule toneAmber
class node_native_entry,node_native_package,node_native_usb,node_native_update,node_native_services,node_native_root,node_native_meta,node_native_util,node_native_ini,node_native_api toneMint
class node_car,node_usb_drive,node_service_portal toneRose
```

## Components

### Manager app

- [Manager dashboard](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/MainActivity.java): `Sources/manager/src/com/nemesis/manager/MainActivity.java`
- [Installed packages](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/PackageActivity.java): `Sources/manager/src/com/nemesis/manager/PackageActivity.java`
- [Package Store](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/StoreActivity.java): `Sources/manager/src/com/nemesis/manager/StoreActivity.java`
- [Updates screen](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/UpdatesActivity.java): `Sources/manager/src/com/nemesis/manager/UpdatesActivity.java`
- [Install and update flow](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/DialogActivity.java): `Sources/manager/src/com/nemesis/manager/DialogActivity.java`
- [Core update service](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/UpdateService.java): `Sources/manager/src/com/nemesis/manager/UpdateService.java`
- [Native CLI bridge](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/Cli.java): `Sources/manager/src/com/nemesis/manager/Cli.java`
- [Apps and launch](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/AppsActivity.java): `Sources/manager/src/com/nemesis/manager/AppsActivity.java`
- [Service controls](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/ServiceActivity.java): `Sources/manager/src/com/nemesis/manager/ServiceActivity.java`
- [Settings](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/SettingsActivity.java): `Sources/manager/src/com/nemesis/manager/SettingsActivity.java`
- [Log viewer](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/LogActivity.java): `Sources/manager/src/com/nemesis/manager/LogActivity.java`
- [Manager diagnostics](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/CrashLog.java): `Sources/manager/src/com/nemesis/manager/CrashLog.java`

### Package management

- [Catalog parsing](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/StoreList.java): `Sources/manager/src/com/nemesis/manager/StoreList.java`
- [Portal client](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/Portal.java): `Sources/manager/src/com/nemesis/manager/Portal.java`
- [Dependency planning](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/DepPlan.java): `Sources/manager/src/com/nemesis/manager/DepPlan.java`
- [Package updates](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/PkgUpdates.java): `Sources/manager/src/com/nemesis/manager/PkgUpdates.java`
- [Version and network rules](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/manager/src/com/nemesis/manager/UpdateRule.java): `Sources/manager/src/com/nemesis/manager/UpdateRule.java`

### Native runtime

- [Native command runtime](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/main.c): `Sources/native/main.c`
- [Package engine](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/pkg.c): `Sources/native/pkg.c`
- [USB handler](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/usb.c): `Sources/native/usb.c`
- [Update engine](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/update.c): `Sources/native/update.c`
- [Service manager](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/svc.c): `Sources/native/svc.c`
- [Root access](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/su.c): `Sources/native/su.c`
- [Compatibility metadata](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/meta.c): `Sources/native/meta.c`
- [Runtime utilities](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/util.c): `Sources/native/util.c`
- [INI parsing](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/ini.c): `Sources/native/ini.c`
- [Runtime interfaces](https://github.com/xwtk/hmg_nemesis/blob/main/Sources/native/nemesis.h): `Sources/native/nemesis.h`

### Head-unit platform

- **Gen5W head unit**
- **USB drive**
- **NEMESIS portal**

### Other components

- **Vehicle user**

## Connections

- Vehicle user → Manager dashboard: opens (evidence: `Sources/manager/src/com/nemesis/manager/MainActivity.java`)
- Manager dashboard → Installed packages: opens (evidence: `Sources/manager/src/com/nemesis/manager/MainActivity.java`)
- Manager dashboard → Package Store: opens (evidence: `Sources/manager/src/com/nemesis/manager/MainActivity.java`)
- Manager dashboard → Native CLI bridge: lists packages (evidence: `Sources/manager/src/com/nemesis/manager/MainActivity.java`)
- Installed packages → Native CLI bridge: runs commands (evidence: `Sources/manager/src/com/nemesis/manager/PackageActivity.java`)
- Package Store → Native CLI bridge: reads USB catalog (evidence: `Sources/manager/src/com/nemesis/manager/StoreActivity.java`)
- Package Store → Catalog parsing: parses catalog (evidence: `Sources/manager/src/com/nemesis/manager/StoreActivity.java`)
- Package Store → Updates screen: opens updates (evidence: `Sources/manager/src/com/nemesis/manager/StoreActivity.java`)
- Package Store → Portal client: fetches listings (evidence: `Sources/manager/src/com/nemesis/manager/StoreActivity.java`)
- Package updates → Catalog parsing: parses rows (evidence: `Sources/manager/src/com/nemesis/manager/PkgUpdates.java`)
- Package updates → Portal client: loads catalog (evidence: `Sources/manager/src/com/nemesis/manager/PkgUpdates.java`)
- Package updates → Native CLI bridge: checks packages (evidence: `Sources/manager/src/com/nemesis/manager/PkgUpdates.java`)
- Updates screen → Package updates: finds updates (evidence: `Sources/manager/src/com/nemesis/manager/UpdatesActivity.java`)
- Install and update flow → Native CLI bridge: inspects packages (evidence: `Sources/manager/src/com/nemesis/manager/DialogActivity.java`)
- Install and update flow → Dependency planning: plans dependencies (evidence: `Sources/manager/src/com/nemesis/manager/DialogActivity.java`)
- Install and update flow → Package updates: finds dependencies (evidence: `Sources/manager/src/com/nemesis/manager/DialogActivity.java`)
- Core update service → Portal client: checks core update (evidence: `Sources/manager/src/com/nemesis/manager/UpdateService.java`)
- Core update service → Native CLI bridge: checks compatibility (evidence: `Sources/manager/src/com/nemesis/manager/UpdateService.java`)
- Core update service → Version and network rules: compares versions (evidence: `Sources/manager/src/com/nemesis/manager/UpdateService.java`)
- Apps and launch → Manager dashboard: shares launch state (evidence: `Sources/manager/src/com/nemesis/manager/AppsActivity.java`)
- Service controls → Native CLI bridge: runs commands (evidence: `Sources/manager/src/com/nemesis/manager/ServiceActivity.java`)
- Settings → Portal client: configures access (evidence: `Sources/manager/src/com/nemesis/manager/SettingsActivity.java`)
- Log viewer → Native CLI bridge: collects logs (evidence: `Sources/manager/src/com/nemesis/manager/LogActivity.java`)
- Native CLI bridge → Native command runtime: executes binary (evidence: `Sources/manager/src/com/nemesis/manager/Cli.java`)
- Package engine → Runtime interfaces: uses interfaces (evidence: `Sources/native/pkg.c`)
- USB handler → Runtime interfaces: uses interfaces (evidence: `Sources/native/usb.c`)
- Update engine → Runtime interfaces: uses interfaces (evidence: `Sources/native/update.c`)
- Service manager → Runtime interfaces: uses interfaces (evidence: `Sources/native/svc.c`)
- Root access → Runtime interfaces: uses interfaces (evidence: `Sources/native/su.c`)
- Compatibility metadata → Runtime interfaces: uses interfaces (evidence: `Sources/native/meta.c`)
- Runtime utilities → Runtime interfaces: uses interfaces (evidence: `Sources/native/util.c`)
- INI parsing → Runtime interfaces: uses interfaces
- Gen5W head unit → USB drive: provides installation media (evidence: `README.md`)
- USB drive → USB handler: supplies packages (evidence: `README.md`)
- NEMESIS portal → Portal client: serves package data (evidence: `README.md`)
- Native command runtime → Package engine: dispatches commands
- Native command runtime → USB handler: dispatches commands
- Native command runtime → Update engine: dispatches commands
- Native command runtime → Service manager: dispatches commands
