RDP / VNC · BUILT FOR AI AGENTS

Remote desktops.
Built for AI agents.

Observe and operate remote computers with commands. Send files. Bring results back.
Watch, pause, or take control of the same session whenever you need.

Free to use·Windows/macOS/Linux

One remote desktop. A complete workflow.

Let your agent use desktop applications, stay involved when it matters, and bring the finished work back.

rdp-cli_/studio-windowsRDP
Connected · Remote WindowsIllustration
How does your agent see and operate this computer?
Select a step · Illustrated commands
Your agent calls
rdp-cli screenshot --session SESSION --monitor M1 --out before.png

SESSION, M1, X/Y, and OBSERVATION are placeholders. Use values from the actual session and screenshot responses.

Remote display 1before.pngYour agent

screenshot saves the current frame from remote display 1 as before.png. Your agent reads that image to locate its next action.

Example: locate the target position on the video timeline in the image.

The screenshot response also includes data.observation, tying the next input to the frame just observed.

The window below lets people watch the same session. Your agent gets remote PNGs without opening it. PNGs exclude viewer toolbars, agent panels, and action hints.

Remote Windows desktopController: Agent
01Apps & actionsbefore.png · Capture source
Work files
Coastline · Video projectEditing workspace
Media
coast_01
coast_02Soundtrack
A coastal road, ocean waves, and an orange sports car. AI-generated sample film imagery.
Preview16:9
EVERY JOURNEY STARTS SOMEWHERE.COASTLINE
00:07 / 00:30Fit to view
Timeline00:00      00:10      00:20      00:30
V1T1A1
coast_01.mp4
coast_02.mp4
coast_03.mp4
COASTLINE · Title
Original soundtrack
Search10:24
02Preview & reference
Work files
Film preview
EVERY JOURNEY STARTS SOMEWHERE.COASTLINE
00:07 / 00:30
coastline.mp4 16:9
Search10:24
One RDP session · Two remote displaysExplore this feature
↳ Illustrated editing workflow · Your agent calls rdp-cli; no built-in AI editor.AI-generated illustration. See the real spreadsheet and video workflows

ONE COMPLETE REMOTE TASK

From source files to finished work.

01

Send the source materials

Upload files or folders to the RDP session exchange drive for the remote app to use.

02

Operate the remote app

Your agent observes screenshots, clicks and types, then checks the actual result in the app.

03

Verify and bring it back

Save the result to the exchange drive, check it, and download the finished files to your computer.

File exchange requires drive redirection to be allowed by the RDP server.

ALWAYS IN YOUR HANDS

Your agent works.
You stay in control.

Open an existing session from the menu bar or tray. Watch the same desktop in a native window or authorized browser, with visible clicks and drags. Pause, take the keyboard and mouse, then hand control back. Several people can watch; only one controller operates at a time. Browser access is for LAN or VPN.

See how to get started ↗
rdp-cli / studio-windowsIllustration
Agent is in control

This illustrates a handoff. It does not connect to a computer.

TOOLS FOR THE WHOLE REMOTE TASK

See it. Work on it. Bring it back.

From one window to multiple displays. From a few lines of text to an entire folder. Connect your agent’s actions, your oversight, and the finished result.

01 / RDP

Two displays.
One workflow.

Keep footage or data on one display and a preview or report on the other. Your agent can observe the whole desktop or capture and operate a specific display.

  • Capture and target individual displays. Drag across screens.
  • Open per-display native windows, or switch screens in the browser.
  • View a remote dual-display workspace even from a single-screen computer.

Requires a multi-monitor-capable RDP session. Resizing a viewer does not change the remote display layout.

Explore this feature ↗

Two displays in the same session

1Sources / data
2Preview / report
RDP · studio-windows

Focus on one screen. Or see the whole picture.

02 / RDP

Send the materials.
Bring back the work.

