# snltty/linker architecture

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

- Interactive diagram: https://gitdiagram.com/snltty/linker
- Repository: https://github.com/snltty/linker

## Overview

Linker is a multi-platform private networking and tunneling application. A user configures a client and signs in to a coordination server, selects peers and connection modes, then uses the resulting tunnel for virtual-network access, port forwarding, or SOCKS5 proxying. The README also describes relay and mesh connectivity, subnet mapping, firewall controls, discovery, wake-on-LAN, and scheduled reverse access. The graph reflects these documented capabilities; sampled controller and tunnel code supports the API-to-messenger and tunnel-orchestration roles, but not every subsystem’s internal wiring.

Main entry points: [`src/linker.tunnel/TunnelTransfer.cs`](https://github.com/snltty/linker/blob/master/src/linker.tunnel/TunnelTransfer.cs) (Tunnel engine), [`src/linker.messenger.signin/SignInApiController.cs`](https://github.com/snltty/linker/blob/master/src/linker.messenger.signin/SignInApiController.cs) (Sign-in), [`src/linker.messenger.tuntap/client/TuntapApiController.cs`](https://github.com/snltty/linker/blob/master/src/linker.messenger.tuntap/client/TuntapApiController.cs) (Virtual networking), [`src/linker.messenger.firewall/FirewallApiController.cs`](https://github.com/snltty/linker/blob/master/src/linker.messenger.firewall/FirewallApiController.cs) (Access firewall)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client and UI"]
  node_client_ui["Client interface<br/>[main.js]"]
  node_desktop_host["App host<br/>[MainPage.xaml.cs]"]
  node_api["Client APIs<br/>[IApiController.cs]"]
end

subgraph group_coordination["Coordination"]
  node_sign_in["Sign-in"]
  node_flow["Traffic reporting"]
  node_updater["Client updates"]
end

subgraph group_connectivity["Tunnel connectivity"]
  node_tunnel_api["Tunnel control"]
  node_tunnel_engine["Tunnel engine<br/>[TunnelTransfer.cs]"]
  node_relay["Relay nodes"]
  node_mesh["Mesh forwarding"]
end

subgraph group_networking["Network services"]
  node_tuntap["Virtual networking"]
  node_forward["Port forwarding"]
  node_socks["SOCKS5 proxy"]
  node_firewall["Access firewall"]
  node_discovery["LAN discovery"]
  node_wakeup["Remote wake-up"]
  node_reverse["Reverse access"]
  node_plans["Scheduled plans"]
end

node_user(("User"))
node_server(("Coordination server"))
node_peer(("Remote peers"))

node_user -->|"configures"| node_client_ui
node_client_ui -.->|"requests"| node_api
node_api -.->|"dispatches"| node_sign_in
node_sign_in -->|"signs in"| node_server
node_sign_in -.->|"selects peers"| node_tunnel_api
node_tunnel_api -->|"controls"| node_tunnel_engine
node_tunnel_engine -->|"connects tunnels"| node_peer
node_tunnel_engine -->|"uses relay"| node_relay
node_tunnel_engine -->|"uses mesh"| node_mesh
node_tunnel_engine -->|"carries virtual traffic"| node_tuntap
node_tunnel_engine -->|"carries forwarded traffic"| node_forward
node_tunnel_engine -->|"carries proxy traffic"| node_socks
node_tuntap -->|"filters access"| node_firewall
node_forward -->|"filters access"| node_firewall
node_socks -->|"filters access"| node_firewall
node_tuntap -->|"proxies discovery"| node_discovery
node_user -->|"requests wake-up"| node_wakeup
node_user -->|"configures access"| node_reverse
node_reverse -->|"schedules access"| node_plans
node_user -.->|"views traffic"| node_flow
node_user -.->|"manages updates"| node_updater

click node_client_ui "https://github.com/snltty/linker/blob/master/src/linker.web/src/main.js"
click node_desktop_host "https://github.com/snltty/linker/blob/master/src/linker.app/MainPage.xaml.cs"
click node_api "https://github.com/snltty/linker/blob/master/src/linker.libs/web/IApiController.cs"
click node_sign_in "https://github.com/snltty/linker/blob/master/src/linker.messenger.signin/SignInApiController.cs"
click node_tunnel_api "https://github.com/snltty/linker/blob/master/src/linker.messenger.tunnel/client/TunnelApiController.cs"
click node_tunnel_engine "https://github.com/snltty/linker/blob/master/src/linker.tunnel/TunnelTransfer.cs"
click node_relay "https://github.com/snltty/linker/blob/master/src/linker.messenger.relay/client/RelayApiController.cs"
click node_mesh "https://github.com/snltty/linker/blob/master/src/linker.messenger.mesh/MeshApiController.cs"
click node_tuntap "https://github.com/snltty/linker/blob/master/src/linker.messenger.tuntap/client/TuntapApiController.cs"
click node_forward "https://github.com/snltty/linker/blob/master/src/linker.messenger.forward/ForwardApiController.cs"
click node_socks "https://github.com/snltty/linker/blob/master/src/linker.messenger.socks5/Socks5ApiController.cs"
click node_firewall "https://github.com/snltty/linker/blob/master/src/linker.messenger.firewall/FirewallApiController.cs"
click node_discovery "https://github.com/snltty/linker/blob/master/src/linker.discovery/DiscoveryProtocolHandlerLlmnr.cs"
click node_wakeup "https://github.com/snltty/linker/blob/master/src/linker.messenger.wakeup/WakeupApiController.cs"
click node_reverse "https://github.com/snltty/linker/blob/master/src/linker.messenger.reverse/client/ReverseApiController.cs"
click node_plans "https://github.com/snltty/linker/blob/master/src/linker.messenger.plan/PlanApiController.cs"
click node_flow "https://github.com/snltty/linker/blob/master/src/linker.messenger.flow/FlowApiController.cs"
click node_updater "https://github.com/snltty/linker/blob/master/src/linker.messenger.updater/UpdaterApiController.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_client_ui,node_desktop_host,node_api,node_user toneBlue
class node_sign_in,node_flow,node_updater toneAmber
class node_tunnel_api,node_tunnel_engine,node_relay,node_mesh,node_server toneMint
class node_tuntap,node_forward,node_socks,node_firewall,node_discovery,node_wakeup,node_reverse,node_plans toneRose
class node_peer toneIndigo
```

## Components

### Client and UI

- [Client interface](https://github.com/snltty/linker/blob/master/src/linker.web/src/main.js): `src/linker.web/src/main.js`
- [App host](https://github.com/snltty/linker/blob/master/src/linker.app/MainPage.xaml.cs): `src/linker.app/MainPage.xaml.cs`
- [Client APIs](https://github.com/snltty/linker/blob/master/src/linker.libs/web/IApiController.cs): `src/linker.libs/web/IApiController.cs`

### Coordination

- [Sign-in](https://github.com/snltty/linker/blob/master/src/linker.messenger.signin/SignInApiController.cs): `src/linker.messenger.signin/SignInApiController.cs`
- [Traffic reporting](https://github.com/snltty/linker/blob/master/src/linker.messenger.flow/FlowApiController.cs): `src/linker.messenger.flow/FlowApiController.cs`
- [Client updates](https://github.com/snltty/linker/blob/master/src/linker.messenger.updater/UpdaterApiController.cs): `src/linker.messenger.updater/UpdaterApiController.cs`

### Tunnel connectivity

- [Tunnel control](https://github.com/snltty/linker/blob/master/src/linker.messenger.tunnel/client/TunnelApiController.cs): `src/linker.messenger.tunnel/client/TunnelApiController.cs`
- [Tunnel engine](https://github.com/snltty/linker/blob/master/src/linker.tunnel/TunnelTransfer.cs): `src/linker.tunnel/TunnelTransfer.cs`
- [Relay nodes](https://github.com/snltty/linker/blob/master/src/linker.messenger.relay/client/RelayApiController.cs): `src/linker.messenger.relay/client/RelayApiController.cs`
- [Mesh forwarding](https://github.com/snltty/linker/blob/master/src/linker.messenger.mesh/MeshApiController.cs): `src/linker.messenger.mesh/MeshApiController.cs`

### Network services

- [Virtual networking](https://github.com/snltty/linker/blob/master/src/linker.messenger.tuntap/client/TuntapApiController.cs): `src/linker.messenger.tuntap/client/TuntapApiController.cs`
- [Port forwarding](https://github.com/snltty/linker/blob/master/src/linker.messenger.forward/ForwardApiController.cs): `src/linker.messenger.forward/ForwardApiController.cs`
- [SOCKS5 proxy](https://github.com/snltty/linker/blob/master/src/linker.messenger.socks5/Socks5ApiController.cs): `src/linker.messenger.socks5/Socks5ApiController.cs`
- [Access firewall](https://github.com/snltty/linker/blob/master/src/linker.messenger.firewall/FirewallApiController.cs): `src/linker.messenger.firewall/FirewallApiController.cs`
- [LAN discovery](https://github.com/snltty/linker/blob/master/src/linker.discovery/DiscoveryProtocolHandlerLlmnr.cs): `src/linker.discovery/DiscoveryProtocolHandlerLlmnr.cs`
- [Remote wake-up](https://github.com/snltty/linker/blob/master/src/linker.messenger.wakeup/WakeupApiController.cs): `src/linker.messenger.wakeup/WakeupApiController.cs`
- [Reverse access](https://github.com/snltty/linker/blob/master/src/linker.messenger.reverse/client/ReverseApiController.cs): `src/linker.messenger.reverse/client/ReverseApiController.cs`
- [Scheduled plans](https://github.com/snltty/linker/blob/master/src/linker.messenger.plan/PlanApiController.cs): `src/linker.messenger.plan/PlanApiController.cs`

### Other components

- **User**
- **Coordination server**
- **Remote peers**

## Connections

- User → Client interface: configures (evidence: `README.md`)
- Client interface → Client APIs: requests
- Client APIs → Sign-in: dispatches (evidence: `src/linker.messenger.signin/SignInApiController.cs`)
- Sign-in → Coordination server: signs in (evidence: `README.md`)
- Sign-in → Tunnel control: selects peers
- Tunnel control → Tunnel engine: controls (evidence: `src/linker.messenger.tunnel/client/TunnelApiController.cs`)
- Tunnel engine → Remote peers: connects tunnels (evidence: `README.md`)
- Tunnel engine → Relay nodes: uses relay (evidence: `README.md`)
- Tunnel engine → Mesh forwarding: uses mesh (evidence: `README.md`)
- Tunnel engine → Virtual networking: carries virtual traffic (evidence: `README.md`)
- Tunnel engine → Port forwarding: carries forwarded traffic (evidence: `README.md`)
- Tunnel engine → SOCKS5 proxy: carries proxy traffic (evidence: `README.md`)
- Virtual networking → Access firewall: filters access (evidence: `README.md`)
- Port forwarding → Access firewall: filters access (evidence: `README.md`)
- SOCKS5 proxy → Access firewall: filters access (evidence: `README.md`)
- Virtual networking → LAN discovery: proxies discovery (evidence: `README.md`)
- User → Remote wake-up: requests wake-up (evidence: `README.md`)
- User → Reverse access: configures access (evidence: `README.md`)
- Reverse access → Scheduled plans: schedules access (evidence: `README.md`)
- User → Traffic reporting: views traffic
- User → Client updates: manages updates
