Give your agentsreal Macs.
Connect any Mac you own and it becomes a programmable cloud runtime — driven by agents, SDKs, and CLIs from anywhere.
Everything a Linux sandbox can’t do
A fleet of real Macs, driven by agents from anywhere — the things a Linux box in the cloud simply can’t be.
Run a fleet of real Macs
The Studio on your desk, the minis in the closet, the laptop in your bag — one private fleet, online and addressable from anywhere.
Control them all with agents
Dispatch one prompt across the whole fleet — agents drive every machine remotely, in parallel.
A real browser, like a human
Not a patchy cloud-browser API — the actual browser on a real Mac. Log in, scroll, click, type, exactly like a person.
The whole of real macOS
Xcode, simulators, codesigning, AppleScript, Homebrew — the real platform, not a stub or an emulator.
Ship iOS, autonomously
Clone → build → test → notarize → TestFlight, in a single run.
Expose any port as a public URL
Run a server in a sandbox and get a named subdomain with real TLS — zero inbound ports opened.
If it installs on a Mac, it runs on Herds
Xcode, Final Cut, Blender, the iOS Simulator, real Safari — the whole Mac, driven from Python. No new runtime to learn.
Make a machine drivable
One command on the machine. No account, no signup, no port forwarding.
$ herds child✓ This machine is live and drivableherds use herds_sk_…@studio.relay.herds.run
Drive it from anywhere
Paste that token on any machine — Mac, Linux, Windows. Then run things.
$ herds use herds_sk_…@studio.relay.herds.run✓ Driving studio — 1 machine, 1 online$ herds run -- xcodebuild -scheme App test
Run it on a real Mac
Pick the idlest Mac in your fleet and run anything a Mac can run.
import herdsmac = herds.mac() # idlest Mac in the fleetmac.run("xcodebuild -scheme App test", check=True)
Fan out across the fleet
Every online Mac pulls the next task as it frees up.
results = herds.fleet().map("pytest {}", TEST_DIRS)# {} ← each item. N Macs, N× throughput —# work-stealing, so none gets overloaded.
Serve it on a public URL
A sandbox is an isolated workspace. Ship code in, expose a port out.
with herds.mac().sandbox(image="xcode:26") as sbx:sbx.put("./my-project")sbx.spawn("npm run dev", keep_alive=True)url = sbx.expose(3000) # → public link
Hand it to an agent
Give a coding agent a whole Mac. Keyless — no key lands on it.
herds.mac().agent("fix the failing tests and open a PR",proxy="https://proxy.you.com",secret="proxyagent")
Native to your Apple world
It doesn’t call half-built APIs — it uses the real apps, signed in on a real Mac, and operates any machine you point it at.
iMessage
Reads, replies, and reschedules — in your voice, around the clock.
iCloud Photos
Sorts, dedupes, and albums a decade of photos in iCloud.
Apple Notes
Captures, files, and recalls everything you need.
FaceTime
Places and joins calls — schedules, dials, follows up.
Remote operation
Drives any Mac you point it at — set up, fix, and triage.
Pair operator
You watch, it works — approve the risky steps, skip the rest.
What people build on Herds
A food-delivery app, shipped overnight
An agent cloned the repo, ran Xcode, fixed the failing tests, QA'd the build, and pushed to TestFlight by morning — on a Mac mini in the closet.
iMessage, handled for you
Triage threads, RSVP, reschedule, and reply in your voice — native Messages on a real Mac, around the clock. No bridge, no API.
It lives in your Apple world
Messages, Mail, Photos, Notes, Music — signed in on a real Mac. Your agent uses the actual Apple apps, not half-built APIs.
Fix anyone's Mac, remotely
Point an agent at a relative's or teammate's Mac — diagnose the slowdown, clear the disk, reset the network, install the update. Hands-on support, hands-free.
It applies, books, and files — like a person
The real browser on a real Mac: log into the portal, fill the form, hit submit. No brittle scraping API, no headless workarounds.
A hundred Macs, one prompt
Point an agent at the whole fleet — build, render, scrape, test — running for hours across every machine you own.
Two commands, then a hundred Macs
One command makes a Mac drivable and prints a token. One command anywhere else drives it. Growing into a fleet is the same two commands, more times.
$curl -fsSL herds.run/install | shinstalled herds$herds child✓ live and drivableherds_sk_…@studio.relay.herds.run
# no account, no signup$herds use herds_sk_…@studio…✓ Driving studio — 1 machine# several? switch by name$herds use work✓ Driving work — 11 machines
import herdsmac = herds.mac(tag="xcode") # idlest matchmac.run("xcodebuild -scheme App")sbx = mac.sandbox()url = sbx.expose(3000) # → public URL
Then open it in the browser
Hosting prints a signed-in dashboard link. Sign in with the same account from anywhere — every Mac, every sandbox, and every run, live on the web. No inbound ports opened.
Carve one Mac into a hundred sandboxes
A single Mac mini is two things at once: a machine you drive directly, and a host you partition into dozens of isolated, localized environments — each its own sandbox, all running in parallel.
Each gets its own HOME, filesystem, and TMPDIR — nothing leaks between them.
Pin a toolchain, env, and volumes per sandbox — a hundred clean worlds on one box.
Spin up, run, and tear down by process group — no residue left behind.
with herds.mac("mac-mini").sandbox(image="xcode:26") as sbx:sbx.exec("xcodebuild -scheme App archive")url = sbx.expose(3000) # its own public URL# torn down clean on exit — fan this across the whole grid with .map()
Connect your Mac in 60 seconds.
Every Mac you own becomes an API. Your machine, your infra — live with a single command.