TL;DR: We created Remote Execution and Computer Use APIs for macOS, packaged them as a MCP server, and now your AI assistant can spin up Virtual Machines (VMs), run shell commands, transfer files, and even click around the Graphic User Interface (GUI). It's a prototype. It's a bit wild. We'd love to know what you'd build with it.
The "what if" that started this
Here at Bitrise, we've been running a scalable macOS cloud for years—thousands of Mac Minis humming away, handling iOS Continuous Integration (CI) workloads for teams ranging from indie devs to enterprises. VMs, orchestration, tooling updates, the whole nine yards.
Then MCP showed up, and someone on the team asked: "What if we just... exposed our macOS infrastructure as tools for AI models?"
A few weeks of hacking later, here we are.
What we actually built 🛠️
The Bitrise Remote Machine MCP Server gives AI assistants like Claude a set of 17 tools to work with remote macOS VMs:
VM lifecycle
- Spin up a fresh macOS VM on demand
- List your running instances
- Tear it down when you're done
Remote execution
- Run shell commands with streaming I/O
- Full support for pipes, redirects, command chaining
- Real-time output (no waiting for the command to finish)
File operations
- Upload files and folders to the VM
- Download build artifacts back
- Automatic compression handling
Computer use (yes, really)
- Open a Virtual Network Computing (VNC) session
- Mouse clicks, drags, scrolls
- Keyboard input
- Take screenshots
That last category is where things get interesting—and a little chaotic.
The Firefox-iOS experiment 🦊
To see what this thing could actually do, we gave Claude a challenge: Clone the firefox-ios repo, build it, and run the app in a simulator.
No hand-holding. No step-by-step instructions. Just "here are your tools, figure it out."
And it did.
Claude spun up a VM, cloned the repo, resolved dependencies, kicked off the build, launched the simulator, and ran the app. When it hit issues, it debugged them. When it needed to wait for Xcode, it waited.
Was it perfect? No. Did it work? Yes. Is it kind of surreal to watch? Absolutely.
Why we're sharing this now 🎄
It's end-of-year code freeze season. We know a lot of you have some breathing room to tinker with new things. And honestly, we're at a crossroads with this project.
We've built the foundation, but the "what to do with it" is wide open:
- Automated iOS testing? Let AI run through your app flows visually.
- Build debugging? Hand off that weird Xcode error to an AI with actual access to the machine.
- CI/CD experiments? See what happens when your AI can actually do things, not just suggest.
- Something we haven't thought of? That's what we're hoping you'll tell us.
Try it for yourself
The setup is straightforward:
- Grab a Bitrise Personal Access Token (free account works fine)
- Clone the repo
- Follow the installation instructions for your tool of choice
We support Claude Desktop, Claude Code CLI, VS Code, Cursor, Windsurf, JetBrains IDEs, and even Xcode via GitHub Copilot. If it speaks MCP, it should work.
Check out bitrise.build/lab for a quick overview and the demo video.
This is a prototype (and that's the point)
Let's be clear: this isn't a polished product announcement. This is the Bitrise engineering team saying "we built a thing, it's kind of cool, and we want to see where it could go."
The computer infrastructure is already there. The APIs work. The question is: what would make this genuinely useful for you?
- More automation capabilities?
- Tighter CI/CD integration?
- Specific iOS/macOS development workflows?
- Something entirely different?
Let's talk
We're genuinely curious what directions resonate with you. Drop by our Slack and let us know:
- What would you build with this?
- What's missing that would make it useful for your workflow?
- Is this cool, or is this actually useful? (Both answers are valid.)
The code is on GitHub. The demo is at bitrise.build/lab. The feedback channel is open.
Happy holidays, and happy hacking. 🚀
Built by the Bitrise engineering team. Questions? Ideas? Wild feature requests? We're listening.
