rdp-cli
RDP command line on Windows, Mac and Linux
Connect once. Observe the screen, send an action, and check its result. A local viewer is optional.
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.
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.
.\rdp-cli.exe --help02 / 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.
$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.
.\rdp-cli.exe screenshot --session SESSION --out ./before.png04 / 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.
.\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.png05 / 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.
.\rdp-cli.exe watch --session SESSION --viewer window
.\rdp-cli.exe watch --session SESSION --viewer webOpen 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.
/Applications/rdp-cli.app/Contents/MacOS/rdp-cli install-cli
rdp-cli --help02 / 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.
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_password03 / 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.
rdp-cli screenshot --session SESSION --out ./before.png04 / 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.
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.png05 / 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.
rdp-cli watch --session SESSION --viewer window
rdp-cli watch --session SESSION --viewer webRun 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.
chmod u+x ./rdp-cli-linux-x86_64
./rdp-cli-linux-x86_64 --help02 / 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.
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_password03 / 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.
./rdp-cli-linux-x86_64 screenshot --session SESSION --out ./before.png04 / 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.
./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.png05 / 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.
./rdp-cli-linux-x86_64 watch --session SESSION --viewer window
./rdp-cli-linux-x86_64 watch --session SESSION --viewer webRun 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.
- Download · Linux · ARM64
rdp-cli-linux-arm64aarch64 · 64-bit
chmod u+x ./rdp-cli-linux-arm64
./rdp-cli-linux-arm64 --help02 / 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.
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_password03 / 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.
./rdp-cli-linux-arm64 screenshot --session SESSION --out ./before.png04 / 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.
./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.png05 / 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.
./rdp-cli-linux-arm64 watch --session SESSION --viewer window
./rdp-cli-linux-arm64 watch --session SESSION --viewer webExamples 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.
Use it with your agent
Give your agent the executable path, authorized target or session, and the outcome you want. The optional rdp-cli-agent skill documents the command workflow; your agent can read SKILL.md directly. It is not required to connect.
rdp-cli-agent / SKILL.md ↓Connection and access settings
RDP certificate policy currently defaults to ignore for compatibility. Inspect connect --help and configure validation to suit your environment. The website does not relay connections or collect remote credentials. Browser viewing is for LAN/VPN; VNC transport needs a trusted network.