# teio980/umamusumeass architecture

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

## Overview

UmamusumeAss is a Windows desktop assistant that connects to an Android emulator and automates configurable Umamusume workflows. The main path runs from user-configured tasks through connection setup and visual automation to game actions and execution logs. The README documents task-queue management, Career and independent training, races, reward collection, shop workflows, and developer editing tools. Sampled source supports the Hachimi runner’s visual-runtime calls and Career engine structure; other task-family links reflect documented capabilities and tree paths, not inspected implementations.

Main entry points: [`src/UmamusumeWpfGui/Services/Tasks/AdbVisualPipelineRuntime.cs`](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/AdbVisualPipelineRuntime.cs) (Visual runtime), [`src/UmamusumeWpfGui/Services/Tasks`](https://github.com/teio980/umamusumeass/tree/main/src/UmamusumeWpfGui/Services/Tasks) (Task modules), [`src/UmamusumeWpfGui/ViewModels/SettingsViewModel.cs`](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/SettingsViewModel.cs) (Connection settings), [`src/UmamusumeWpfGui/App.xaml.cs`](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/App.xaml.cs) (WPF application)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_gui["WPF application<br/>[App.xaml.cs]"]
  node_workspace["Task workspace<br/>[GrassViewModel.cs]"]
  node_tasksettings["Task settings"]
  node_devtools["Workflow editor"]
  node_logs["Execution logs"]
end

subgraph group_connection["Emulator connection"]
  node_connectionui["Connection settings"]
  node_discovery["Device discovery"]
  node_session["ADB session"]
  node_health["Connection health"]
end

subgraph group_automation["Workflow execution"]
  node_taskmodules["Task modules"]
  node_career["Career engine"]
  node_independent["Independent training"]
  node_hachimi["JSON workflow runner"]
  node_definitions["Workflow definitions"]
end

subgraph group_vision["Visual interaction"]
  node_visual["Visual runtime"]
  node_ocr["Offline OCR"]
  node_templates["Template matching<br/>[TemplateMatcher.cs]"]
end

subgraph group_support["Settings and data"]
  node_settings[("Local settings")]
  node_database[("Uma database")]
  node_localization["Localization"]
end

node_trainer(("Trainer"))
node_adb["ADB"]
node_emulator(("Android emulator"))

node_trainer -->|"uses"| node_gui
node_gui -->|"presents"| node_workspace
node_workspace -->|"configures"| node_tasksettings
node_workspace -->|"starts tasks"| node_taskmodules
node_trainer -->|"configures"| node_connectionui
node_connectionui -->|"persists"| node_settings
node_connectionui -->|"requests discovery"| node_discovery
node_discovery -->|"queries devices"| node_adb
node_connectionui -->|"opens session"| node_session
node_session -->|"runs commands"| node_adb
node_adb -->|"controls"| node_emulator
node_session -->|"monitors"| node_health
node_taskmodules -->|"runs Career"| node_career
node_taskmodules -->|"runs training"| node_independent
node_taskmodules -->|"runs workflows"| node_hachimi
node_devtools -->|"edits"| node_definitions
node_hachimi -->|"loads"| node_definitions
node_career -->|"observes and acts"| node_visual
node_independent -->|"captures and acts"| node_visual
node_hachimi -->|"requests interactions"| node_visual
node_visual -->|"captures and inputs"| node_adb
node_visual -->|"recognizes text"| node_ocr
node_visual -->|"matches images"| node_templates
node_taskmodules -->|"reports results"| node_logs
node_gui -->|"displays language"| node_localization
node_career -->|"reads game data"| node_database

click node_gui "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/App.xaml.cs"
click node_workspace "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/GrassViewModel.cs"
click node_tasksettings "https://github.com/teio980/umamusumeass/tree/main/src/UmamusumeWpfGui/ViewModels/Tasks"
click node_devtools "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/DeveloperToolsViewModel.cs"
click node_logs "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/HachimiTaskLogViewModel.cs"
click node_connectionui "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/SettingsViewModel.cs"
click node_discovery "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Helper/EmulatorProfileCatalog.cs"
click node_session "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/AdbConnectionSessionFactory.cs"
click node_health "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/ConnectionHealthMonitor.cs"
click node_taskmodules "https://github.com/teio980/umamusumeass/tree/main/src/UmamusumeWpfGui/Services/Tasks"
click node_career "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Training/Runtime/CareerTrainingEngine.cs"
click node_independent "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Training/AdbIndependentTrainingPipeline.cs"
click node_hachimi "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/HachimiJsonPipelineRunner.cs"
click node_definitions "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Models/HachimiPipelineModels.cs"
click node_visual "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/AdbVisualPipelineRuntime.cs"
click node_ocr "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/WindowsOcrTextRecognizer.cs"
click node_templates "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/TemplateMatcher.cs"
click node_settings "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/JsonSettingsService.cs"
click node_database "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/UmaDatabaseService.cs"
click node_localization "https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/LocalizationService.cs"

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_gui,node_workspace,node_tasksettings,node_devtools,node_logs toneBlue
class node_connectionui,node_discovery,node_session,node_health toneAmber
class node_taskmodules,node_career,node_independent,node_hachimi,node_definitions toneMint
class node_visual,node_ocr,node_templates toneRose
class node_settings,node_database,node_localization,node_trainer,node_adb,node_emulator toneIndigo
```

## Components

### Desktop interface

- [WPF application](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/App.xaml.cs): `src/UmamusumeWpfGui/App.xaml.cs`
- [Task workspace](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/GrassViewModel.cs): `src/UmamusumeWpfGui/ViewModels/GrassViewModel.cs`
- [Task settings](https://github.com/teio980/umamusumeass/tree/main/src/UmamusumeWpfGui/ViewModels/Tasks): `src/UmamusumeWpfGui/ViewModels/Tasks`
- [Workflow editor](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/DeveloperToolsViewModel.cs): `src/UmamusumeWpfGui/ViewModels/DeveloperToolsViewModel.cs`
- [Execution logs](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/HachimiTaskLogViewModel.cs): `src/UmamusumeWpfGui/ViewModels/HachimiTaskLogViewModel.cs`

### Emulator connection

- [Connection settings](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/ViewModels/SettingsViewModel.cs): `src/UmamusumeWpfGui/ViewModels/SettingsViewModel.cs`
- [Device discovery](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Helper/EmulatorProfileCatalog.cs): `src/UmamusumeWpfGui/Helper/EmulatorProfileCatalog.cs`
- [ADB session](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/AdbConnectionSessionFactory.cs): `src/UmamusumeWpfGui/Services/AdbConnectionSessionFactory.cs`
- [Connection health](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/ConnectionHealthMonitor.cs): `src/UmamusumeWpfGui/Services/ConnectionHealthMonitor.cs`

### Workflow execution

- [Task modules](https://github.com/teio980/umamusumeass/tree/main/src/UmamusumeWpfGui/Services/Tasks): `src/UmamusumeWpfGui/Services/Tasks`
- [Career engine](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Training/Runtime/CareerTrainingEngine.cs): `src/UmamusumeWpfGui/Services/Training/Runtime/CareerTrainingEngine.cs`
- [Independent training](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Training/AdbIndependentTrainingPipeline.cs): `src/UmamusumeWpfGui/Services/Training/AdbIndependentTrainingPipeline.cs`
- [JSON workflow runner](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/HachimiJsonPipelineRunner.cs): `src/UmamusumeWpfGui/Services/Tasks/HachimiJsonPipelineRunner.cs`
- [Workflow definitions](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Models/HachimiPipelineModels.cs): `src/UmamusumeWpfGui/Models/HachimiPipelineModels.cs`

### Visual interaction

- [Visual runtime](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/AdbVisualPipelineRuntime.cs): `src/UmamusumeWpfGui/Services/Tasks/AdbVisualPipelineRuntime.cs`
- [Offline OCR](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/WindowsOcrTextRecognizer.cs): `src/UmamusumeWpfGui/Services/Tasks/WindowsOcrTextRecognizer.cs`
- [Template matching](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/Tasks/TemplateMatcher.cs): `src/UmamusumeWpfGui/Services/Tasks/TemplateMatcher.cs`

### Settings and data

- [Local settings](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/JsonSettingsService.cs): `src/UmamusumeWpfGui/Services/JsonSettingsService.cs`
- [Uma database](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/UmaDatabaseService.cs): `src/UmamusumeWpfGui/Services/UmaDatabaseService.cs`
- [Localization](https://github.com/teio980/umamusumeass/blob/main/src/UmamusumeWpfGui/Services/LocalizationService.cs): `src/UmamusumeWpfGui/Services/LocalizationService.cs`

### Other components

- **Trainer**
- **ADB**
- **Android emulator**

## Connections

- Trainer → WPF application: uses
- WPF application → Task workspace: presents
- Task workspace → Task settings: configures
- Task workspace → Task modules: starts tasks
- Trainer → Connection settings: configures
- Connection settings → Local settings: persists
- Connection settings → Device discovery: requests discovery
- Device discovery → ADB: queries devices
- Connection settings → ADB session: opens session
- ADB session → ADB: runs commands
- ADB → Android emulator: controls
- ADB session → Connection health: monitors
- Task modules → Career engine: runs Career
- Task modules → Independent training: runs training
- Task modules → JSON workflow runner: runs workflows
- Workflow editor → Workflow definitions: edits
- JSON workflow runner → Workflow definitions: loads
- Career engine → Visual runtime: observes and acts
- Independent training → Visual runtime: captures and acts
- JSON workflow runner → Visual runtime: requests interactions
- Visual runtime → ADB: captures and inputs
- Visual runtime → Offline OCR: recognizes text
- Visual runtime → Template matching: matches images
- Task modules → Execution logs: reports results
- WPF application → Localization: displays language
- Career engine → Uma database: reads game data
