v1.0.0 · 100% Rust · AGPL-3.0

Remote desktop with end-to-end encryption by design

Unattended access by numeric ID, screen sharing, remote control, file transfer, TCP tunneling, audio and chat — open source, self-hostable, no accounts.

ID980 114 3351
FingerprintS3DW-JJFB-6MF3-EZA2
Serverabbydesk.com:21116
25 000+lines of Rust
341automated tests
QUIC · TLS 1.3mutual Ed25519 certs
P2P + relayNAT traversal built in

Everything you need, nothing you don't

A complete remote access suite in a single binary. No sign-up, no cloud account, no vendor lock-in.

Unattended access by ID

Every device gets a 10-digit ID derived from its own Ed25519 key — an ID that cannot be spoofed or reassigned. Set an unattended password and connect any time.

Fast screen sharing

VP9 encoding tuned for screen content, damage-region capture, live bitrate/FPS reconfiguration without dropping the session. Multi-monitor support included.

Full remote control

Mouse, keyboard, Unicode text, Ctrl+Alt+Del, privacy screen, remote input blocking and resolution change — with per-peer permission grants.

File transfer

Dual-pane browser with resumable 256 KiB chunks, recursive delete, rename, mkdir, live progress and transfer rate.

TCP tunneling

Forward a local port to any host reachable from the peer — up to 64 concurrent tunnels. RDP, SSH, databases, anything TCP.

Audio, chat & clipboard

Opus 48 kHz audio (system or microphone), in-session chat with unread counters, and two-way text/image clipboard sync with echo suppression.

Session recording

Every session can be captured into an ABBYREC1 container: video, audio, chat and input tracks, with retention pruning built in.

NAT traversal

LAN discovery, direct IP, simultaneous P2P dial with hole punching, and relay fallback over independent QUIC streams — tried in that order.

Wake on LAN

Power on remote machines with a magic packet — from the CLI or straight from the address book in the UI.

Security is the protocol, not a feature

Your ID is your public key. Every connection is mutually authenticated and encrypted end to end.

Identity = Ed25519 keyThe 10-digit ID is derived from the device key; the dialing side refuses any certificate that does not hash to the ID it called.
QUIC + TLS 1.3 mTLSMutual self-signed Ed25519 certificates on every connection; X25519 + ChaCha20-Poly1305 with HKDF per-direction keys at the application layer.
Unattended passwords done rightPBKDF2-HMAC-SHA256, 210 000 iterations, per-password random salt. Plaintext never touches disk; config files are written 0600.
Granular access controlDeny-all switch, per-peer whitelist/blacklist, «allowed peers only» mode, session caps and per-permission grants at the accept dialog.

Download abbydesk

Free for everyone. Preconfigured for the public abbydesk.com rendezvous — enter an ID and connect.

Windows

x86_64 · .exe · ~13 MB Download

Linux

x86_64 · X11 · ~16 MB Download

Android

arm64 · API 26+ · ~5 MB Download

Windows & Android builds: set rendezvous server once — Settings → Connection → abbydesk.com:21116

Self-hosting? Grab the server: abbydesk-server (Linux) · abbydesk-server (Windows) · SHA256SUMS

Quick start

Connect in seconds — or run the whole infrastructure yourself with one command.

Connect to a machine

# GUI — enter the peer's 10-digit ID
./abbydesk

# or straight from the shell
./abbydesk --connect "980 114 3351" --password hunter2
./abbydesk --connect 192.168.1.20:21116

Unattended access (headless host)

./abbydesk --headless
./abbydesk password        # set the unattended password
./abbydesk id              # print this device's ID

Your own rendezvous + relay server

One UDP port (21116), one binary, systemd unit included in the repo. Point clients at it with --server your.host:21116 or in Settings → Connection.

# on a host with a public address
./abbydesk-server --listen 0.0.0.0:21116 --relay-host your.host

# require a shared secret to register (optional)
./abbydesk-server --listen 0.0.0.0:21116 --key change-me

Build from source

# Debian / Ubuntu
sudo apt install rustc cargo libvpx-dev libopus-dev libasound2-dev \
  libx11-dev libxext-dev libxdamage-dev libxfixes-dev libxrandr-dev \
  libxinerama-dev libxtst-dev libxcursor-dev pkg-config gcc

cargo build --release       # binaries in target/release/
cargo test --workspace      # 323 unit + 18 end-to-end tests