Remote Desktop
Overview
ET Ducky’s browser-based remote desktop lets you view and control any online agent’s screen directly from the dashboard. No VPN, no VNC client, no RDP configuration, no firewall rules — just click “Remote” on any online agent and start working.
Remote desktop sessions run alongside existing features. You can have a live query session and a remote desktop session with the same agent simultaneously.
Starting a Session
- Navigate to the Agents page
- Click the Remote button on any online agent row (the button is disabled for offline agents)
- A fullscreen modal opens with a connecting overlay
- The server creates a session record and signals the agent via SSE
- The agent initializes screen capture and connects its WebSocket
- Once both sides are connected, frames begin streaming and the overlay disappears
Typical connect time: 1–3 seconds on LAN, 2–5 seconds on WAN.
Toolbar Controls
| Control | Description |
|---|---|
| Status Indicator | Color-coded dot: amber (connecting), green (connected), red (disconnected) |
| FPS / Bandwidth | Live readout of frames per second and data throughput |
| Quality | Dropdown: Low (30), Medium (50), High (70), Ultra (90). Adjusts encoding quality in real time |
| Scale Mode | Fit (maintain aspect ratio), Stretch (fill viewport), Native (1:1 pixels with scroll) |
| Display Picker | Appears when the agent has multiple monitors. Each display gets a button; click to focus one, or shift-click to add additional displays to the active set and span the canvas across them (see Multi-Display Sessions below) |
| Keyboard Grab | Toggle to capture browser shortcuts (Ctrl+Tab, Alt+F4, etc.) and send them to the remote system |
| Fullscreen | Enter true browser fullscreen for an immersive experience |
| Disconnect | End the session, release all resources, and close the modal |
Input & Clipboard
Mouse
- Mouse movement, left/middle/right click, and scroll wheel are all forwarded to the remote agent
- Coordinates are normalized (0.0–1.0) and translated to absolute screen coordinates on the agent via SendInput
- Mouse move events are throttled to 60/second to prevent overwhelming the connection
Keyboard
- All key presses are captured using browser
KeyboardEvent.codevalues and mapped to Windows virtual key codes - Modifier keys (Ctrl, Alt, Shift, Win) are tracked independently to prevent stuck-key issues
- Enable Keyboard Grab in the toolbar to intercept browser shortcuts and forward them to the remote system
- All held modifier keys are automatically released when a session ends
Clipboard
- Text clipboard syncs bidirectionally between browser and agent
- Agent monitors clipboard changes via
AddClipboardFormatListenerand pushes updates instantly - Browser clipboard access requires page focus (Clipboard API security requirement)
Performance & Limits
| Metric | Typical Value |
|---|---|
| Input latency | <50 ms LAN, <150 ms WAN |
| Frame rate (idle) | 1–5 FPS |
| Frame rate (active) | 15–30 FPS |
| Bandwidth (low quality) | 0.5–2 Mbps |
| Bandwidth (high quality, 1080p) | 2–5 Mbps |
| Capture method | DXGI Desktop Duplication (GPU-accelerated); GDI+ fallback for RDP sessions |
| Encoding | WebP (default) or JPEG; dirty-region encoding to minimize data |
| Max concurrent sessions | 2 per organization |
| Idle timeout | 15 minutes |
Adaptive quality: The encoder automatically reduces quality when bandwidth is constrained and increases it when headroom is available.
Troubleshooting
- Black screen after connecting: The agent may be in an RDP session where DXGI is unavailable. The agent automatically falls back to GDI+ capture, which may take an extra second.
- High latency or stuttering: Reduce quality to Low or Medium in the toolbar. Check network connectivity between the agent and the ET Ducky server.
- Keyboard shortcuts not working remotely: Enable Keyboard Grab in the toolbar to intercept browser shortcuts.
- Clipboard not syncing: Ensure the browser tab is focused. The Clipboard API requires page focus for security reasons.
- “Agent is not online” error: The agent must be online (green status) to start a remote desktop session. Check agent connectivity.
- “Maximum sessions” error: Your organization has 2 concurrent remote desktop sessions active. End one before starting another.
Multi-Display Sessions
On agents with multiple monitors, you can capture and control more than one display in a single session. Useful when you’re troubleshooting an app whose window crosses the bezel, or when you want to see a dashboard on one monitor while you click around on another.
Selecting displays
- The toolbar shows one button per monitor (e.g. Display 1, Display 2, Display 3).
- Click a button to focus that display — the canvas resizes to that monitor’s resolution and only that monitor is captured.
- Shift-click a button to add it to the active set. The canvas grows to span the union of selected monitors and the frame stream switches to a composite encoder that stitches them together server-side.
- Shift-click an already-active display to remove it from the set (one display always stays selected).
Input mapping
When multiple displays are active, mouse and keyboard input are routed using MOUSEEVENTF_VIRTUALDESK coordinates — coordinates map to the agent’s virtual-desktop space rather than a single screen. Click anywhere on the composite canvas and the cursor lands on the corresponding monitor on the remote host.
Performance impact
Each additional display roughly doubles the bytes-per-frame budget. On a low-bandwidth link, drop the Quality dropdown to Medium or Low before adding more monitors. The composite stream uses the same encoder pipeline (DXGI Desktop Duplication on Windows, x11vnc on Linux), so the per-monitor frame rate stays consistent.
Multi-display support is available in agent versions 2.0.1.2 and later, both Windows and Linux. Older agents will only expose a single display button until upgraded.