Files
remotelink-docker/agent
monoadmin c361922005 Fix agent crash on missing DISPLAY and relay disconnect error
- Auto-detect DISPLAY on Linux by scanning /tmp/.X11-unix/ sockets,
  falling back to 'w' output, then :0 — runs before mss/pynput import
- ScreenCapture no longer raises on init failure; agent stays connected
  and notifies the viewer with an error message if capture unavailable
- stream_frames skips None frames instead of crashing the WebSocket
- Relay: check for websocket.disconnect message type to avoid
  'Cannot call receive once a disconnect message has been received'

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 16:38:58 -07:00
..

RemoteLink Agent

Cross-platform remote support agent. Streams the screen to the RemoteLink server and handles remote mouse/keyboard input and script execution.

Quick start

Run-once (portable, no install)

# Linux / macOS
python agent.py --server https://remotelink.example.com --enroll YOUR_TOKEN --run-once

# Windows — run the pre-built exe
remotelink-agent.exe --server https://remotelink.example.com --enroll YOUR_TOKEN --run-once

Permanent install (saves config, reconnects on reboot)

python agent.py --server https://remotelink.example.com --enroll YOUR_TOKEN
# Config saved to /etc/remotelink/agent.json (Linux) or C:\ProgramData\RemoteLink\agent.json (Windows)
# Start normally on next run:
python agent.py

Windows service (runs on login / system start)

remotelink-agent-service.exe install
remotelink-agent-service.exe start

Mass deployment (NSIS installer, silent)

RemoteLink-Setup.exe /S /SERVER=https://remotelink.example.com /ENROLL=YOUR_TOKEN

This silently installs, enrolls the machine, installs the Windows service, and starts it — no UI shown.

Building

# Install deps + build portable binary (all platforms)
./build.sh

# Output: dist/remotelink-agent  (Linux/macOS)
#         dist/remotelink-agent.exe + dist/remotelink-agent-service.exe  (Windows)
#         RemoteLink-Setup.exe  (Windows + NSIS installed)

Enrollment tokens

Generate enrollment tokens in the RemoteLink web UI under Admin → Enrollment Tokens.

Each token can optionally have:

  • An expiry date
  • A max-uses limit
  • A label for tracking

Protocol

The agent connects to the relay WebSocket server:

  • ws://<relay-host>:8765/ws/agent?machine_id=<id>&access_key=<key>

It streams JPEG frames as binary WebSocket messages and receives JSON control events.