Repository navigation
Keep a VM's work inside the VM: browser and computer use run in the guest (GODM-22) - #24
Merged
Merged
Conversation
Fills into the VM's Chrome follow the same opt-in as fill_login / fill_totp (settings.vm.vaultFill) and stay bound to the login's site; the prompt tells the agent which to use where. Review fixes: the run works in the VM the queue locked, the SSH tunnel's stderr is drained, the uv installer and the install probe fail loudly, in-guest MCP servers start without shell startup files, and runs in the same VM taking turns is tested.
# Conflicts: # packages/core/src/runner/prompt.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this change?
When a VM is attached (to a chat, an agent or a workspace), the run now does all of its work inside the VM. No browser starts on the Mac anymore, and the Mac's screen is never used.
Godmode's agent in the VM (
packages/core/src/vm/guest.ts). On first use, Godmode installs these into the guest:Claude Code starts two MCP servers inside the guest, talking over stdio through
tart exec -i:browser: browser-use, driving the VM's Chrome.cua: Cua Driver, which controls the VM's apps and windows. The Cirrus images already give the Tart guest agent Accessibility and Screen Recording.Setup runs once per VM. After that, getting a VM ready for a run takes about 0.4 s.
Runner
Logins:
vault_fill_login/vault_fill_totpfill the VM's Chrome over CDP through an SSH port forward, and stay bound to the login's site. This uses the same opt-in as Let agents use vault logins and 2FA codes inside their VM (GODM-18) #19 (settings.vm.vaultFill, off by default), because the agent's shell shares the VM with that Chrome. The prompt tells the agent to usevault_fill_*for websites in Chrome andfill_login/fill_totpfor other apps.UI
vmandcuatool calls get readable labels.How was it tested?
pnpm -r typecheckis clean, andbun testinpackages/corepasses: 645 pass, 0 fail.vms.test.tsrun against a fake guest (Tart shims, a fake uv):tart exec -iand answer from inside the guestcomputerserver, even when a screen is shared in the chatNot changed: custom stdio MCP servers that the human configured for an agent still run on the Mac, as before.
Checklist
pnpm typecheckandpnpm testpasscargo clippy/cargo testpass (ifapps/desktop/src-taurichanged) — not changedpackages/sharedandapps/desktop/src/lib/api.ts(newCUA_MCP_NAME; no API changes)