Send footage, spreadsheets, or an entire project folder to the session exchange drive. Let your agent work in the remote app, save the result, and bring the film, report, or folder back.

  • Upload and download files or folders with their directory structure.
  • Follow individual transfer progress and results. Cancel when needed.
  • Choose whether to replace existing files; transferred content is verified.

RDP drive redirection must be allowed by the server. The file panel manages the session exchange drive, not arbitrary remote disks.

Explore this feature ↗

Illustrated file exchange

▱ Your computer▣ RDP exchange drive
↗
project-assets/Send materials · Ready for the remote app
✓
✳ Work in the remote app
↙
quarterly-report.pdfBring back results · Save, then retrieve locally
✓

03 / RDP

Remote work
has a soundtrack.

Hear remote apps in a native window or authorized browser. Review a film’s soundtrack or check app audio. Each viewer adjusts its own volume independently.

  • Multiple authorized viewers can listen at the same time.
  • Take control and explicitly enable a microphone when voice input is needed.
  • Handing back control or disconnecting stops capture. Enable it again to resume.

RDP audio and microphone support depend on server capabilities and permissions. A browser microphone also requires a secure context and device permission.

Explore this feature ↗

Illustrated playback and microphone

Audio from the remote app
Native window
Authorized browser

Independent volume

Microphone returnTake control, then choose to enable it
Off by default

Make remote desktops part of your workflow.

01

Commands your agent can work with

Connect, capture the remote screen, send clicks, drags, text, or shortcuts, then capture again to check the result. JSON responses, status, and explicit errors support your agent or scripts. Normal command operation needs no local viewer.

Observe → act → verify

Explore this feature ↗
02

Multiple computers. Persistent sessions.

Manage several sessions with one tool and keep using each session ID in later commands. Closing a read-only viewer leaves the connection running. Reconnection pauses input so you can check the current screen before explicitly resuming.

Check the connection, controller, and current state

Explore this feature ↗
03

Find sessions in your menu bar or tray

Search current sessions from the Mac menu bar, or open the Windows tray menu. See targets, connection state, and controllers. Open a window or browser, pause a session, or disconnect it.

Open the existing session without a second login. On Linux, use the searchable session panel; a status icon is also available when the desktop supports it. Without a tray, open the panel with presence show --panel.

Explore this feature ↗
04

Follow each remote action

Click rings, drag paths, scroll directions, shortcuts, and typing progress show where your agent is working. Turn hints off when you prefer. They do not echo typed text or appear in the agent’s screenshots.

See what happens and decide when to step in

Explore this feature ↗
05

Move text into the task

Explicitly read or write the remote text clipboard, then paste into the target app. Useful for addresses, paragraphs, and tabular text. Your local clipboard is not automatically synchronized or replaced.

RDP follows server policy; VNC encoding is negotiated

Explore this feature ↗
06

Your computers. Your existing accounts.

Connect to existing RDP or VNC services with the same observation and input workflow. RDP supports local and domain accounts and stored credential references. Browser access grants separate viewing, control, and file permissions.

Windows / macOS / Linux clients · Browser access over LAN / VPN

Explore this feature ↗

Files, audio, and the multi-monitor features above require RDP and server support. VNC supports display, input, viewing, and handoff; it does not provide these file, audio, microphone, or active display-layout features.

Recorded product example · not a live session

Explore all features →

Exchange files and folders

Transfer a report folder, edit a document remotely and retrieve the saved result; this is not arbitrary access to remote disks.

From a remote task to a file you can use

Two real workflows: an Agent used rdp-cli commands on a Mac to operate Windows 11 applications over RDP, then retrieved the finished files.

LibreOffice Calc · RDP

Turn a spreadsheet into a report

  1. rdp-cli files upload

    Upload a workbook with 12 months of sample service data.

  2. rdp-cli screenshot → click / type / key

    Select the data, create a two-series chart, and add three SUM formulas in the remote application.

  3. rdp-cli files download

    Save and retrieve the XLSX. Verify the chart and totals: 15,230 requests, 14,933 resolved, 14,140 within target.

