Desktop coding agent · macOS / Windows / Linux
Marionette runs on Puppetmaster: every worker is a real OS subprocess holding a lease on its task, writing structured artifacts to durable SQLite state as it goes. Runs are parallel, replayable, and inspectable after the fact — and each task routes to the cheapest model that can actually handle it.
Why it's different
Most agents are one long conversation: opaque while running, gone when it ends. Marionette's unit of work is a job backed by real process isolation and a permanent record.
Each worker is an independent OS process holding a lease on its task, with heartbeats and timeouts. A crashed worker loses its lease and the task recovers — nothing hangs, nothing is silently dropped.
Findings, patches, routing decisions, and verification results persist as structured artifacts in SQLite. Replay any run, diff any patch, and recall results in a later session at zero token cost.
A tiered router scores each task and picks the cheapest model that clears the bar. Trivial work runs on cheap or local models; hard problems get a frontier model. Every decision is recorded with the alternatives it rejected.
Lifecycle
Every stage leaves a record. Nothing depends on a transcript surviving.
Work fans out to parallel workers — a read-only analysis swarm or an implement worker in a clean worktree.
Each worker acquires a lease on its task. Heartbeats keep it; a dead worker forfeits it and the task is recoverable.
Findings, patches, and routing decisions stream into SQLite as structured artifacts while the run is still going.
A stitched summary lands at the end. Any session — today or next month — can pull the results back without re-running anything.
Also in the box
Workers query an indexed graph of your repository — definitions, callers, impact — instead of burning tokens on repeated directory crawls. Shared context, not re-exploration.
Provider-reported, cache-aware cost accounting per job. See what each run cost, which model ran it, and why the cheaper options were rejected.
Sessions distill into a portable, cross-session wiki you own as plain markdown — decisions, context, and handoffs that outlive any one chat.
The same code on macOS, Windows, and Linux. stdlib-only Python backend with Puppetmaster as the one real dependency — and the agent can edit and update its own source.
Free and open source. Bring your own provider keys — you are not locked to any one model vendor.
DownloadBuilds are available for macOS, Windows, and Linux.
curl -fsSL https://professorpalmer.github.io/marionette/install.sh | bash
Updates are continuous: the in-app update pill pulls main, rebuilds, and relaunches,
so a merge reaches every install on its next click.