# Future Desktop Client Migration Plan ## Shared Core The Rust crates are already structured so desktop clients can reuse: - VSHP frame parsing and encoding. - Peer/session models. - NAT, MTU, DNS, and flow-control logic where applicable. - Transport abstractions. ## Desktop-Specific Layers Windows: - Wintun adapter. - Windows service. - MSI/MSIX installer. - Credential Manager key storage. Linux: - TUN device. - systemd user/system service. - NetworkManager integration where available. - Secret Service key storage. macOS: - utun interface. - launchd service. - Keychain key storage. - Notarized app bundle. ## Product Migration Steps 1. Keep `clients/desktop` as the CLI bring-up tool. 2. Add OS-specific virtual NIC crates under `clients/desktop/src/platform`. 3. Add installers once USB IPv4 forwarding is stable. 4. Add tray UI after service lifecycle is reliable. 5. Split GUI from service so crashes do not drop the tunnel.