Remote Windows desktop showing the saved Calc workbook, monthly data, an editable two-series chart and the totals row. View original screenshot ↗

Shotcut · RDP

Trim a clip and retrieve the export

  1. rdp-cli files upload

    Upload an eight-second animation and open it in Shotcut.

  2. rdp-cli screenshot → click / type / key

    Add it to the timeline and trim its duration to four seconds through the remote interface.

  3. rdp-cli files download

    Export MP4 and retrieve it. Verify 96 video frames at 24 fps, 960 × 540, and a matching transfer checksum.

Remote Windows desktop showing Shotcut with a four-second timeline, animation preview and a completed export job. View original screenshot ↗

Recorded on 21 September 2026 in English. Original screenshots are unchanged. The workbook uses fictional data; the video uses a self-created animation. These examples demonstrate task completion, not a performance benchmark.

START ON YOUR COMPUTER

Choose your platform.
Start your next task.

Choose the computer that runs rdp-cli.
Give your agent the tools for remote work.

01 / INSTALL & CHECK

Download the EXE. Open PowerShell.

Choose the x64 (64-bit) or x86 (32-bit) EXE. Put rdp-cli.exe in a folder and open PowerShell in that folder.

Signed x64 and x86 EXEs. No additional runtime required.

PowerShell
.\rdp-cli.exe --help
02 / CONNECT

Enable RDP on the target first. Replace 192.0.2.20 and USER. The hidden prompt passes your password through standard input. Save data.session from the JSON response.

PowerShell
$secret = Read-Host 'Password' -AsSecureString
$savedEncoding = $OutputEncoding
try {
  $OutputEncoding = [System.Text.UTF8Encoding]::new($false)
  [System.Net.NetworkCredential]::new('', $secret).Password |
    .\rdp-cli.exe connect --host 192.0.2.20 --user USER --password-stdin
} finally {
  $OutputEncoding = $savedEncoding
  $secret.Dispose()
}
03 / OBSERVE

Replace SESSION with the connection result. Open before.png, locate the target app and input position, and save data.observation from the screenshot response.

PowerShell
.\rdp-cli.exe screenshot --session SESSION --out ./before.png
04 / ACT & VERIFY

Locate an input field in the screenshot, then replace X, Y, and OBSERVATION. Capture again after clicking and use the new observation for typing. Inspect after.png to verify the actual remote result.

PowerShell
.\rdp-cli.exe click --session SESSION --desktop --x X --y Y --observation OBSERVATION
.\rdp-cli.exe screenshot --session SESSION --out ./focused.png
.\rdp-cli.exe type --session SESSION --text "Remote task completed." --observation NEW_OBSERVATION
.\rdp-cli.exe screenshot --session SESSION --out ./after.png
05 / WATCH IF NEEDED

Open the same session when a person wants to watch. It starts read-only and offers pause, takeover, and handoff. Normal agent commands do not require this window.

PowerShell
.\rdp-cli.exe watch --session SESSION --viewer window
.\rdp-cli.exe watch --session SESSION --viewer web
01 / INSTALL & CHECK

Open the DMG. Enable the CLI.

Drag rdp-cli to Applications, then run these commands in the macOS terminal (zsh).

Choose the DMG for your Mac: Apple silicon (macOS 13 or later) or Intel (macOS 12 or later). Check the download page for release availability.

zsh
/Applications/rdp-cli.app/Contents/MacOS/rdp-cli install-cli
rdp-cli --help
02 / CONNECT

Enable RDP on the target first. Replace 192.0.2.20 and USER. The hidden prompt passes your password through standard input. Save data.session from the JSON response.

zsh
read -r -s "rdp_password?Password: "
printf '\n'
printf '%s' "$rdp_password" | rdp-cli connect --host 192.0.2.20 --user USER --password-stdin
unset rdp_password
03 / OBSERVE

