termdesk
A computer inside your terminal.
termdesk draws a real desktop in your kitty, Ghostty or WezTerm pane. You drive it with your own mouse and keyboard. Your coding agent can drive it too, and you see every click.
$ curl -fsSL https://termdesk.warpfield.me/install | bash
macOS and Linux · about 35 MB · Python 3.9+ · Docker only for sandboxes · termdesk uninstall removes it all
See it in 30 seconds
A desktop drops into a terminal pane. Then an agent clicks by number, types a spreadsheet row, and termdesk catches it typing into a button.
31 seconds · every clip is a real termdesk 0.4.0 recording
What it does
$ termdesk mac.local:5900
Shows your Mac or Linux box in the pane you're already in.
$ termdesk action state
Hands your agent the screen as numbered buttons and fields. It clicks by number.
$ termdesk sandbox up
Starts a throwaway desktop in Docker, with Firefox and LibreOffice. Wreck it, then delete it.
$ termdesk mcp
Works with any agent: Claude Code through its skill, anything else over MCP or the shell.
Try it in two minutes
$ termdesk sandbox up --name work # first run downloads the desktop image $ termdesk window work # opens a window with the desktop $ termdesk action state # the UI as numbered elements [3] push button "Web Browser" @640,752 48x48 $ termdesk action click 3 # Firefox opens $ termdesk action wait-for "enter address" [11] entry "Search or enter address" @272,78 788x28 [focused, editable] $ termdesk action set-value 11 https://example.org verified=True $ termdesk action key Return
How it works
- Frames
- The desktop streams over VNC. termdesk redraws only the pixels that change. A full 1280x800 frame is about 60 KB, a blinking cursor about 80 bytes.
- Input
- Your keys and mouse go back as VNC events. Modifiers, key repeat and releases all work.
- Semantics
- In a sandbox, your agent reads each button's role, name and position, and the value of every visible table cell, from the accessibility tree. When it types, it hears back whether the text landed.
- Control
- An
AGENT ACTINGbadge shows while your agent drives. Grab the mouse and you're back in charge.
Prior work, credited
desktui drew a VNC desktop with kitty graphics first. sshdesk added an agent CLI over ssh. terminal-browser did it for a browser and got this started.