The full harness. On your codebase.

Shell, search, file editing, background jobs, and a sealed sandbox, with four multi-agent modes and permissions that know the difference between reversible and irreversible. Perch was built for work that gets audited. It turns out that is the same thing a codebase needs.

lib/settlement.tsproposed by delegate
export async function settle(batch: Batch) {
const total = batch.lines.reduce(sum, 0);
const total = await computeTotal(batch.lines);
assertReconciled(total, batch.expected);
return post(total);
}
Waiting for your approval

Background agents propose changes. Nothing is written until you say so.

The tools you would expect from a serious harness, on Desktop and in the CLI.

Shell and search

Real bash, grep, and glob. Finding every call site means finding every call site, not a semantic guess at most of them.

File editing

Read, write, edit in place, move, copy, delete. Every call validated against the approved roots for your workspace.

Background jobs

Start a build or a test suite detached, then check it, wait on it, or kill it while Perch keeps working on something else.

Sealed sandbox

Code runs with the network disabled under a macOS seatbelt profile, and every execution is recorded so a result traces back to what produced it.

Plan mode

Perch inspects the repo and drafts a plan with mutating tools blocked. Nothing gets written while you read it.

Todos and questions

A visible task list across long runs, and a real question when the decision is yours rather than a guess made on your behalf.

Most harnesses have one. These are genuinely different shapes of work, so Perch keeps them separate rather than pretending one pattern fits everything.

Workers

Spawned during a turn and run inside it. The turn finishes when they do.

Flock

Plans a team, runs it in parallel, and synthesizes one answer. For big, splittable jobs.

Delegate

Detached. Runs on its own, proposes file changes, and waits for your approval before anything is written.

Background shell

An OS-level job you poll. The build keeps running while the conversation moves on.

The model that wrote it is the wrong one to grade it.

Perch is model-agnostic, so the helpers it spawns do not have to run on the model doing the main work. Point them at a different one and you get an actual second opinion instead of a model reviewing its own output and finding it excellent.

That is only possible because you are not locked to one vendor. Every model in the registry is available, metered at its published rate with no markup, and we published the nine-model benchmark rather than asserting the results.

A project file is table stakes. Perch runs three memory systems, and every piece of context arrives with a recorded reason for why it is there.

Project files

PERCH.md, memory notes, and rules live in your folder as plain markdown you own, read on every turn.

Durable memory

Account-level cards retrieved by hybrid semantic and keyword search, fused with reciprocal rank fusion, then weighted by confidence and recency.

Learning from corrections

Correct Perch once and that correction can become a permanent memory. You do not also have to go write it down.

How memory works, including how lanes and a token budget decide what reaches the model each turn.

The same agent does the work around the code.

Coding agents stop at the repo. Perch was built for legal, financial, and document work where a confident wrong answer has consequences, and that machinery does not switch off when you open a codebase. The same session that fixes the reconciliation bug can audit the payments it was getting wrong, check the figures against the source documents, and draft the memo explaining it with a citation on every claim.

One agent, one workspace, one memory. You are not stitching a coding tool to a document tool and hoping they agree.

Point it at a repo.

Perch Code runs on Desktop and in the CLI. Both work from your local folders, and both are included on every plan.