AI coding agent

Run Goose safely on your Mac, in a sandbox VM

Goose is the default agent in MacVisor's AI sandboxes: mvz sandbox create installs it in a disposable Linux or macOS VM with a copy of your project and runs it in auto mode. It works with any model MacVisor's gateway can reach, local or cloud, and your keys never enter the VM.

  • Apple Silicon (M1 or later)
  • macOS 27 on the Mac
  • A local model server or a cloud key

30 days free, no key or payment details. Apple Silicon with macOS 27.

A stylised MacVisor window with a Linux sandbox running a Goose session, and a local model server on the Mac answering its requests.

Goose is MacVisor's default sandbox agent, so mvz sandbox create without --agent installs it. It talks to MacVisor's gateway with OpenAI's Chat Completions API, which local model servers commonly offer, so it pairs easily with a local model.

Create the sandbox

With a local model on the Mac (MacVisor finds Ollama, LM Studio, llama.cpp, oMLX and others on their usual ports):

mvz ai status --probe                          # the servers and models found
mvz sandbox create ~/src/app --model qwen3-coder:30b

Or in the app: New AI Sandbox…, with Goose as the agent. Add --os macos for a macOS 27 sandbox.

No model server yet? mvz models lists open-source coding models that fit your Mac, and mvz models server install ollama installs one with Homebrew.

MacVisor installs Goose from its GitHub release with the official download_cli.sh (on Linux it adds bzip2 first, which the archive needs). It writes ~/.config/goose/config.yaml in the VM with:

  • the openai provider, pointed at MacVisor's gateway;
  • GOOSE_MODE: auto, so Goose doesn't stop to ask;
  • the keyring off, since there is no key to keep, and telemetry off.

GitHub, where the installer comes from, is allowed only while it installs.

Run, review and apply

mvz sandbox run app-1 -- "port the CLI's argument parsing to the new flags library"
mvz sandbox attach app-1                 # a Goose session
mvz sandbox diff app-1
mvz sandbox apply app-1 --branch

run starts goose run --no-session --with-builtin developer with your prompt, so a one-off task leaves no saved session behind. attach, or Run Agent in the app, opens goose session with the same developer extension. --model on run sets Goose's model for that run only.

When you review, a changed .goosehints file is flagged with the other agent instructions, because Goose on your Mac reads it.

Models

The model name picks the route:

--modelGoes to
qwen3-coder:30b or any other nameThe model server on your Mac
claude-*Anthropic, with your key
gpt-*, o3, o4OpenAI, with your key
openrouter/<model>OpenRouter, with your key

A sandbox set up with a local model is limited to local models, so Goose can't switch to a paid one you didn't choose. Allow it with --cloud at create, or mvz sandbox set app-1 --cloud on. mvz ai log app-1 lists each request with its model and tokens.

Internet access

Goose's developer extension runs shell commands, so most tasks need a package registry sooner or later. Add it as the task needs it:

mvz sandbox allow app-1 ubuntu pypi
mvz sandbox log app-1 --egress

Goose on your Mac instead

mvz mcp install goose adds MacVisor's MCP server to ~/.config/goose/config.yaml on the Mac as an extension (GOOSE_PATH_ROOT moves it). Goose can then work in sandboxes and in VMs you open to agents. See Connect an agent.

AI sandboxes are a Tech Preview, in every license and the free 30-day trial. See AI sandboxes and the overview.

FAQ

Common questions

More in the documentation and known limitations.

Which models can Goose use in a MacVisor sandbox?

Any model MacVisor's gateway can reach. Goose talks to the gateway with OpenAI's Chat Completions API, so it can use a model on a local server such as Ollama, LM Studio, llama.cpp or oMLX, or a Claude, OpenAI or OpenRouter model if you stored that provider's key on the Mac.

Does Goose ask before running commands in the sandbox?

No. MacVisor sets Goose to auto mode in the VM, so it runs commands and edits files without asking. Its changes stay in the VM until you review the diff and apply it on the Mac.

Where are Goose's API keys stored?

Nowhere in the VM. MacVisor turns off Goose's keyring there and gives it only a placeholder. The real keys stay in the Mac's Keychain, and the gateway adds them as requests leave the Mac.

Can I use Goose on my Mac with MacVisor's VMs instead?

Yes. mvz mcp install goose adds MacVisor's MCP server to Goose's config on the Mac as an extension. Goose can then work in sandboxes and in the VMs you open to agents.

Run your Mac like a virtualization host.

macOS, Windows 11, Linux and FreeBSD VMs that keep running with the app closed, with snapshots, networks, backups and the mvz command line.