Skip to content

Fix/desktop on mac - #244

Merged
robdmac merged 3 commits into
mainfrom
fix/desktop-on-mac
Jun 20, 2026
Merged

robdmac merged 3 commits into
mainfrom
fix/desktop-on-mac

Conversation

@robdmac

@robdmac robdmac commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

No description provided.

robdmac and others added 3 commits June 19, 2026 10:12
…host control-plane route

The native Virtualization.framework desktop backend boots systemd → /etc/rc.local
(MININIT is inert), which never brought up networking and had no guest→host path.
Fixes, all verified end-to-end:

- Networking: NIC forced to eth0 (net.ifnames=0); rc.local leases via dhclient (no
  bogus -timeout flag); added isc-dhcp-client + iproute2 to the image. Guest now gets
  IP/route/DNS automatically at boot and reaches the internet.
- Guest→host control plane: reverse-vsock forwarder in vz-helper
  (--reverse-port-forward 8787:8787) + guest socat + CONTROLPLANE_URL/INTERNAL_API_TOKEN
  in rc.local. Unlocks OAuth integration tools, approvals, and callbacks on desktop.
  Verified: guest→host /health 200, gateway 403 NOT_ATTACHED w/ valid PTY token,
  discovery 200 — over loopback only (nothing exposed on a NIC).
- /debug/exec endpoint (orcabot CLI primitive): runs guest shell from the host. Gated
  by ORCABOT_DEBUG_EXEC=1 (desktop-only, off in prod) + a random per-boot token
  delivered via the root-only VM console; agents can neither read nor guess it.
- orcabot-server PATH floor so child binaries (browser stack, agent CLIs) resolve when
  launched from a bare PID-1 environment — also fixes the "Reconnecting to browser".
- Image staging stamps the source signature instead of trusting dest mtime (the rw
  disk image's mtime is bumped by the guest, which silently skipped re-staging).
- build-images.sh: SKIP_KERNEL=1 reuses the prebuilt kernel for fast rootfs-only rebuilds.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
CheckAndHold (browser navigation) and the transparent/kernel path only consulted
the allowlist, so permanently-denied and tracker domains slipped through there even
though the CONNECT/HTTP proxy paths blocked them. Unify all paths behind a single
decide() ladder (localhost → deny → allow → tracker → hold) with a permitted()
helper, so every interception point makes the same decision. Adds a regression test
covering deny/tracker (incl. user "Always Allow" overriding the tracker denylist).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…de files)

Root-anchored so they don't shadow tracked assets in subdirs (frontend/public/*.png,
*.mp4, desktop icons).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@robdmac
robdmac merged commit 580f4fd into main Jun 20, 2026
1 check passed
@robdmac
robdmac deleted the fix/desktop-on-mac branch June 20, 2026 14:30
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