Claude Desktop SSH connections¶
limabean up registers every VM in the Claude desktop app as an SSH
connection, and limabean rm removes it. Only running VMs are listed:
Claude Desktop shows an error for a connection it can't reach, so
limabean down removes the entry and limabean up (or ssh/get, which
start a stopped VM) adds it back. In the prompt box's environment
dropdown, pick SSH → <name> (limabean) and open a directory under
~/code. Commands Claude runs use the VM's tools and can't touch files on your
Mac.
On first connect, Claude Desktop installs its own copy of Claude Code in the
VM under ~/.claude/remote/, which takes about 1 GB.
Plugins¶
Claude Code in a VM gets the plugins a project's
.limabean.yaml names, in that VM's
~/.claude/settings.json, so Claude Desktop's copy and the
claude pack's both use them. For example,
guardrails, which formats and
lints Claude's edits and won't let a turn end until the tests pass:
The packs carry the formatters, linters and language servers plugins like these use (gofumpt, golangci-lint, ruff, shellcheck, gopls, pyright, …).
Let Claude manage VMs too¶
An SSH connection puts a Claude session inside one VM. To let Claude, running on your Mac, create VMs, run commands in them and snapshot them, add limabean's MCP server: see Claude and MCP.
How it works¶
Claude Desktop reads connections from the sshConfigs list in
~/.claude/settings.json (docs).
limabean adds one entry per VM, with sshHost set to the VM's lima-<name>
alias:
- Only entries whose id starts with
limabean-are touched. Your other settings are left alone. - The file isn't changed if it isn't valid JSON. It is written in place, so permissions and symlinks survive.
- A VM deleted with
limactl delete, or stopped or started withlimactlor by a Mac restart, has its entry fixed the next time you runlimabean lsorlimabean up.limabean rm <name>cleans it up too. limabean claude syncreconciles everything at once.- Restart Claude Desktop if a new VM doesn't appear.
- To opt out, set
CLAUDE_DESKTOP="no"in~/.config/limabean/config.