# m2team/nanarun architecture

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

- Interactive diagram: https://gitdiagram.com/m2team/nanarun
- Repository: https://github.com/m2team/nanarun

## Overview

NanaRun is a Windows application-runtime customization project whose implemented utilities provide elevated command execution (MinSudo) and a Hyper-V Enhanced Session proxy (SynthRdp). The primary workflows are command-to-elevated-process execution and service-managed VMBus-to-TCP RDP forwarding; SynthRdp also exposes service and configuration commands. The tree includes a separate VirtualSmb guest utility and a RunAsSvc scaffold. Source excerpts are partial, so the graph omits uncertain implementation links and treats documented behavior as capability evidence, not inspected code.

Main entry points: [`SynthRdp/SynthRdp.cpp`](https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp) (SynthRdp Service), [`MinSudo/MinSudo.cpp`](https://github.com/m2team/nanarun/blob/main/MinSudo/MinSudo.cpp) (MinSudo CLI), [`VirtualSmb/VirtualSmb.cpp`](https://github.com/m2team/nanarun/blob/main/VirtualSmb/VirtualSmb.cpp) (VirtualSmb Utility), [`RunAsSvc/RunAsSvc.cpp`](https://github.com/m2team/nanarun/blob/main/RunAsSvc/RunAsSvc.cpp) (RunAsSvc Scaffold)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_sudo["Elevated Execution"]
  node_minsudo["MinSudo CLI<br/>[MinSudo.cpp]"]
  node_token["Privilege Tokens<br/>[MinSudo.cpp]"]
  node_child["Elevated Command<br/>[MinSudo.cpp]"]
end

subgraph group_rdp["Enhanced Session Proxy"]
  node_synthcli["SynthRdp CLI<br/>[SynthRdp.cpp]"]
  node_service["SynthRdp Service<br/>[SynthRdp.cpp]"]
  node_config[("Proxy Configuration<br/>[SynthRdp.cpp]")]
  node_control["VMBus Control Channel<br/>[SynthRdp.cpp]"]
  node_data["VMBus Data Channels<br/>[SynthRdp.cpp]"]
  node_proxy["Bidirectional Proxy<br/>[SynthRdp.cpp]"]
end

subgraph group_smb["Guest SMB Utility"]
  node_vsmb["VirtualSmb Utility<br/>[VirtualSmb.cpp]"]
end

subgraph group_svc["Service Scaffold"]
  node_runassvc["RunAsSvc Scaffold<br/>[RunAsSvc.cpp]"]
end

node_operator(("User"))
node_uac["Windows UAC"]
node_rdppeer(("RDP TCP Endpoint"))
node_scm["Windows Service Manager"]
node_redirector["Windows SMB Redirector"]
node_vmbus["Hyper-V VMBus"]
node_runasmanager["Windows Service Manager"]

node_operator -->|"runs command"| node_minsudo
node_minsudo -->|"selects token"| node_token
node_minsudo -->|"launches process"| node_child
node_token -->|"supplies token"| node_child
node_minsudo -->|"requests elevation"| node_uac
node_operator -->|"issues commands"| node_synthcli
node_synthcli -->|"installs or controls"| node_service
node_synthcli -->|"reads or writes"| node_config
node_service -->|"reads settings"| node_config
node_service -->|"opens channel"| node_control
node_service -->|"opens channels"| node_data
node_service -->|"registers service"| node_scm
node_control -->|"uses VMBus"| node_vmbus
node_data -->|"forwards channel data"| node_proxy
node_proxy -->|"forwards TCP data"| node_rdppeer
node_operator -->|"runs utility"| node_vsmb
node_vsmb -->|"configures instance"| node_redirector
node_vsmb -->|"binds transport"| node_vmbus
node_operator -->|"invokes scaffold"| node_runassvc
node_runassvc -->|"connects service dispatcher"| node_runasmanager

click node_minsudo "https://github.com/m2team/nanarun/blob/main/MinSudo/MinSudo.cpp"
click node_token "https://github.com/m2team/nanarun/blob/main/MinSudo/MinSudo.cpp"
click node_child "https://github.com/m2team/nanarun/blob/main/MinSudo/MinSudo.cpp"
click node_synthcli "https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp"
click node_service "https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp"
click node_config "https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp"
click node_control "https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp"
click node_data "https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp"
click node_proxy "https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp"
click node_vsmb "https://github.com/m2team/nanarun/blob/main/VirtualSmb/VirtualSmb.cpp"
click node_runassvc "https://github.com/m2team/nanarun/blob/main/RunAsSvc/RunAsSvc.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_minsudo,node_token,node_child,node_operator toneBlue
class node_synthcli,node_service,node_config,node_control,node_data,node_proxy toneAmber
class node_vsmb toneMint
class node_runassvc toneRose
class node_uac,node_rdppeer,node_scm,node_redirector,node_vmbus,node_runasmanager toneIndigo
```

## Components

### Elevated Execution

- [MinSudo CLI](https://github.com/m2team/nanarun/blob/main/MinSudo/MinSudo.cpp): `MinSudo/MinSudo.cpp`
- [Privilege Tokens](https://github.com/m2team/nanarun/blob/main/MinSudo/MinSudo.cpp): `MinSudo/MinSudo.cpp`
- [Elevated Command](https://github.com/m2team/nanarun/blob/main/MinSudo/MinSudo.cpp): `MinSudo/MinSudo.cpp`

### Enhanced Session Proxy

- [SynthRdp CLI](https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp): `SynthRdp/SynthRdp.cpp`
- [SynthRdp Service](https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp): `SynthRdp/SynthRdp.cpp`
- [Proxy Configuration](https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp): `SynthRdp/SynthRdp.cpp`
- [VMBus Control Channel](https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp): `SynthRdp/SynthRdp.cpp`
- [VMBus Data Channels](https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp): `SynthRdp/SynthRdp.cpp`
- [Bidirectional Proxy](https://github.com/m2team/nanarun/blob/main/SynthRdp/SynthRdp.cpp): `SynthRdp/SynthRdp.cpp`

### Guest SMB Utility

- [VirtualSmb Utility](https://github.com/m2team/nanarun/blob/main/VirtualSmb/VirtualSmb.cpp): `VirtualSmb/VirtualSmb.cpp`

### Service Scaffold

- [RunAsSvc Scaffold](https://github.com/m2team/nanarun/blob/main/RunAsSvc/RunAsSvc.cpp): `RunAsSvc/RunAsSvc.cpp`

### Other components

- **User**
- **Windows UAC**
- **RDP TCP Endpoint**
- **Windows Service Manager**
- **Windows SMB Redirector**
- **Hyper-V VMBus**
- **Windows Service Manager**

## Connections

- User → MinSudo CLI: runs command
- MinSudo CLI → Privilege Tokens: selects token
- MinSudo CLI → Elevated Command: launches process
- Privilege Tokens → Elevated Command: supplies token
- MinSudo CLI → Windows UAC: requests elevation
- User → SynthRdp CLI: issues commands
- SynthRdp CLI → SynthRdp Service: installs or controls
- SynthRdp CLI → Proxy Configuration: reads or writes
- SynthRdp Service → Proxy Configuration: reads settings
- SynthRdp Service → VMBus Control Channel: opens channel
- SynthRdp Service → VMBus Data Channels: opens channels
- SynthRdp Service → Windows Service Manager: registers service
- VMBus Control Channel → Hyper-V VMBus: uses VMBus
- VMBus Data Channels → Bidirectional Proxy: forwards channel data
- Bidirectional Proxy → RDP TCP Endpoint: forwards TCP data
- User → VirtualSmb Utility: runs utility
- VirtualSmb Utility → Windows SMB Redirector: configures instance
- VirtualSmb Utility → Hyper-V VMBus: binds transport
- User → RunAsSvc Scaffold: invokes scaffold
- RunAsSvc Scaffold → Windows Service Manager: connects service dispatcher
