Blog

Linux VMs, AI agents and Apple silicon, explained.

Step-by-step guides, measured benchmarks and plain-English explainers for running Linux, macOS and AI agents in virtual machines on your Mac.

Apple Silicon virtualization fundamentals

The mechanics behind every other post: what a VM is, and how it works on this hardware.

Fundamentals

Apple Silicon Virtual Machines, Explained Simply

What a virtual machine is on an M-series Mac, why it isn't emulation, what Apple's Virtualization framework gives Linux and macOS guests, and where the overhead comes from.

Architecture

How Apple's Virtualization Framework Works, Device by Device

What a shipping app's configuration declares, device by device: boot loaders, three kinds of disk, NAT networking, graphics, shared folders, vsock, and the identity object that silently breaks saved state.

Guide

Linux VM Networking on a Mac: NAT, SSH and Port Forwards

Mac to VM, VM to internet, and another computer to VM are three different paths. Only two work without setup; the third needs a forward or an ssh -J jump through the Mac.

Deep dive

Virtualization.framework vs. QEMU on Apple Silicon Macs

Both ride the same Hypervisor framework for arm64 guests. The real differences: cross-architecture emulation, device breadth, supported guests, and an entitlement most comparisons skip.

Deep dive

Why Fedora's ARM ISO Wouldn't Boot, and the Fix

A black screen, two misleading errors, and the CD-only layout of Fedora's, Rocky's and NixOS's ARM ISOs. One partition entry makes them boot as disks; here's a script.

Fundamentals

VM vs. Container vs. Sandbox on macOS: What's Different

Three words used interchangeably for three different mechanisms. Where each boundary lives, what enforces it, what an escape can reach, and which to use for code you don't fully trust.

Fundamentals

ARM64 vs. x86-64 on Apple Silicon: A Developer's Guide

Two different Rosettas, Homebrew's two install prefixes, multi-arch container images, and CI runners that may not match what you ship. The architecture questions in one place.

Fundamentals

Why ARM64 Linux VMs Feel Native on Apple Silicon

The accessible version: why the old "VMs are a bit laggy" instinct came from x86 history, what ARM did differently, what that means day to day, and where the native feeling ends.

Fundamentals

Why Your Mac's Disk Numbers Don't Add Up

APFS clones and sparse files make files take less space than Finder says. How they work, how to see the real numbers, and when they stop working.

Guides by operating system

Getting each guest OS running on Apple silicon, what's different about it, and what trips people up.

Guide

Best Linux Distro for an Apple Silicon Mac VM in 2026

Which Linux distribution fits your work on an M-series Mac, what each one is best at, and which ones Velo Workspaces can set up for you in about a minute.

Guide

Ubuntu on Apple Silicon: Run an Ubuntu VM on Your Mac

Ubuntu runs natively on arm64 on an M-series Mac. The one-minute cloud image, hands-free Server and Desktop installs, the Netplan gotcha on cloned VMs, and what Rosetta can and can't do.

Guide

Ubuntu Cloud Images on a Mac, by Hand

Why a cloud image boots to a 3.5 GB disk with no login, how to fix both with a cloud-init seed built on macOS, and the GPT detail most guides skip.

Guide

Debian on Apple Silicon: Run a Debian 13 VM on a Mac

Native arm64 like Ubuntu, but a different installer and different networking defaults. The one-minute Debian cloud image, installing by hand, and why Ubuntu's clone gotcha usually doesn't apply.

Guide

Fedora on Apple Silicon: Run a Fedora 44 VM on a Mac

Three ways to get Fedora 44 running on an M-series Mac, including a kickstart install that asks nothing, and the defaults that differ from Ubuntu and Debian: SELinux enforcing, NetworkManager, and a different Rosetta setup.

Guide

Arch Linux on Apple Silicon: What Works in a Mac VM

The odd one out in this series: no official arm64 build, no installer ISO from Arch Linux ARM, and nothing configured by default, networking included. What works, and when Arch is worth the effort.

Guide

Kali Linux on Apple Silicon: Set Up an arm64 Kali VM

Kali ships an official arm64 installer, and Velo Workspaces downloads it for you. How the install goes, what NAT networking means for a pentest lab, and why a fresh workspace per engagement makes sense.

Guide

NixOS on Apple Silicon: Install NixOS in a VM on a Mac

NixOS's aarch64 ISOs, in the catalog and bootable on Apple silicon. Installing by hand, getting SSH keys in declaratively, and how configuration.nix and base images answer reproducibility differently.

Guide

Rocky Linux on Apple Silicon: RHEL-Compatible VMs on a Mac

If production runs RHEL, test against Rocky rather than Fedora. Rocky Linux 10 and 9 from the cloud image in a minute or a kickstart install that asks nothing, and what carries over from Fedora.

Guide

Ubuntu Server or Desktop for a Linux VM on a Mac?

A headless server plus SSH covers more work than most people expect, including full VS Code editing. When you need a desktop inside the VM, and why it doesn't change the graphics you get.

