Vagrant Box for ROS2 on Apple Silicon
I’ve been knee deep in studying robotics ever since joining Foxglove earlier this month. There is so much to learn! One major pain point that I have come across is trying to work with ROS outside of Linux. I have my Framework Laptop running Ubuntu and that is all working without any issues. But my main work computer is an Apple Silicon Macbook Pro and things are complicated.
Apple Silicon has been the best thing to happen to Apple laptops in my lifetime. The performance and battery life are unreal. However it has made working with Linux VMs and compiling stuff for x86 a huge pain. ROS works best on Linux, but Ubuntu is only recently making it easy to install and run ARM based desktop Linux. Before Apple Silicon I remember running Vagrant and Virtualbox without any issues, but ever since switching over to Apple Silicon Virtualbox feels completely unusable to me, especially when it comes to doing basic things that require guest additions.
I have not felt a ton of the pain here because for the last few years Docker has more or less fully taken over the way I run Linux on my Mac. Before this month I don’t remember the last time I used a VM. Most of ROS operates via the command line, and I am using Foxglove for visualization instead of some of the built-in ROS tools. This means that I was able to get very far with just messing around with Docker.
I am working my way through the Foxglove blog and came across this great post by my colleague Jacob which walks you through how to set up image annotations in Foxglove using the dlib library. The post is written for ROS1 and I was able to get everything to work with ROS2, but I ran into a limitation with Docker because as far as I can tell its not possible to access your USB camera from inside of a docker container on Mac.
This is what led me back to VMs and what led me to spend most of my Saturday trying to get Packer, Vagrant, etc working. Its a bit sad to me to see the current state of the Hashicorp stack. I know I am late to that particular party, but you can def feel that they just don’t seem to care about the DX anymore. It’s a shame, but at this point feels like a part of the inevitable enshittification cycle.
I am not really sure how people are running Linux on their Macs these days, but it certainly feels like Vagrant is not a huge part of that picture at the moment because I didn’t see a single arm based ubuntu image out there.
So, as my first official contribution to the robotics community, I put together this little repo and published a few vagrant images to vagrant cloud. These images make it dead simple to get started with running ROS2 via VMWare Fusion on the latest Apple Silicon computers.
- Ubuntu 24.04 LTS arm - basic image with the latest Ubuntu 24.04 LTS desktop ready to go.
- ROS2-Jazzy - an extension of the previous image with everything you need to get ROS2, foxglove, and python working together.
Here is a corresponding Vagrantfile that you can use to get started with a simple vagrant up. If you’re using Foxglove, once the VM is running you can connect via a websocket at 192.168.56.10:8756 and start to visualize your ROS nodes.
Vagrant.configure("2") do |config|
config.vm.box = "levlaz_org/ros2-jazzy-arm"
config.vm.hostname = "ros2-dev-playground"
config.vm.provider "vmware_desktop" do |v|
v.memory = 8192
v.cpus = 4
v.gui = true
end
# Network configuration for ROS2
config.vm.network "private_network", ip: "192.168.56.10"
# Shared folder for development
config.vm.synced_folder ".", "/vagrant", type: "rsync"
# Port forwarding for Foxglove bridge (default port 8765)
config.vm.network "forwarded_port", guest: 8765, host: 8765, id: "foxglove-bridge"
end
I plan to continue to maintain both of these and try to keep up with the latest LTS versions of ROS. I hope someone else finds this useful and removes a bit of toil from getting ROS2 working on your Mac.
Thank you for reading! Share your thoughts with me on bluesky, mastodon, or via email.
Check out some more stuff to read down below.
Most popular posts this month
- 2024
- Setting up ANTLR4 on Windows
- My Custom Miniflux CSS Theme
- SQLite DB Migrations with PRAGMA user_version
- Ten Years of Dreaming of San Francisco
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- Fedora Magazine: Contribute to Fedora 44 KDE and GNOME Test Days from Fedora People
- Pluralistic: bunnie's piggyback hack (09 Jan 2026) from Pluralistic: Daily links from Cory Doctorow
- Clicks Communicator from Chris Hannah
- A Year Of Vibes from Armin Ronacher's Thoughts and Writings
- Pluralistic: A perfect distillation of the social uselessness of finance (18 Dec 2025) from Pluralistic: Daily links from Cory Doctorow
- Moving from WordPress to Substack from charity.wtf
- Grow, Like a Tree Not a Cancer from Jim Nielsen’s Blog
- Pluralistic: All the books I reviewed in 2025 (02 Dec 2025) from Pluralistic: Daily links from Cory Doctorow
Articles from blogs I follow around the net
Announcing Live AI & Design Systems Jam Sessions!
Ian, TJ, and I are excited to announce live AI & Design Systems Jam Sessions with our AI & Design Systems course community! Our first jam session will be Thursday, February 26 at 10AM ET. In these recurring biweekly Zoom […]
via Blog – Brad Frost February 16, 2026I Sold Out for $20 a Month and All I Got Was This Perfectly Generated Terraform
Until recently the LLM tools I’ve tried have been, to be frank, worthless. Copilot was best at writing extremely verbose comments. Gemini would turn a 200 line script into a 700 line collection of gibberish. It was easy for me to, more or less, ignore LLM…
via matduggan.com February 16, 2026Pluralistic: The online community trilemma (16 Feb 2026)
Today's links The online community trilemma: Reach, community and information, pick two. Hey look at this: Delights to delectate. Object permanence: Bruces x Sony DRM; Eniac tell-all; HBO v PVRs; Fucking damselflies; Gil Scout Cookie wine-pairings; Bi…
via Pluralistic: Daily links from Cory Doctorow February 16, 2026Generated by openring