Replace SESSION with the connection result. Open before.png, locate the target app and input position, and save data.observation from the screenshot response.

zsh
rdp-cli screenshot --session SESSION --out ./before.png
04 / ACT & VERIFY

Locate an input field in the screenshot, then replace X, Y, and OBSERVATION. Capture again after clicking and use the new observation for typing. Inspect after.png to verify the actual remote result.

zsh
rdp-cli click --session SESSION --desktop --x X --y Y --observation OBSERVATION
rdp-cli screenshot --session SESSION --out ./focused.png
rdp-cli type --session SESSION --text "Remote task completed." --observation NEW_OBSERVATION
rdp-cli screenshot --session SESSION --out ./after.png
05 / WATCH IF NEEDED

Open the same session when a person wants to watch. It starts read-only and offers pause, takeover, and handoff. Normal agent commands do not require this window.

zsh
rdp-cli watch --session SESSION --viewer window
rdp-cli watch --session SESSION --viewer web
01 / INSTALL & CHECK

Run one file

Download the Linux x86_64 file, give it execute permission, then run it in your terminal. No administrator access is needed.

One static ELF for the listed x86_64 systems. Other versions and CPU architectures are outside this release scope.

Bash
chmod u+x ./rdp-cli-linux-x86_64
./rdp-cli-linux-x86_64 --help
02 / CONNECT

Enable RDP on the target first. Replace 192.0.2.20 and USER. The hidden prompt passes your password through standard input. Save data.session from the JSON response.

Bash
IFS= read -r -s -p 'Password: ' rdp_password
printf '\n'
printf '%s' "$rdp_password" | ./rdp-cli-linux-x86_64 connect --host 192.0.2.20 --user USER --password-stdin
unset rdp_password
03 / OBSERVE

Replace SESSION with the connection result. Open before.png, locate the target app and input position, and save data.observation from the screenshot response.

Bash
./rdp-cli-linux-x86_64 screenshot --session SESSION --out ./before.png
04 / ACT & VERIFY

Locate an input field in the screenshot, then replace X, Y, and OBSERVATION. Capture again after clicking and use the new observation for typing. Inspect after.png to verify the actual remote result.

Bash
./rdp-cli-linux-x86_64 click --session SESSION --desktop --x X --y Y --observation OBSERVATION
./rdp-cli-linux-x86_64 screenshot --session SESSION --out ./focused.png
./rdp-cli-linux-x86_64 type --session SESSION --text "Remote task completed." --observation NEW_OBSERVATION
./rdp-cli-linux-x86_64 screenshot --session SESSION --out ./after.png
05 / WATCH IF NEEDED

Open the same session when a person wants to watch. It starts read-only and offers pause, takeover, and handoff. Normal agent commands do not require this window.

Bash
./rdp-cli-linux-x86_64 watch --session SESSION --viewer window
./rdp-cli-linux-x86_64 watch --session SESSION --viewer web
01 / INSTALL & CHECK

Run one file

Download the Linux ARM64 file for a 64-bit ARM Linux system. Give it execute permission and run it as your normal user.

One static ARM64 ELF for the listed Linux systems, Raspberry Pi 4 and DGX Spark. A 32-bit Raspberry Pi OS installation is not supported.

Bash
chmod u+x ./rdp-cli-linux-arm64
./rdp-cli-linux-arm64 --help
02 / CONNECT

Enable RDP on the target first. Replace 192.0.2.20 and USER. The hidden prompt passes your password through standard input. Save data.session from the JSON response.

Bash
IFS= read -r -s -p 'Password: ' rdp_password
printf '\n'
printf '%s' "$rdp_password" | ./rdp-cli-linux-arm64 connect --host 192.0.2.20 --user USER --password-stdin
unset rdp_password
03 / OBSERVE