Guide

macOS VMs on Apple Silicon: How macOS Guests Differ

The other guest type Velo Workspaces runs. Real GPU acceleration, native trackpad input, shared folders with no mount command, a restore image that's kept and reused, and the gotcha that can cost you a workspace.

Setting up AI agents & local models

AI Bridge, local model servers, and building or testing agents against them.

Guide

How to Run Local LLMs on a Mac: Ollama, MLX, LM Studio

The model on its own: which tool to install, which format to pull, where models come from, how much memory you need, and how to talk to it, before any VM or agent is involved.

Guide

How Much RAM Do You Need for Local LLMs on a Mac?

The arithmetic behind the model-size tables: weights from parameters and quantization, a KV cache that grows with every turn, and the share macOS keeps, so you can size any model.

Fundamentals

LLM Quantization Explained: Q4_K_M vs. Q5 vs. Q8 on a Mac

What quantization does to a model's weights, why "4-bit" isn't one thing once you read real GGUF names, and how to pick a level on purpose instead of copying a guide.

Setup guide

MLX + OpenCode in a Linux VM on Mac: Setup Guide

A practical walkthrough: MLX serving a model on the Mac's GPU, an Ubuntu workspace from the cloud image for the agent, and OpenCode connected over AI Bridge. Fully local.

Setup guide

Local AI Coding Assistant in VS Code: Continue + Ollama

Inline autocomplete and chat edits from a local model, with the editing and execution happening in an isolated Linux VM over VS Code Remote-SSH and the model on your Mac's GPU.

Setup guide

Claude Code with a Local Model (Ollama) in a Mac VM

Claude Code speaks the Anthropic Messages API, not OpenAI's, so it needs a different variable and a host provider that speaks the right protocol. The working setup with Ollama and AI Bridge.

Architecture

AI Bridge: Run AI Agents in a Linux VM at GPU Speed on Mac

Why "safe" and "fast" pull apart for AI agents on Apple silicon, the vsock architecture that splits them, and measured results: a 1% throughput cost, and faster agent loops in the VM.

Guide

Build and Test AI Agents Locally on a Mac, Safely

Agent development means running code you don't trust yet against a model you want fast and local. The AI Sandbox profile, AI Bridge's four backends, a switching gotcha, and fast resets.

Privacy

