Skip to content

w3bs fleet desktop: headless Kubuntu desktop in Docker for AI agents (CLI 0.1.7) - #61

Merged
ralyodio merged 1 commit into
mainfrom
fleet-desktop-kubuntu
Oct 15, 2026
Merged

ralyodio merged 1 commit into
mainfrom
fleet-desktop-kubuntu

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

On a server with no desktop, one command gives it one and shares it on w3bs.org/fleet:

w3bs fleet desktop start            # view only
w3bs fleet desktop start --control  # also mouse and keyboard from /fleet
w3bs fleet desktop agent claude     # prints the claude mcp add line for the desktop

What runs: a Kubuntu (ubuntu:26.04) container with KDE Plasma, Konsole, the Agentic Desktop Layer (Enabled, MCP 127.0.0.1:7802) and TigerVNC's w0vncserver, which is built from source in the image because Ubuntu's TigerVNC 1.15 has no Wayland server.

No GPU needed: KWin drives the kernel's vkms virtual display, and Mesa composites with OpenGL on the CPU. start loads vkms once through sudo and persists it. The two alternatives I tried both fell back to QPainter, which can't screencast:

  • KWin nested inside Xvnc;
  • KWin on a vgem render node.

VNC: only on a 0600 Unix socket. There's no TCP port and no password. The agent's --vnc now accepts unix:/path.

Known compromise: KWIN_WAYLAND_NO_PERMISSION_CHECKS=1 inside the container. Ubuntu's KWin 6.6 doesn't trust the KDE portal there, so the screencast had no source. Everything in that compositor belongs to the one agent desktop.

Proof:

  • On dev3 (Ubuntu 26.04 VM, no GPU), w3bs fleet desktop start --control took 12 s with the image cached. Production shows dev3 shared, reachable and listening.
  • The desktop layer typed into Konsole, and the VNC socket showed Plasma with that text.
  • desktop/tests/rig/fleet-screen.sh passes 11/11 over TCP and 11/11 with VNC_UNIX=1.
  • CLI tests pass, including 3 new ones. Server tests pass 32/32.

🤖 Generated with Claude Code

…s, watched on /fleet (CLI 0.1.7)

On a server with no desktop, `w3bs fleet desktop start [--control]` gives it one and shares it
on w3bs.org/fleet: press View screen. Asked for while dev3 (Ubuntu 26.04 VM, no GPU) had
nothing to show.

- desktop/packaging/kubuntu: ubuntu:26.04 image with Kubuntu's KDE (KWin, Plasma, Konsole,
  KDE portal), TigerVNC 1.16's w0vncserver built from source (Ubuntu ships 1.15, which has no
  Wayland server), and the Agentic Desktop Layer started Enabled (MCP 127.0.0.1:7802).
- No GPU: KWin drives the kernel's vkms virtual display and Mesa composites with OpenGL on the
  CPU. (KWin nested in Xvnc and on a vgem render node both fall back to QPainter, which has no
  screencast.) `start` loads vkms via sudo once and persists it in modules-load.d.
- VNC only on a 0600 Unix socket in ~/.local/share/w3bs/desktop/vnc: no TCP port, no password.
  The agent's --vnc now takes unix:/path.
- KWIN_WAYLAND_NO_PERMISSION_CHECKS inside the container: Ubuntu's KWin 6.6 does not trust the
  KDE portal there, so w0vncserver and the desktop layer got no screen; everything in that
  compositor is the one agent desktop.
- `w3bs fleet desktop start|stop|status|logs|agent <name>`; `agent` registers an MCP agent on
  the desktop and prints the claude mcp add line. Image tag = hash of the embedded build files.
- docs/fleet-screen.md: "A headless desktop for AI agents"; /fleet page hints.

Proof: on dev3, `w3bs fleet desktop start --control` -> production shows it shared, reachable,
listening; the desktop layer typed into Konsole and the VNC socket showed Plasma + the text.
Rig (desktop/tests/rig/fleet-screen.sh) 11/11 over TCP and 11/11 with VNC_UNIX=1. CLI tests
pass (+3), server tests 32/32.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ralyodio
ralyodio merged commit e5890fa into main Oct 15, 2026
23 checks passed
@ralyodio
ralyodio deleted the fleet-desktop-kubuntu branch October 15, 2026 02:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant