Skip to content

feat: add interactive desktop VNC support#11

Merged
steipete merged 1 commit into
mainfrom
feat/interactive-desktop-vnc
May 3, 2026
Merged

feat: add interactive desktop VNC support#11
steipete merged 1 commit into
mainfrom
feat/interactive-desktop-vnc

Conversation

@steipete
Copy link
Copy Markdown
Contributor

@steipete steipete commented May 3, 2026

Summary

  • add --desktop, --browser, and crabbox vnc for managed Linux desktop/browser leases
  • provision loopback-only Xvfb/Openbox/XFCE/x11vnc with per-lease VNC passwords and browser env
  • add coordinator/worker capability labels, docs, 0.5.0 unreleased notes, and static macOS/Windows host-managed VNC guardrails

Verification

  • go build -trimpath -o bin/crabbox ./cmd/crabbox
  • go test -race ./...
  • go vet ./...
  • npm run format:check --prefix worker
  • npm run lint --prefix worker
  • npm run check --prefix worker
  • npm test --prefix worker
  • npm run build --prefix worker
  • npm run docs:check
  • git diff --check
  • Live Linux VNC smoke: managed desktop opened over SSH tunnel and showed XFCE panel/window manager
  • Live static macOS/Windows smoke: --open refuses without --host-managed; non-open path prints managed: false / host-managed credentials

@steipete steipete merged commit 8caabdb into main May 3, 2026
4 checks passed
@steipete steipete deleted the feat/interactive-desktop-vnc branch May 3, 2026 23:31
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: af4fc52247

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread internal/cli/bootstrap.go
var parts []string
if cfg.Desktop {
parts = append(parts, ` retry apt-get install -y --no-install-recommends xvfb xfce4 xfce4-terminal x11vnc xauth dbus-x11 x11-xserver-utils xterm fonts-dejavu-core fonts-liberation iproute2 openssl
install -d -m 0750 -o crabbox -g crabbox /var/lib/crabbox
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use configured SSH user in desktop/browser bootstrap

The new cloud-init fragments hardcode crabbox (for example install -o crabbox -g crabbox ..., service User=crabbox, and chown crabbox:crabbox ...) instead of using cfg.SSHUser. If a repo or environment sets a non-default SSH user, warmup/run --desktop or --browser can fail during bootstrap because that account may not exist, and even partial success leaves /var/lib/crabbox/* unreadable to the actual login user. This regresses previously supported custom sshUser setups.

Useful? React with 👍 / 👎.

Comment thread worker/src/bootstrap.ts
const parts: string[] = [];
if (config.desktop) {
parts.push(` retry apt-get install -y --no-install-recommends xvfb xfce4 xfce4-terminal x11vnc xauth dbus-x11 x11-xserver-utils xterm fonts-dejavu-core fonts-liberation iproute2 openssl
install -d -m 0750 -o crabbox -g crabbox /var/lib/crabbox
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Honor requested SSH user in coordinator cloud-init output

The worker-side cloud-init generator has the same hardcoded crabbox ownership/user assumptions in desktop/browser setup. Coordinator-provisioned leases with a non-default sshUser will hit the same failure mode (missing user during install/chown or inaccessible capability files), so capability-enabled leases can’t bootstrap reliably outside the default username.

Useful? React with 👍 / 👎.

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