# anomalynte/anomaly architecture

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

## Overview

Anomaly is a Windows game-process plugin platform. The user selects a game directory in the launcher to install the proxy/runtime, starts the game, and manages plugins through an in-game UI; plugins can be installed or updated from configured repositories. Runtime layers provide plugin lifecycle and SDK services, adapt validated UE5/NTE features, and support diagnostics and recovery. README documents these capabilities; sampled source offers only partial implementation evidence, so uncertain internal call wiring is omitted.

Main entry points: [`src/plugin/plugin_manager.cpp`](https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_manager.cpp) (Plugin Manager), [`src/runtime/runtime_session.cpp`](https://github.com/anomalynte/anomaly/blob/main/src/runtime/runtime_session.cpp) (Runtime Session), [`src/plugin/plugin_runtime.cpp`](https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_runtime.cpp) (Plugin Runtime), [`apps/launcher/main.cpp`](https://github.com/anomalynte/anomaly/blob/main/apps/launcher/main.cpp) (Launcher)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Launch and Updates"]
  node_launcher["Launcher<br/>[main.cpp]"]
  node_proxy["Proxy Installation"]
  node_update["Update Transaction"]
  node_repository["Plugin Repository"]
end

subgraph group_runtime["Runtime and UI"]
  node_runtime_entry["Runtime Core<br/>[core_main.cpp]"]
  node_session["Runtime Session"]
  node_ui["In-game UI<br/>[embedded_ui.cpp]"]
  node_host_ui["Host UI Services"]
end

subgraph group_plugins["Plugin Platform"]
  node_plugin_manager["Plugin Manager<br/>[plugin_manager.cpp]"]
  node_plugin_catalog["Plugin Catalog<br/>[plugin_catalog.cpp]"]
  node_plugin_runtime["Plugin Runtime<br/>[plugin_runtime.cpp]"]
  node_plugin_sdk["C ABI SDK<br/>[anomaly_sdk.h]"]
  node_watchers["Plugin Watchers"]
end

subgraph group_game["Game Integration"]
  node_hook_manager["Hook Manager<br/>[hook_manager.cpp]"]
  node_ue5_adapter["UE5 Adapter"]
  node_profile["Build Profile<br/>[build_profile.cpp]"]
  node_nte_services["NTE Services"]
end

subgraph group_ops["Diagnostics"]
  node_diagnostics["Diagnostics<br/>[analyzer.cpp]"]
  node_crash_recovery["Crash Recovery"]
  node_storage[("Reliable Storage")]
end

node_user(("User"))
node_game(("Game Process"))

node_user -->|"selects game"| node_launcher
node_launcher -->|"installs proxy"| node_proxy
node_launcher -->|"requests update"| node_update
node_repository -->|"supplies artifacts"| node_update
node_game -->|"loads runtime"| node_runtime_entry
node_runtime_entry -->|"starts session"| node_session
node_session -->|"hosts interface"| node_ui
node_ui -->|"uses services"| node_host_ui
node_ui -->|"manages plugins"| node_plugin_manager
node_plugin_manager -->|"discovers packages"| node_plugin_catalog
node_plugin_manager -->|"loads and isolates"| node_plugin_runtime
node_plugin_manager -->|"watches changes"| node_watchers
node_plugin_runtime -->|"exposes ABI"| node_plugin_sdk
node_plugin_runtime -->|"registers hooks"| node_hook_manager
node_plugin_runtime -->|"uses game services"| node_ue5_adapter
node_ue5_adapter -->|"validates layout"| node_profile
node_ue5_adapter -->|"adapts features"| node_nte_services
node_session -->|"reports state"| node_diagnostics
node_session -->|"coordinates faults"| node_crash_recovery
node_plugin_manager -->|"persists state"| node_storage

click node_launcher "https://github.com/anomalynte/anomaly/blob/main/apps/launcher/main.cpp"
click node_proxy "https://github.com/anomalynte/anomaly/blob/main/src/launcher/proxy_installation.cpp"
click node_update "https://github.com/anomalynte/anomaly/blob/main/src/repository/update_transaction.cpp"
click node_repository "https://github.com/anomalynte/anomaly/blob/main/src/repository/repository_coordinator.cpp"
click node_runtime_entry "https://github.com/anomalynte/anomaly/blob/main/src/runtime/core_main.cpp"
click node_session "https://github.com/anomalynte/anomaly/blob/main/src/runtime/runtime_session.cpp"
click node_ui "https://github.com/anomalynte/anomaly/blob/main/src/ui/embedded_ui.cpp"
click node_host_ui "https://github.com/anomalynte/anomaly/blob/main/src/ui/host_ui_service.cpp"
click node_plugin_manager "https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_manager.cpp"
click node_plugin_catalog "https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_catalog.cpp"
click node_plugin_runtime "https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_runtime.cpp"
click node_plugin_sdk "https://github.com/anomalynte/anomaly/blob/main/include/anomaly/sdk/anomaly_sdk.h"
click node_watchers "https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_file_watcher.cpp"
click node_hook_manager "https://github.com/anomalynte/anomaly/blob/main/src/hook/hook_manager.cpp"
click node_ue5_adapter "https://github.com/anomalynte/anomaly/blob/main/src/game/ue5/ue5_nte_adapter.cpp"
click node_profile "https://github.com/anomalynte/anomaly/blob/main/src/game/ue5/build_profile.cpp"
click node_nte_services "https://github.com/anomalynte/anomaly/blob/main/src/game/nte/nte_profile_runtime.cpp"
click node_diagnostics "https://github.com/anomalynte/anomaly/blob/main/src/diagnostics/analyzer.cpp"
click node_crash_recovery "https://github.com/anomalynte/anomaly/blob/main/src/diagnostics/runtime_crash_coordinator.cpp"
click node_storage "https://github.com/anomalynte/anomaly/blob/main/src/services/reliable_storage.cpp"

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_launcher,node_proxy,node_update,node_repository,node_user toneBlue
class node_runtime_entry,node_session,node_ui,node_host_ui toneAmber
class node_plugin_manager,node_plugin_catalog,node_plugin_runtime,node_plugin_sdk,node_watchers toneMint
class node_hook_manager,node_ue5_adapter,node_profile,node_nte_services toneRose
class node_diagnostics,node_crash_recovery,node_storage,node_game toneIndigo
```

## Components

### Launch and Updates

- [Launcher](https://github.com/anomalynte/anomaly/blob/main/apps/launcher/main.cpp): `apps/launcher/main.cpp`
- [Proxy Installation](https://github.com/anomalynte/anomaly/blob/main/src/launcher/proxy_installation.cpp): `src/launcher/proxy_installation.cpp`
- [Update Transaction](https://github.com/anomalynte/anomaly/blob/main/src/repository/update_transaction.cpp): `src/repository/update_transaction.cpp`
- [Plugin Repository](https://github.com/anomalynte/anomaly/blob/main/src/repository/repository_coordinator.cpp): `src/repository/repository_coordinator.cpp`

### Runtime and UI

- [Runtime Core](https://github.com/anomalynte/anomaly/blob/main/src/runtime/core_main.cpp): `src/runtime/core_main.cpp`
- [Runtime Session](https://github.com/anomalynte/anomaly/blob/main/src/runtime/runtime_session.cpp): `src/runtime/runtime_session.cpp`
- [In-game UI](https://github.com/anomalynte/anomaly/blob/main/src/ui/embedded_ui.cpp): `src/ui/embedded_ui.cpp`
- [Host UI Services](https://github.com/anomalynte/anomaly/blob/main/src/ui/host_ui_service.cpp): `src/ui/host_ui_service.cpp`

### Plugin Platform

- [Plugin Manager](https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_manager.cpp): `src/plugin/plugin_manager.cpp`
- [Plugin Catalog](https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_catalog.cpp): `src/plugin/plugin_catalog.cpp`
- [Plugin Runtime](https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_runtime.cpp): `src/plugin/plugin_runtime.cpp`
- [C ABI SDK](https://github.com/anomalynte/anomaly/blob/main/include/anomaly/sdk/anomaly_sdk.h): `include/anomaly/sdk/anomaly_sdk.h`
- [Plugin Watchers](https://github.com/anomalynte/anomaly/blob/main/src/plugin/plugin_file_watcher.cpp): `src/plugin/plugin_file_watcher.cpp`

### Game Integration

- [Hook Manager](https://github.com/anomalynte/anomaly/blob/main/src/hook/hook_manager.cpp): `src/hook/hook_manager.cpp`
- [UE5 Adapter](https://github.com/anomalynte/anomaly/blob/main/src/game/ue5/ue5_nte_adapter.cpp): `src/game/ue5/ue5_nte_adapter.cpp`
- [Build Profile](https://github.com/anomalynte/anomaly/blob/main/src/game/ue5/build_profile.cpp): `src/game/ue5/build_profile.cpp`
- [NTE Services](https://github.com/anomalynte/anomaly/blob/main/src/game/nte/nte_profile_runtime.cpp): `src/game/nte/nte_profile_runtime.cpp`

### Diagnostics

- [Diagnostics](https://github.com/anomalynte/anomaly/blob/main/src/diagnostics/analyzer.cpp): `src/diagnostics/analyzer.cpp`
- [Crash Recovery](https://github.com/anomalynte/anomaly/blob/main/src/diagnostics/runtime_crash_coordinator.cpp): `src/diagnostics/runtime_crash_coordinator.cpp`
- [Reliable Storage](https://github.com/anomalynte/anomaly/blob/main/src/services/reliable_storage.cpp): `src/services/reliable_storage.cpp`

### Other components

- **User**
- **Game Process**

## Connections

- User → Launcher: selects game
- Launcher → Proxy Installation: installs proxy
- Launcher → Update Transaction: requests update
- Plugin Repository → Update Transaction: supplies artifacts
- Game Process → Runtime Core: loads runtime
- Runtime Core → Runtime Session: starts session
- Runtime Session → In-game UI: hosts interface
- In-game UI → Host UI Services: uses services
- In-game UI → Plugin Manager: manages plugins
- Plugin Manager → Plugin Catalog: discovers packages
- Plugin Manager → Plugin Runtime: loads and isolates
- Plugin Manager → Plugin Watchers: watches changes
- Plugin Runtime → C ABI SDK: exposes ABI
- Plugin Runtime → Hook Manager: registers hooks
- Plugin Runtime → UE5 Adapter: uses game services
- UE5 Adapter → Build Profile: validates layout
- UE5 Adapter → NTE Services: adapts features
- Runtime Session → Diagnostics: reports state
- Runtime Session → Crash Recovery: coordinates faults
- Plugin Manager → Reliable Storage: persists state
