Security code
Both sides see the same three-part code, derived from the connection's encryption fingerprints. Read it aloud. If it matches, nobody is in the middle. Not an attacker, and not even your own server.
Self-hosted remote desktop
A small agent on the machine you want to reach, a browser tab on your side, and an encrypted peer-to-peer stream between the two. Your server only makes the introduction.
Control from WindowsmacOSLinuxChromeOSAndroidiOS nothing to install on your side
01How it works
A small host agent for Windows, macOS or Linux goes on the machine you want to reach. It gets a 9-digit device ID.
For a one-off, read out the ID and the person at the machine clicks Allow. For machines nobody sits at, issue an unattended access key.
Open your console, pick the device, and the session starts in a tab. Open another tab for the next machine.
02Features
Everything you expect from a remote desktop tool, minus the account on somebody else's cloud.
Works in any modern browser on Windows, macOS, Linux, ChromeOS, Android and iOS. Nothing to install on the controlling side.
One agent for Windows, macOS and Linux on the machine being controlled. Every device gets its own 9-digit ID.
Encrypted video goes straight between the two machines. The server brokers the connection and steps back.
Several technicians can be on one machine at once, and one technician can keep many machines open in tabs.
The person at the machine sees who is asking and must click Allow. No click, no session.
Scoped, time-boxed, use-limited and revocable keys for machines nobody sits at. See how keys work.
For networks too strict for a direct path, add a relay. The stream stays encrypted end to end between the peers.
Admin, Technician, Device owner and a read-only Auditor. See the roles.
Node and SQLite in a single Docker container. No external database to run. See the deploy steps.
03Security · not in the other tools
Remote access is a master key to a computer. Farhand treats it that way, for the technician and, more importantly, for the person on the other end.
Both sides see the same three-part code, derived from the connection's encryption fingerprints. Read it aloud. If it matches, nobody is in the middle. Not an attacker, and not even your own server.
Every action is hash-chained to the one before it. Edit or delete a line and the chain breaks where anyone can see it.
Remote-access tools are the number one vehicle for support scams. On a first-time connection, the host gets a plain-language warning before anything else.
One hotkey on the host kills every session and locks the door behind them. No menu, no asking nicely.
Device owners see who connected, when, for how long, and how they got in. Every session, not only the suspicious ones.
A local override on the machine itself. Switch it on and every connection needs a click from the person sitting there, whatever unattended key is presented. The human at the keyboard outranks the key.
04Access keys
A permanent password to a machine is a liability. A Farhand key says exactly what it opens, for how long, and how many times.
05Roles
Runs the server: users and roles, every device and key, and the whole audit trail.
Works the machines they have been granted. Many open in tabs, alongside other technicians.
Enrols their own machines, issues and revokes keys for them, and reads every session receipt.
Reads devices, sessions and the audit log. Cannot open a session or change a thing.
06Deploy
Farhand is built for Dokploy. Node and SQLite live inside the container, so there is no database to provision and one volume to back up.
Point it at the Farhand repository. The compose file on the right is all of it.
Fill in ADMIN_EMAIL and ADMIN_PASSWORD. Change the password from the default before you deploy.
Route it to port 8080. Dokploy handles HTTPS through Traefik and Let's Encrypt.
Open the console, install the host agent on your first device, and connect.
services:
farhand:
build: .
environment:
- ADMIN_EMAIL=you@example.com
- ADMIN_PASSWORD=change-me
volumes:
- farhand-data:/data
expose:
- "8080"
volumes:
farhand-data:
All state lives in farhand-data. Back up that one volume.