Desktop coding agent · macOS / Windows / Linux

Orchestration you can audit.
Not a chat loop you have to trust.

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.

Download Install from the terminal

Builds are available for macOS, Windows, and Linux.

Why it's different

Durable state is the foundation. Routing is the multiplier.

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.

proc · lease · heartbeat

Real subprocess workers

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.

sqlite · artifacts · replay

Durable, auditable runs

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.

route · capability · cost

Cost-aware model routing

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

What happens when you hand Marionette a job

Every stage leaves a record. Nothing depends on a transcript surviving.

Dispatch

Work fans out to parallel workers — a read-only analysis swarm or an implement worker in a clean worktree.

Lease

Each worker acquires a lease on its task. Heartbeats keep it; a dead worker forfeits it and the task is recoverable.

Artifacts

Findings, patches, and routing decisions stream into SQLite as structured artifacts while the run is still going.

Recall

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

Built for long-horizon work

CodeGraph retrieval

Workers query an indexed graph of your repository — definitions, callers, impact — instead of burning tokens on repeated directory crawls. Shared context, not re-exploration.

Spend receipts, not vibes

Provider-reported, cache-aware cost accounting per job. See what each run cost, which model ran it, and why the cheaper options were rejected.

A personal knowledge wiki

Sessions distill into a portable, cross-session wiki you own as plain markdown — decisions, context, and handoffs that outlive any one chat.

Runs from source, updates itself

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.

Get Marionette

Free and open source. Bring your own provider keys — you are not locked to any one model vendor.

Download

Builds 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.