Files
netdesk/native/README.md
T

2.9 KiB

NetDesk — Native Remote Desktop

A true native, cross-platform remote-desktop client. Developed by Akronlogic. Full IP ownership — built from scratch, no AGPL/third-party copyleft.

Goal: a premium, TeamViewer-grade experience (RustDesk is our open-source reference for features and approach — we re-implement, we don't vendor it).

Architecture

netdesk-native/
├── core/     Rust core library  → the compiled engine (one codebase, all platforms)
│             signaling · E2E crypto · media transport · H.264 codec · input
│             exposes a C ABI (cdylib/staticlib) for the UI layer
├── cli/      Headless test harness (how the core is tested in CI / during build-out)
└── ui/       Flutter app (added in Phase 3) → Windows/macOS/Linux/iOS/Android UI

Why Rust core + Flutter UI: it is the only stack that gives one native codebase across all five targets (desktop and mobile) with native performance — the same architecture RustDesk proved. The heavy, latency-critical work lives in Rust; the UI is Flutter calling in over the C ABI.

Compatibility

The client speaks the existing NetDesk server protocol (the self-hosted signaling/relay at netdesk.space), so it interoperates with the current web viewer and host engine during the transition:

  • session.begin → session.challenge → session.auth → session.accept
  • Auth: verifier = PBKDF2-HMAC-SHA256(password, salt, iters), proof = SHA256(nonce ‖ verifier)
  • E2E: ECDH P-256 → SHA256(shared.x ‖ "e2e") → AES-256-GCM
  • Media: AES-GCM(iv[12] ‖ ciphertext), plaintext = [chan][keyframe][H.264 Annex-B]

Roadmap

  • Phase 1 — Core network + crypto (this commit): WSS signaling, full auth + E2E handshake, decrypted H.264 frame stream, headless CLI that verifies a live session against the real server. Tested.
  • Phase 2 — Decode + render: H.264 hardware decode (openh264/FFmpeg/ platform decoders), frame pacing, a minimal native window showing the remote screen; input injection back to the host.
  • Phase 3 — Flutter UI: the NetDesk app shell (connect screen, session toolbar, address book), Akronlogic branding, over the Rust C ABI.
  • Phase 4 — Transport: WebRTC P2P (direct) + TURN, matching the server's 3-tier path; adaptive bitrate.
  • Phase 5 — Feature parity: multi-monitor, file transfer, clipboard, audio, unattended access, auto-start service, auto-update.
  • Phase 6 — Packaging + signing: signed installers per platform (Akronlogic code-signing), store builds for iOS/Android.

Build

# Rust core + CLI (Windows uses the GNU toolchain + MinGW-w64 binutils)
cargo build --release
# verify against a live host:
target/release/netdesk <host-id> <password> wss://netdesk.space/ws 10

© Akronlogic. All rights reserved.