👋 Hi, I'm the developer
I'm an iOS indie developer. A few months ago, I picked up a Mac Mini M4 — the base 256GB model. First thing I did? Swapped in a 2TB SSD I bought online. So far so good. The little machine now lives in a closet, running 24/7 with no monitor attached, serving as my build server and automation workhorse.
🔍 Discovering AI Agents
I discovered OpenClaw early on — back when it was still called clawdbot. The idea of having an AI agent that could actually see and control my Mac was mind-blowing. I started using it for all sorts of automation: app testing, generating screenshots for the App Store, tedious UI tasks that I hated doing manually.
Quickly became a heavy user. This was exactly what I needed as a solo developer.
😤 Where Things Went Wrong
Running OpenClaw on a headless Mac Mini turned out to be... a nightmare. Something would break every few days:
-
✗
Long automation tasks would randomly die because macOS decided to sleep — even with all
the Energy Saver settings maxed out.
caffeinatehelped but wasn't bulletproof. - ✗ Screenshots looked like they were from 1995. Turns out without a physical display, macOS doesn't bother with GPU acceleration.
- ✗ Bought a dummy HDMI plug off Amazon. Worked great for 2 weeks. Then one day it just... stopped being recognized. No idea why.
- ✗ I wanted OpenClaw to react to notification sounds from apps. But routing system audio to a mic input on macOS? Surprisingly difficult.
- ✗ Also needed a way to mute the audio output — my 🦞 was browsing X at 3am and some random video woke me up. Not fun.
🔧 What I Tried First
To be fair, I found existing solutions. Ended up running Amphetamine + BetterDisplay + BlackHole together. And honestly? They worked. These are solid, well-made apps.
But for my simple needs, they felt like overkill. Too many settings, too many menus, too many things to configure. I just wanted something I could toggle on and forget about.
⚡ The Rabbit Hole
As a developer, my instinct was "I'll just fix this myself." Famous last words, right?
Started digging into Apple's APIs. Found out there's actually a proper way to prevent sleep (IOPMLib assertions). Discovered a private API for virtual displays (CGVirtualDisplay). Realized I could build audio routing directly using CoreAudio.
A week of intense coding later, I had a working app. One window. Four toggles. Done.
😅 About That Name...
Fun story: When the project was called clawdbot, I named my app clawdmate. Then they renamed to moltbot, so I changed to moltmate. Then openclaw happened and I was like...
"Fuck it. I'm not chasing names anymore. MacMate it is."
🎉 Today
My Mac Mini finally works the way I always wanted. OpenClaw runs 24/7 without hiccups. Virtual displays give me proper resolution. Audio routing just works. Sleep? What sleep?
I polished up the app and figured other folks running headless Macs might find it useful too. Whether you're deploying AI agents, running a build server, or just want to access your Mac Mini remotely without the frustrations — hope MacMate helps.
Happy automating! 🐾
Install via Homebrew:
brew install --cask --no-quarantine Daniel-Robbins/macmate/macmate
3-day full-featured trial