The AI runtime built for Apple Silicon. Designed and built for your Mac by an ex‑Apple software lead: it automatically manages unified memory, keeps a crew of open models resident, and unifies every Mac you own into a fleet.
I bought an M5 Max with 128 GB of unified memory to run AI locally, and every harness I tried was built for someone else's hardware. They assumed a frontier context window, so they handed local models more than they could hold and managed context poorly. They could assign models to agents, but nothing managed what was actually resident in unified memory, so a machine that could hold a whole crew sat mostly idle. And nothing told me whether a model was good at a job before I trusted it with one.
So the first thing I built was a lab: run a workload, measure it, compare. The runtime grew out of that, on the fleet I actually own: a laptop that runs the models and a Mac Studio that stays on as the hub, treated as one machine. Once you can measure a model on your own hardware you can staff it, size its context, keep it resident, and put a crew of them to work: missions, PR review, crawling data and reporting what it finds, or an agent seat in your editor.
| Other harnesses | darkmux | |
|---|---|---|
| Context | Assumes a large window; compaction is an afterthought | Sized to the model; compaction is a measured, first-class stage |
| Memory | Assigns models to agents; what is resident is your problem | Loads and unloads a crew under the unified memory budget, and shows you what is resident (the Machine lens) |
| Hardware | Built for any machine, so it assumes the least of yours | Built for Apple Silicon: more unified memory means a bigger crew, and several Macs become one fleet |
| Observability | A log per session, on the machine that ran it | Every dispatch is a flow record. One live dashboard for the whole fleet, from any device on your tailnet, traceable end to end |
| Trust | Try a model and see | Measured in the lab on your hardware before it's staffed |
| Orchestration | One way in: its own chat loop | Driven from your frontier agent (Claude Code), your editor (ACP), the command line, or a CI job, with the same crew underneath |
Verbatim, captured 2026-08-28 on an M5 Max: qwen3.6-35b-a3b answering, qwen3-4b routing, at the shipped default (humor 50) and then at 100.
You need LM Studio with a model downloaded. init writes your config. radio is darkmux in plain text: ask it anything about darkmux, or say what you want done, and a local model answers from the command index and the mission board, or routes you to the right command. It ships objective; the humor dial is yours. The getting-started guide takes it from there.
A profile names models at set context lengths, sized to your unified memory. A dispatch declares one; darkmux loads it, keeps it resident, and never touches a model you loaded yourself. MLX and GGUF both work.
A small daemon publishes every dispatch, phase, model, and timing as a flow record. The viewer draws them as one drillable view, fleet to tool call. Put it on your tailnet and watch from your phone.
daemon: reachable.Every dispatch and every mission emits the records the viewer draws from. No install needed to look: the demo is the same viewer on recorded fleet data. Full walkthrough in the observability section of the user guide.
Every run writes its trajectory and per-turn timing to disk. Baseline, change one variable, measure again: that is how darkmux's defaults were chosen, and how you pick a model for a job.
Full walkthrough in the lab section of the user guide.
A config-defined task graph worked by a crew of named roles, assembled for the job and dissolved after. Launch from your agent, your editor, the command line, or CI. A coding mission stops at a sign-off gate before anything ships.
mission finalize closes it out.finalize, abort, pause, and resume drive the lifecycle.Full walkthrough in the missions section of the user guide.
CLAUDE.md, and other frontier configs will cause more harm than good. Configure to your own strategy and goals. See issue #112 for the architectural reasoning.