Replace SESSION with the connection result. Open before.png, locate the target app and input position, and save data.observation from the screenshot response.

Bash
./rdp-cli-linux-arm64 screenshot --session SESSION --out ./before.png
04 / ACT & VERIFY

Locate an input field in the screenshot, then replace X, Y, and OBSERVATION. Capture again after clicking and use the new observation for typing. Inspect after.png to verify the actual remote result.

Bash
./rdp-cli-linux-arm64 click --session SESSION --desktop --x X --y Y --observation OBSERVATION
./rdp-cli-linux-arm64 screenshot --session SESSION --out ./focused.png
./rdp-cli-linux-arm64 type --session SESSION --text "Remote task completed." --observation NEW_OBSERVATION
./rdp-cli-linux-arm64 screenshot --session SESSION --out ./after.png
05 / WATCH IF NEEDED

Open the same session when a person wants to watch. It starts read-only and offers pause, takeover, and handoff. Normal agent commands do not require this window.

Bash
./rdp-cli-linux-arm64 watch --session SESSION --viewer window
./rdp-cli-linux-arm64 watch --session SESSION --viewer web

Examples use a documentation address and placeholders. Use actual session and observation values from the responses. Always inspect a fresh screenshot to verify the result of an input command.

Full getting-started guide ↗

Start your next remote task. Free.

Choose the platform of the computer that will run rdp-cli, then follow the quick start to connect to your remote desktop.

macOS

DMG

Apple silicon

macOS ≥ 13.0

v0.1.013.6 MB

Download
File details · macOS · Apple silicon

rdp-cli-0.1.0-macos-arm64.dmg

Version
0.1.0
Build
2026100601
Size
13,581,260 bytes
SHA-256
faf510aaeaf43401d966c43ff25a81f079e52969278c3a54338498ad0b846acc

Developer ID signed · Apple notarized

Intel

macOS ≥ 12.0

v0.1.014.4 MB

Download
File details · macOS · Intel

rdp-cli-0.1.0-macos-x86_64.dmg

Version
0.1.0
Build
2026100601
Size
14,369,243 bytes
SHA-256
2eada5fe0a0637502b5e37b23250eb500111c3fb53e88a5192d14af706a2c6ff

Developer ID signed · Apple notarized

Optional source code and license materials. You do not need these attachments to run the product.

Windows

EXE

x64

64-bit

v0.1.026.0 MB

Download
File details · Windows · x64

rdp-cli.exe

Version
0.1.0
Build
20260920-221302-b65992cf
Size
26,015,096 bytes
SHA-256
6429edd303f70eb914f3f7df0a920e0652e5f4aad57f090ea26cff0736060b68

EV code signed · Timestamped

x86

32-bit

v0.1.019.1 MB

Download
File details · Windows · x86

rdp-cli.exe

Version
0.1.0
Build
20260920-221501-6330ad1b
Size
19,109,400 bytes
SHA-256
8fe2e78ba93545b0f9412d07bbb9dcb8f5f5039c16c66ac57e00db8031dec320

EV code signed · Timestamped

Linux

ELF

x86_64

64-bit

v0.1.064.3 MB

Download
File details · Linux · x86_64

rdp-cli-linux-x86_64

Version
0.1.0
Build
2026092203
Size
64,320,352 bytes
SHA-256
c86af91b77a65ae749eb17d0462ccc4bb216579811f2beeb09e8634aea1d09fc

Optional source code and license materials. You do not need these attachments to run the product.

ARM64

aarch64

v0.1.062.6 MB

Download
File details · Linux · ARM64

rdp-cli-linux-arm64

Version
0.1.0
Build
2026092301
Size
62,586,832 bytes
SHA-256
3009f237dbe8db5addb5c0dce4b53a2e0aedaa6a31299ac3e6872d7a0ab8ef9e

Optional source code and license materials. You do not need these attachments to run the product.

Free. No account required.

Installation steps

From the field guide

All articles →