Early access · macOS host · Windows & Linux on the roadmap →

Remote desktop
you actually own.

OnaDesk streams your screen to any browser over end-to-end encrypted WebRTC, through a server you run. No accounts. No vendor in the middle. Nothing leaves your own server.

  • Rust host
  • Hardware H.264
  • DTLS-SRTP
  • Ed25519 device keys
  • Runs in any browser
desk.yourdomain.com Connected
deploy.sh
$ docker compose up -d
✔ caddy      started
✔ server     healthy
✔ coturn     started
$ 
Quarterly.xlsx
30 fpsH.264 hardwareE2EE DTLS-SRTP
Approval requiredA person at the device must click Allow
Upload completereport.pdf → ~/Downloads/OnaDesk
0third-party relays you don’t control
0accounts or logins to create
100%of media end-to-end encrypted
1small server to run: you host it
Features

Everything you need from remote access.
Nothing you didn’t ask for.

Built from the ground up in Rust and Angular around one idea: the connection is between you and your machine, and nobody else needs to be involved.

Smooth, hardware-accelerated video

Screen capture goes straight into the Mac’s hardware H.264 encoder (VideoToolbox), with an OpenH264 software fallback. Adaptive bitrate reacts to your network so the picture stays fluid when the connection isn’t.

Native-feeling control

Mouse and full keyboard injected on the host, so shortcuts and typing land where you expect.

Clipboard sync

Copy on one side, paste on the other. One switch turns it off.

File upload

Drop files onto the session. Names sanitized, no overwrites, written atomically, size-limited.

Direct or relayed

Peer-to-peer when possible, TURN relay (coturn, included) when networks get in the way.

One viewer. Every screen.

The viewer is a web app, so there’s nothing to install on the controlling side: open a browser on a laptop, tablet or phone and enter a device ID. The same UI ships inside the native desktop app, which also hosts your Mac from the menu bar, starts at login and shows a clear “Connected” indicator.

How it works

Three parts. All yours.

The signaling server only introduces the two sides. Video, input, clipboard and files travel directly between them, encrypted, and the server never sees any of it.

Viewer Any browser
Signaling server Device registry · rate limits
Host Agent or desktop app
signaling · wss video · input · clipboard · files, encrypted, direct or via TURN
  1. 01

    Run the host

    Install the desktop app or run ondesk-agent. It generates an Ed25519 identity, registers a device ID and creates an access password.

  2. 02

    Open the viewer

    Browse to your own OnaDesk address from anywhere. Enter the device ID and password. The password never crosses the wire.

  3. 03

    Approve & connect

    Optionally require someone at the device to click Allow. Then the encrypted stream starts, peer-to-peer if the network allows.

Security

Designed so nobody else has to be trusted.

Defense in depth, documented honestly, including the gaps, in a public threat model.

Transport

End-to-end encrypted

WebRTC DTLS-SRTP between host and viewer. The signaling server never touches your screen, keystrokes, clipboard or files.

Identity

Keys, not usernames

Each host has an Ed25519 key. The server binds a device ID to the first key that registers it and refuses any other, so nobody can impersonate your machine.

Authorization

Proof, not passwords on the wire

HMAC challenge-response with single-use nonces, plus per-source lockout with exponential backoff so one attacker can’t lock you out.

Consent

Ask me first

An optional approval gate: a correct password isn’t enough. A native dialog at the device must be accepted, or it’s denied after 45 seconds.

Visibility

You always know

A “Connected” indicator in the menu bar and a local activity log of connections, wrong passwords, lockouts and approvals.

Abuse limits

Rate-limited by design

Handshakes, sockets, connect attempts and registrations are limited per IP, so scanning for device IDs goes nowhere fast.

OnaDesk hasn’t had an independent security review yet. The full threat model, including known limitations, is shared with every early-access user. Read it before exposing OnaDesk to the internet.

Self-host

Your server. Your rules.

Early-access users receive a Docker Compose bundle with Caddy (automatic TLS), the signaling server and coturn. A 2 vCPU / 2 GB VPS is plenty, and nothing runs on our infrastructure.

  • Metrics at /metrics, status at /status, JSON logs
  • TURN credentials issued per session via /ice
  • Everything configured with ONADESK_* environment variables
zsh — onadesk
# from the bundle you receive with early access
$ cd onadesk-deploy
$ docker compose up -d
  caddy ✔  server ✔  coturn ✔

# then open your own address and connect
  https://desk.yourdomain.com
Status

Honest about where it is.

OnaDesk works and is tested on one Mac. It isn’t production-ready yet, and we’d rather tell you exactly why.

Working today

  • Screen streaming with hardware H.264
  • Mouse & keyboard control
  • Clipboard sync & file upload
  • Password, approval gate & per-source lockout
  • Host key binding & reconnect
  • Relay via TURN (tested against coturn on a real VPS)
  • macOS desktop app with tray & start at login

In progress

  • Wider real-network testing (mobile data, packet loss, many hosts)
  • Windows host
  • Signed & notarized releases, auto-update
  • PAKE login, 2FA, per-viewer permissions

Later

  • Linux host
  • Multi-monitor
  • Audio
  • File download
  • Independent security review
FAQ

Questions, answered.

How is this different from AnyDesk, TeamViewer or RustDesk?

Like RustDesk, OnaDesk is self-hosted. The difference is scope and stack: a small Rust host, a viewer that runs in a plain browser, and a deliberately short list of security-sensitive moving parts. Unlike the commercial tools, there’s no company account or relay between you and your machine.

Does my screen pass through your servers?

No. There are no “our servers”. You run the signaling server. Media is end-to-end encrypted between host and viewer and goes direct, or through your own TURN relay when needed.

Which platforms are supported?

The host currently runs on macOS (hardware H.264 encoding, with a software fallback). The viewer works in any modern browser, including phones and tablets. Windows is next; Linux follows.

Is it safe to expose to the internet?

It’s built with that in mind (device-bound keys, challenge-response auth, rate limits, optional approval) but it hasn’t had an independent audit, and it has so far only had limited testing on real networks (one deployment, one host). Put it behind TLS, use a long password and turn on approval for attended machines.

What does it cost?

Early-access pricing and licence terms haven’t been set yet and will be shared when early access opens. Because you run it on your own server, there’s no hosted service of ours in the loop, and a small VPS is all the infrastructure you need.

Take your desktop back.

Run your own remote desktop. Your server, your keys, your screen.