Platform support
What Roomler does on Windows, Linux and macOS, feature by feature, and the reason wherever an operating system cannot do something.
Roomler is one product on three operating systems. When a feature works on one
of them, it works on the other two, or the device tells you why it cannot:
on the control itself, in roomler status, and in the dashboard. A control
that is greyed out always carries the deviceβs own reason.
These tables describe agent 0.4.148; a row that names 0.4.149 is coming in the
next release. The engineering record behind them, with
the code each verdict comes from, is
docs/platform-support.md.
Which install does what
Most of this page follows from one question: does the agent run as the machine, or as you? Joining the private network on a real network adapter needs the machineβs own identity on every OS. Showing your desktop needs a way into your session.
| OS | Install | Runs as | Gives you |
|---|---|---|---|
| Windows | Machine β system | a service, with SYSTEM in your session | your desktop, the lock and sign-in screens, the private network |
| Windows | Machine β attended | a service, with you in your session | your desktop, the private network |
| Windows | Per user | you, from sign-in | your desktop |
| Linux | System (--system) |
root, from boot | the private network; your GNOME or KDE desktop while you are at it and it is unlocked |
| Linux | Per user (the default) | you | your desktop |
| macOS | the per-user half (the default) | you, in your login session | your desktop |
| macOS | the root half (--daemon-token) |
root, from boot | the private network |
A Mac needs both halves for both, and shows up as two devices.
No admin rights? You can still join the network
An install that runs as you cannot create a network adapter, but it can join
the network in netstack mode: set ROOMLERD_OVERLAY_NETSTACK_SOCKS to a
free port for the agent, and your apps reach the other devices through that
local SOCKS5 port. Roomler SSH into this machine still works. A second
organization chooses it with roomler org overlay <org> netstack
(multi-org).
Remote desktop
| Feature | Windows | Linux | macOS |
|---|---|---|---|
| Your desktop, with a system install and nothing configured | β | π‘ GNOME and KDE, while your session is unlocked and you can be told who is viewing | π‘ an opt-in |
| The lock screen and sign-in screen, nobody signed in | β Machine β system | π‘ only when you switch screen capture on yourself | β |
| The computerβs sound | β | β | β |
| Recording with sound | β | β | π‘ picture only |
| Ctrl+Alt+Del | β the real one, from a Machine β system install where policy allows | β sent as ordinary keys, which GNOME and KDE use to log out | β hidden: it means nothing on a Mac |
| An approval panel on the host | β | β X11 Β· β Wayland: the desktop app asks | β from agent 0.4.153 Β· before it, the desktop app asks |
| βThe host is lockedβ before you connect | β | β | β from agent 0.4.150 |
| βThe host is lockedβ while you are connected | β | β | β from agent 0.4.150 |
| The hostβs cursor, drawn by your browser | β | β system installs, and X11 desktops from agent 0.4.147; a per-user Wayland desktop draws it into the picture | β the cursor is part of the picture |
| Remote Apps | β | β X11 Β· π‘ Wayland: Xwayland windows | β |
| Show and switch the keyboard layout | β | β X11 desktops with a per-user install, from agent 0.4.148; on GNOME the layout is shown, and you switch it with GNOMEβs own shortcut (Super+Space) Β· β Wayland desktops and system installs | β |
| Typing text on a non-US layout | β | β on any layout from agent 0.4.147; before it, a system install types only on a US layout, and refuses rather than mistype | β |
| Match the remote display to your window | β | β X11 desktops with one screen and a per-user install, from agent 0.4.148, and the agentβs own virtual desktop Β· β Wayland desktops, system installs, several screens | β |
| Clipboard: text, formatted text and images | β | β per-user Β· β a system install | β |
| A copied image arrives by itself | β | β X11 desktops with a per-user install, from agent 0.4.148 Β· β Wayland desktops and system installs: on request | β on request |
| An idle desktop costs little CPU | β | β | β |
| Privacy mode (the person at the computer sees a notice, not the desktop) | β Windows 10 2004 and later | β | β |
| Lock the computer when the last session ends | β | β | β |
The same on all three: the main display, high-DPI screens, hardware video encoding (on a Mac, H.264 and HEVC), the relative mouse for 3D apps and games, touch controls, keep-busy, recording, file transfer, and the consent flow. The permissions each OS asks for are on per-OS permissions.
Private network
| Feature | Windows | Linux | macOS |
|---|---|---|---|
| Join the network on a real adapter | β Machine installs | β system install | β the root half |
| One adapter per organization | β | β | β |
| Use an exit node | β | β | β IPv6 when your connection has it, otherwise blocked rather than leaked |
| Be an exit node or a subnet router, IPv4 | π‘ needs Windowsβ Hyper-V; never on Home | β | β the root half |
| Be an exit node, IPv6 | β | β | β where the Mac has a global IPv6 route |
| Device names resolve on the computer (MagicDNS) | β | π‘ with systemd-resolved; when nothing asks it, roomler status says so |
β |
| Your firewall lets the network in | β a Machine install adds its own rule | π‘ yours to open; roomler status names the zone |
β yours to open |
The same on all three: direct and relayed connections, the relay floor over 443, tunnels, SOCKS5, access rules, key rotation and ephemeral devices.
SSH and remote commands
| Feature | Windows | Linux | macOS |
|---|---|---|---|
| Run as the machine | π‘ SYSTEM on a Machine β system install, or once an admin anchors the device | β root | β root, on the root half |
| Run as the person at the screen | π‘ where SYSTEM serves the session | β | β |
| Run as a named account | β | β | β |
SFTP and scp as the person at the screen |
π‘ where OpenSSHβs sftp-server is installed |
β | β |
| A session starts in your home folder | β | β | β |
More on Roomler SSH.
On the computer itself
| Feature | Windows | Linux | macOS |
|---|---|---|---|
| The desktop app | β | π‘ a .deb and an .rpm, for x86_64 and arm64; nothing for a computer with neither package manager, such as Arch |
β |
| The computer stays awake during a session | β | β | β except a closed laptop with no external display |
| A received file lands in your own Downloads | β | β | β |
| The setup wizard installs the agent | β | β use the one-line install | β use the one-line install |
Installs and updates
| Feature | Windows | Linux | macOS |
|---|---|---|---|
| Updates itself, per-user installs included | β | β | β |
| Checks a download is the version it was offered as | β | β | β |
| One-command uninstall | β | β | β |
| An ephemeral device removes itself when it stops | β | β | β |
The tunnel client (roomler self-update) updates itself |
β | β from the next tunnel release | β from the next tunnel release |
| Processors the agent runs on | π‘ x64; β ARM | β x86_64 and arm64 | π‘ Apple silicon; β Intel |
| Hardware video encoding on Linux ARM | β | β | β |
| The tunnel client and the wizard on Linux ARM | β | β from 0.4.149: the wizard with the agent release, the tunnel client with the first tunnel release from then on | β |
Where the operating system rules it out
| Feature | OS | Why |
|---|---|---|
| Ctrl+Alt+Del | Linux | The desktop decides what the keys do, and GNOME and KDE log you out. The button sends the keys and says so |
| Ctrl+Alt+Del | macOS | The keys have no meaning on a Mac, so the button is hidden |
| An approval panel on a Wayland desktop | Linux | GNOME and KDE let no ordinary app draw over the desktop. The desktop app asks instead |
| The lock screen and sign-in screen | macOS | Capture needs a signed-in session. Reaching the login window would take a different kind of install, managed through MDM |
| Privacy mode | macOS | Since macOS 15, no app can keep a window out of screen capture, so the notice would be streamed too |
| Staying awake with the lid closed | macOS | A laptop with no external display sleeps when the lid closes, whatever any app asks |
| Being an IPv6 exit node | Windows | Windowsβ built-in NAT has no IPv6. IPv6 through a Windows exit is blocked, never leaked |
| Running as a named account | Windows | Windows cannot start a program as another account without that accountβs password |