What Leaves Your Mac with AI Bridge (and What Doesn't)

"Stays on your Mac", checked at the code level: why the bridge can only reach your own loopback, why the guest's normal network can't reach the model, and what the app itself connects to.

Fundamentals

Local LLM vs. Cloud LLM for Coding Agents: How to Choose

Where frontier cloud models still win, where local models win on cost, privacy and reliability, why isolating the agent is a separate decision, and a practical split between the two.

Workflows & infrastructure

Getting the most from disposable workspaces and base images, day to day.

Fundamentals

What Is a Disposable Development Environment?

Create, use, discard, recreate. The definition, and the three things it's most often confused with: a snapshot, a container, and a cloud dev environment.

Fundamentals

Disposable VM vs. Snapshot: What's the Difference?

What a Velo Workspaces restore point copies on disk, what a disposable workspace does instead, when to reach for each, and why you'll often use both.

Fundamentals

Base Image vs. Snapshot vs. Clone: VM Terms Explained

Four terms in one place. Clone is the mechanism under two of them; the real choice is between a base image, a snapshot and a disposable workspace, which answer three different questions.

Guide

One VM Per Project: A Clean Dev Environment Habit on Mac

Version managers scope the runtime, not everything else. One workspace per project, code in a shared folder, a base image to hand teammates, and throwaway workspaces for trying new tools.

Workflow

One VM Per Git Branch: Isolated Development on a Mac

Switching branches leaves node_modules and build output behind. git worktree plus one workspace per branch gives each branch its own files and its own toolchain.

Workflow

Disposable VMs for QA and DevOps on a Mac: A Clean Workflow

Why "reset" and "throw away" are different guarantees, how a base image plus a disposable workspace per run looks for QA and for DevOps, and where Vagrant, Multipass and Lima fit.

Workflow

Clean-Room Bug Reproduction with Disposable VMs on a Mac

"Can't reproduce" is sometimes a finding and sometimes a confession about your own machine. A five-step clean-room workflow, and why throwing the environment away matters.

Guide

Test Untrusted Software Safely on a Mac with a Disposable VM

The no-agent version of the untrusted-code problem: install scripts, repo setup steps, builds and dependencies all run as you. Where to run them instead.

Workflow

Match Your CI Runner Locally: Disposable VMs for DevOps

Use a disposable workspace that matches your CI runner's OS, so environment drift, like ubuntu-latest moving to 26.04, shows up on your Mac before it fails a pipeline.

Deep dive

Unattended Ubuntu and Fedora Installs, Without PXE

The labelled disk both installers look for, the kernel argument Ubuntu still needs, a keyboard-layout trap, and how a VM can tell the host the install is done.

Workflow

Versioning VM Base Images: A Naming Convention That Works

What Save as Base Image records (and doesn't), why every reseal is a new generation, a four-part naming convention that stands in for version history, and how to prune.

Performance

Linux VM Performance Tuning on Apple Silicon: 5 Settings

Most VM tuning guides are written for servers or KVM. Five settings that matter inside a Linux guest on a Mac, what each buys you, what it costs, and which only make sense for disposable VMs.

Benchmarks & performance deep dives

Measured numbers on what virtualization costs on Apple silicon, and why.

Benchmark

What Sandboxing an AI Agent in a VM Costs: MLX vs. Ollama

The same architecture benchmarked against two inference engines gave two different answers under load. Both results, a theory for why they disagree, and a methodology mistake worth learning from.

Benchmark

Benchmark: AI Agent in a VM on Apple Silicon, ~1% Slower

Three benchmarks on an M4 Mac mini with MLX: single-request speed, eight concurrent clients, and a real OpenCode agent loop, host versus Linux VM over AI Bridge.

Deep dive

ARM Virtualization Performance: Why VMs Are Fast on M-Series

The four things that decide VM performance, how ARM's EL2, two-stage translation and vGIC handle each, what paravirtualization and passthrough trade off, and why it explains our benchmarks.

Deep dive

How Many vCPUs Should a Linux VM Get on Apple Silicon?

What macOS does with a workspace's vCPU count: no E-core vCPUs, contention above the P-core count, no gain for single-threaded work, and sensible numbers per workload.

Deep dive

Linux VM Disk Speed on a Mac: virtio-blk vs. virtio-fs

The biggest disk-performance decision in a Mac VM isn't a setting; it's which device a file lives behind. The workspace's own disk versus a shared folder, and how to split your work between them.

Deep dive

Linux VM Network Performance on a Mac: NAT, vmnet and VPNs

What networking every workspace gets, why NAT here is fast kernel-level vmnet rather than a userspace proxy, why the address stays put, and the host-side VPN gotcha.

Guide

How Much Memory Should a Linux VM Get on a Mac?

Sizing memory for dev, build and CI workloads: what the framework's limits mean, starting points from the built-in profiles, what the balloon device does, and a way to size that isn't guessing.

Guide

How Many Linux VMs Can You Run on an Apple Silicon Mac?

Three budgets that run out at different rates: memory (usually first), P-cores under concurrent load, and disk, which copy-on-write clones make much cheaper than it looks.

Deep dive

Why Some Mac VMs Boot Faster: Linux VM Startup Explained

Startup cost isn't one number. What the EFI boot loader trades, why a cloud image is ready in a minute while an install takes longer, why later boots are cheaper, and when a restore beats any boot.

Comparisons

Sourced comparisons with Parallels, UTM, Docker Desktop, OrbStack, Apple's container tool, Codespaces and Ona.

Comparison

Velo Workspaces vs. Parallels vs. UTM for Linux VMs on Mac

Three different tools rather than three rivals for one job: sourced pricing, what each does about a Linux guest's GPU, getting Linux running, disposable workspaces, and which fits which work.

Comparison

Docker Desktop vs. OrbStack vs. a VM on Mac: Which to Use

Docker Desktop and OrbStack do the same job well; Velo Workspaces does a different one. Sourced pricing, and the real question underneath: is a shared kernel the boundary you need?

Fundamentals

Apple Containers vs. Linux VMs on a Mac: What's Different?

Apple's container tool already runs each container in its own micro-VM, so the difference from a Linux VM workspace isn't isolation. It's what each is built for, and how they fit together.

Comparison

Apple Containers vs. Docker Desktop vs. OrbStack (2026)

Three ways to get a Linux kernel for containers on a Mac: what Apple's per-container VMs get right, what the 1.0 still lacks, where Docker Desktop and OrbStack still win, and which to pick.

Comparison

Velo Workspaces vs. GitHub Codespaces vs. Ona (Gitpod)

All three pitch disposable, isolated environments. Underneath it's local and flat-rate against cloud and metered, and since 2025, the cloud side has no GPU option at all.

Fundamentals

Local vs. Cloud Development Environments: Real Trade-offs

The category question under the product comparisons: who owns the hardware decides GPU access, offline behavior, data residency and cost model. Plus what cloud does better, and a way to choose.

FAQ

Windows VMs on Apple Silicon: Why Velo Workspaces Can't

Short answer: no. Why Apple's Virtualization framework is the blocker, what Velo Workspaces runs instead, and where to go if you need a Windows VM on a Mac.

Guide

Migrate a Linux VM from UTM, Fusion or Parallels on a Mac

Apple's framework attaches raw disks only. Since 1.2, QCOW2 (UTM) imports directly; VMDK (Fusion) and Parallels disks need one qemu-img command. Where each file lives, and the mistakes to avoid.