Hotline Computer v0.11.0

Contract

What makes something a valid computer, what is inside the image, and how it starts.

A guide to Hotline Computer · Reviewed 2026-11-02 · Markdown

The image is a contract, not a binary: anything that serves the same eight tools over streamable HTTP at /mcp, with /health open, is a valid computer. One container is one machine.

Image

hotline-computer  PID 1, supervisor, window manager, bar, MCP server
├── Xvfb       the X server; pixels in RAM, no GPU
├── dbus       the session bus the accessibility tree rides on
├── keyring    gnome-keyring, the Secret Service, unlocked from boot
└── chromium   the visible browser, driven over its DevTools protocol

The image is Debian glibc with a non-root agent account, and runs with every capability dropped. Native apps and GPU-backed terminals use Mesa's llvmpipe when there is no GPU. The agent's input goes through XTEST, and it owns the CLIPBOARD selection directly.

ComponentPurpose
Xvfb and MesaX11 desktop and software OpenGL and EGL
D-Bus and AT-SPIAccessibility for native apps
gnome-keyringThe Secret Service apps and CLIs keep passwords in
ChromiumThe visible browser, over CDP
AlacrittyThe job observer
NixProject packages and repository dev shells
GTK3, WebKitGTK, AppIndicatorNative Linux app runtime and tray
Git, curl, Python, ripgrep, jq, archive toolsRepository and artifact work

Boot

hotline-computer boot is the entrypoint. As PID 1 it forks: the parent reaps every child the kernel hands it and forwards SIGTERM; the child starts Xvfb, dbus-daemon and gnome-keyring, becomes the window manager, and serves. If the display or the bus dies, the machine exits, and the container with it. A keyring that dies is started again.

Hotline

Hotline starts one computer per teammate, gives it the token and the person's secrets, and shows its screen in the desk. Everything in the manual works without Hotline: any MCP client can drive a computer, and any browser can watch it.