DeskVNC agent hub

VNC, RDP and SSH in one native client

Let an agent drive your remote desktops, and take the wheel back at any moment

DeskVNC is a desktop client written in Rust on Tauri 2 that runs on Windows, macOS and Linux. It holds your saved machines, their credentials and their sessions. It also ships dvv, an agent control plane that hands an AI agent those same connections.

What MCP isThe Model Context Protocol, or MCP, is a standard way for an AI agent to call tools inside another program, so it can act in your software rather than only talk about it. dvv is that kind of server, and it speaks about your machines.

Agent plane, measured

Observe then act cycle
19 ms
Actions per second that implies
52 /s
dvv_open and attach
4 ms
Screen at scale: 0.25
25 ms
Installed on the target
none

Measured by the project on a real 1920x1080 Windows desktop over a LAN. The full table and the methodology.

The four call loop, with every argument

What the agent actually does

Open a machine, look at the screen, click and type

The agent works over the ordinary VNC, RDP or SSH connection you already have open. Nothing is installed on the remote machine, because the connection is the one that machine already speaks. Input travels over the protocol to the far end, so the viewer can be minimised while the work carries on.

  • Reads a real desktop

    dvv_screen returns the framebuffer as an image with the size, the geometry generation and an image space beside it, which is what turns a point you pick on the picture into a coordinate on the remote machine.

  • Acts on it

    dvv_click, dvv_type and dvv_key send real pointer and keyboard events. A keystroke follows the remote keyboard layout, so CJK input methods and dead keys arrive intact.

  • Moves files and text

    dvv_files transfers over the machine's own SFTP channel, and dvv_clipboard puts text on the remote clipboard in one message instead of hundreds of key events.

  • Works on SSH terminals

    dvv_term_send writes to a PTY, and dvv_run runs a command on a channel of its own and returns its stdout, its stderr and the exit status the far side reported.

  • Runs several machines at once

    Every machine is its own limb with its own lease, so ten machines are ten independent loops. dvv_group_open returns a group id and dvv_group_run acts on every member concurrently.

  • Hands over to a person

    Click into the pane and the agent is fenced out of that session. Held keys and buttons are released as it goes, so a half finished drag cannot strand the desktop, and one click hands it back.

Every call, with its arguments, is served by the server itself: dvv answers the initialize handshake with its own instructions and returns the full schema for every tool on request. Guide 3 walks the loop end to end.

Quickstart

From download to an agent holding the wheel

Three steps and four commands. Everything below is real syntax taken from the shipped binaries.

  1. Step 01

    Install it

    macOS is signed and notarised, the Windows installer is signed, and Linux ships as a .deb, an .rpm and an AppImage. The page links the build for your platform by name.

    Latest release

  2. Step 02

    Save a machine

    Open the app and press New Host, or paste an address into the bar at the top and press Connect. Addresses read the way you already think of them.

  3. Step 03

    Turn the plane on

    Switch the agent plane on in the AI Agents panel, then register dvv with your agent. The panel also has a button that does the Claude Code registration for you.

Register dvv with Claude Code

Terminal claude mcp add
claude mcp add deskvnc -- /Applications/DeskVNCViewer.app/Contents/MacOS/dvv mcp --stdio

Or with OpenCode

Put this in opencode.json, at the project root or in ~/.config/opencode/opencode.json.

Config opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "deskvnc": {
      "type": "local",
      "command": ["/Applications/DeskVNCViewer.app/Contents/MacOS/dvv", "mcp", "--stdio"],
      "enabled": true
    }
  }
}

For any other client, dvv prints the exact line for it:

Terminal dvv doctor
dvv doctor

dvv setup writes the registration for OpenCode, Pi, Codex and Claude Code itself, keeping a backup and any comments in your config. dvv setup opencode, dvv setup pi, dvv setup codex and dvv setup claude do one agent each.

Ask for something, from a shell

The same surface is available as commands, for an agent that drives a shell rather than an MCP client, and for you at a terminal.

Terminal dvv
dvv hosts                                  # the saved machines and their ids
dvv open front-desk --perceive             # open one, with a screen mirror
dvv control acquire lmb_frontdesk          # take the wheel
dvv screen lmb_frontdesk --scale 0.5 --out ./dvv-screen.png
dvv click lmb_frontdesk 700 400
dvv type lmb_frontdesk "notepad"
dvv key lmb_frontdesk ctrl+s
dvv close lmb_frontdesk
For the person as well as the agent

One window for every machine you look after

The agent plane is optional. The client around it is a working remote desktop tool: a saved host library with live thumbnails, tabs, split panes, credentials in the operating system keychain, clipboard and SFTP file transfer in both directions, reconnection after a drop, screenshots, fullscreen, view only, network discovery and Wake on LAN.

  • 3 protocols VNC, RDP and SSH in one library, each core written rather than wrapped
  • 3 platforms Windows, macOS and Linux, native on each
  • RFB 3.3 to 3.8 VeNCrypt, RA2 and Apple authentication, continuous updates
  • MIT or Apache-2.0 Dual licensed, free and open source
Verified interoperability

The VNC core is filed down against real servers including x11vnc, TigerVNC, QEMU, RealVNC and macOS Screen Sharing. The RDP core covers Windows desktops with NLA, RemoteApp, resolution control and the usual codecs. The SSH core gives a terminal that survives a drop, SFTP transfers, tunnels and PuTTY key files.

Where to go next

The material to act on

  • Guides

    Installing on Windows, macOS and Linux, registering the MCP server, the four call loop, file transfer, clipboard, SSH terminals, several machines at once, the keychain, discovery and Wake on LAN. Copy and paste.

  • Use cases

    Machines that refuse installed agents, an agent that needs to read a screen and act, one window for a mixed estate, and remote support where a person takes the wheel back mid task.

  • Benchmarks

    The measured numbers, the machine they were measured on, and what each one means for a loop you intend to run.

  • The official project page

    Maintained by the project itself, with the screenshots, the feature tour and the release notes.