Browser viewer
The browser viewer lets you control a computer from a browser, for example on a borrowed laptop where you can’t install anything. The computer you connect to still needs the OpenDesk app to host.
Connect
Section titled “Connect”- Open opendesk.treeot.dev/connect/.
- Enter the Device ID and Password shown in OpenDesk on the other computer. If it asks for one, add the 2FA code.
- Click Connect, and wait for the other side to click Allow (unless it has unattended access on).
The page shows its own YOUR ID at the top. That’s the ID the host sees in its approval dialog. The browser keeps it, so the host sees the same ID next time.
Under Relay you can change which relay the page uses. It has to be the
same relay the host uses, and it must start with wss://.
What works
Section titled “What works”- The remote screen, mouse and keyboard.
- Fullscreen.
- Choosing a monitor, when the host has more than one.
- Reconnecting after a short network drop.
What doesn’t, yet
Section titled “What doesn’t, yet”- No sound, file transfer, clipboard sync or recording. Use the desktop app for those.
- Always relayed. Browsers can’t join the direct UDP path, so the session always goes through the relay. It’s still end-to-end encrypted, but usually slower than the app’s direct connection.
- It can’t host. You can control a computer from the browser, not share the browser’s own screen.
It needs a browser with WebCodecs: a recent Chrome, Edge, Firefox or Safari. In a browser without it, the page says so and the Connect button stays off.
What you’re trusting
Section titled “What you’re trusting”The encryption is the same Rust code the desktop app uses, compiled to WebAssembly, so the relay still sees only sealed bytes.
The difference is where that code comes from. GitHub Pages serves the page fresh on every visit, so each time you load it you’re trusting GitHub and this repository, not a binary you built or checked once. If that matters for your setup, use the desktop app, or build the browser viewer yourself and host it; the README explains how.