Every monitor you want, on the computer you reach.
Mojo is a free, open-source remote desktop. Ask for three screens and the remote machine plugs in three real virtual displays, each streamed to its own window at up to 240 fps.
Windows, macOS, Linux, Android, iPhone, iPad and TVs. Written in Rust. No account required.
Drag monitors to arrange them.
Frames arrive before you notice.
Measured from the moment the host starts grabbing a frame until the viewer holds a decoded picture. Median of a four-second run per row.
RTX 3070 with NVENC and NVDEC, Ryzen 7 5700X, host and viewer on the same machine over loopback, so the GPU is shared by both ends. Your network adds its round trip; display scan-out adds the rest. Full tables are in the performance docs.
Everything the others charge for, free.
Each of the big names is great at one thing. Mojo sets out to beat all of them at once: a gaming-grade stream with the work features of a support tool, on every operating system.
| Feature | Mojo | Parsec | AnyDesk | TeamViewer | RustDesk | Moonlight / Sunshine |
|---|---|---|---|---|---|---|
| Virtual monitors | Unlimited, every host OS | Paid, up to 3 | No | No | Windows only | Windows fork only |
| Frame rate | Up to 240, 1080p240 at ~5 ms | 60 free | 60 | 60 | 60–120 | 120–240 |
| 4:4:4 colour for sharp text | Yes, free | Paid | No | No | Partly | Yes |
| Sign-in screen, lock screen, admin prompts | Yes | Yes | Yes | Yes | Yes | Yes |
| Privacy mode (dark screen, locked input) | Yes | Paid | Yes | Yes | Yes | No |
| Session recording | Yes, no re-encode | No | Yes | Paid | Yes | No |
| Your microphone on the remote machine | Yes | Yes | No | Yes | Yes | No |
| 2FA or device pairing | Pairing with a 6-digit code (SPAKE2) | Yes | Yes | Yes | Paid | PIN |
| Controllers with rumble | Yes, on every viewer | Yes | No | No | No | Yes |
| Linux host | Yes, X11 and GNOME Wayland | No | Yes | Yes | Yes | Yes |
| TV apps | Android TV and Apple TV | No | Partly | Partly | Partly | Yes |
| Self-hosted relay | Yes, free | Paid | Paid | Paid | Yes | n/a |
| Price for all of the above | Free and open source | Paid tiers | Paid tiers | Paid tiers | Paid Pro tier | Free |
Competitor details come from their public documentation and pricing pages; see COMPETITORS.md for sources. Mojo's figures are measured on an RTX 3070 test machine and in Windows and macOS VMs; the method and full tables are in the performance docs.
Built like a video pipeline, used like a desktop.
Virtual monitors, not window tricks
The host creates displays its own OS believes in: RandR monitors on X11, Mutter virtual monitors on GNOME, an indirect display driver on Windows, CGVirtualDisplay on macOS. Apps, docks and taskbars treat them like hardware. A computer with no monitor plugged in gets one automatically.
Hardware encode, end to end
NVENC, AMF, Quick Sync, VideoToolbox or Media Foundation on the host; NVDEC, VAAPI, D3D11 or VideoToolbox on the viewer. Software x264 steps in when no GPU encoder answers.
Holds up on bad networks
59 of 60 fps at 1080p with 5% packet loss and under 7 ms on a LAN. A lost frame is repaired by the next one, never by a keyframe burst. Forward error correction sized to measured loss, rate control that reads both delay and delivered throughput, and bitrate changes that never force a keyframe. See the results.
Your cursor, at local speed
The remote pointer shape becomes your own OS cursor, so pointing never waits for the network. Desktop audio streams as 10 ms Opus frames.
Clipboard and files, both ways
Copy text or files on one machine and paste on the other. Drag a folder onto a remote window and it lands in the Explorer or Finder window you dropped it on, or on the desktop.
Reach it from anywhere
On a LAN, hosts announce themselves. Across the internet, connect by 9-digit device ID: peers punch through NAT directly and fall back to a relay you can host yourself.
Encrypted, pinned, yours
TLS 1.3 end to end. The viewer remembers each host's certificate and refuses impostors. Relays only ever forward ciphertext. Passwords are rate-limited per address.
Made for games
Up to 240 fps, raw relative mouse with pointer lock, and up to four controllers per viewer that the host sees as Xbox pads. When a game rumbles, your controller does too, on desktop, Android and Apple devices.
Text as sharp as the real screen
Switch on 4:4:4 and every pixel of colour comes across, so small type and coloured code look exactly as they do on the other machine. Free, where others charge for it.
Reach it when nobody is there
One switch runs Mojo as a background service. On Windows you can sign in, unlock, answer admin prompts and press Ctrl+Alt+Del from your phone; it comes back after a reboot. Wake a sleeping computer from the device list first.
Pair once, skip the password
Enter a 6-digit code on your phone, tablet or laptop once and it connects without the password from then on. The code can't be relayed by an impostor, and you can remove any device in a click.
Privacy, recording, your voice
Black out the host's screens and lock its keyboard and mouse while you work. Record a session exactly as it streamed, with no re-encode. Talk through your own microphone into calls on the other machine. Chat from any app.
Open source, no account
The host, viewer, desktop app and relay are all in one Rust repository. Nothing phones home, and nothing requires a sign-in.
The same Mojo on every OS.
Feature parity across Linux, Windows and macOS is a requirement, not a stretch goal. Here is exactly where each piece stands today.
| Share this computer (host) | View a computer (client) | |||||
|---|---|---|---|---|---|---|
| Feature | Linux | Windows | macOS | Linux | Windows | macOS |
| Stream monitors | X11, GNOME | DXGI | ScreenCaptureKit | Yes | Yes | Yes |
| Virtual monitors | RandR, Mutter | SudoVDAdriver install needed | CGVirtualDisplay | Requested by any client | ||
| Mouse and keyboard | XTest, Mutter | SendInput | CGEvent | Yes | Yes | Yes |
| Local cursor with remote shape | XFixes | GDI | NSCursor | Yes | Yes | Yes |
| Desktop audio | PulseAudio, PipeWire | WASAPI loopback | ScreenCaptureKit | Yes | Yes | Yes |
| Clipboard text | Yes | Yes | Yes | Yes | Yes | Yes |
| Clipboard files and folders | Yes | Yes | Yes | Yes | Yes | Yes |
| Drop files into the window under the pointer | File managers, desktopDownloads otherwise | Explorer, desktop | Finder, desktop | Drag source | Drag source | Drag source |
| Hardware video | NVENC, QSV | NVENC, AMF, QSV, MF | VideoToolbox | NVDEC, VAAPI | D3D11VA | VideoToolbox |
| LAN discovery, device ID, relay | Yes | Yes | Yes | Yes | Yes | Yes |
| Game controllers | uinput (Xbox 360) | ViGEmBus (Xbox 360) | As mouse and keyboard | Yes | Yes | Yes |
| Unattended access (background service) | systemd user unit | Service: sign-in, lock screen, UAC | LaunchAgent | Pair any viewer with a 6-digit code | ||
| Privacy mode | X11not on GNOME Wayland yet | Curtain, input locked | Input lockedblackout needs real hardware to confirm | Yes | Yes | Yes |
| Microphone to the host | Virtual mic built in | VB-CABLE | BlackHole | Yes | Yes | Yes |
| Session recording | Recorded on the viewer | Yes | Yes | Yes | ||
| Desktop app and installer | deb, AppImage | NSIS installer | dmg | Yes | Yes | Yes |
Your phone, tablet and TV are viewers too.
Native apps for Android, Android TV, iPhone, iPad and Apple TV share Mojo's Rust core and decode in hardware. A controller is all you need on a TV: it becomes an Xbox controller on the computer, or the mouse and keyboard when you'd rather drive the desktop.
| Android | Android TV | iPhone, iPad | Apple TV | |
|---|---|---|---|---|
| Hardware decode | MediaCodec | MediaCodec | VideoToolbox | VideoToolbox |
| Touch | Trackpad, direct, pinch zoom | None | Trackpad, direct, pinch zoom | None |
| Keyboard | On-screen with key bar, hardware | On-screen, hardware | On-screen with key bar, hardware | On-screen |
| Controllers | Yes | Yes | Xbox, PlayStation, MFi | Same, plus Siri Remote |
| Remote control as pointer | n/a | D-pad moves, OK clicks | n/a | Touch surface moves, click clicks |
| Record, privacy mode, pairing | Yes | Yes | Yes | Yes |
| Microphone to the host | Android 10+ | None | Yes | None |
| Use the device as an extra monitor | Adds a virtual display sized to the screen | |||
Get Mojo
Mojo is early, fast-moving software. Installers and app builds are attached to releases; you can also build everything from source.
macOS
A dmg with FFmpeg bundled. iPhone, iPad and Apple TV builds come from scripts/build-apple.sh with Xcode.
Linux and Android
deb and AppImage packages, and an APK for Android phones, tablets and TVs. Or build from source:
git clone https://github.com/moderniselife/MojoRDP
cd MojoRDP && cargo build --release