The six agents of the session, live. Hover the map, or drag a node.

  1. 01FaroApp shell
  2. 02VelaPhoto picker
  3. 03IrisPalette
  4. 04OrzaPoster + PNG
  5. 05LumenAssemble
  6. 06NubeStyle morph

Runs on Claude Code.

A team of coding agents, on your Mac.

Plait gives every agent its own git branch and merges into main only what passes your checks. The map is a real session, replayed event by event.

Join the waitlist

Free to start. The first 100 on the list get Pro for $96 a year, for life.

One brief, six branches.

BRIEF.md

Your Year in a Poster

“Pick 6–12 photos from your year.”

Then a five-colour palette, a poster in three styles, and a PNG to save.

  1. Faro

    App shell

    El esqueleto visible, el modo ?demo=1 y la página que monta todo

    11 files791 lines

    in main at 04:26

  2. Vela

    Photo picker

    El selector de fotos, la reducción y la bandeja

    1 file146 lines

    in main at 02:14

  3. Iris

    Palette

    La paleta de 5 colores, el título «A … year» y la franja por tono

    6 files346 lines

    being checked at 06:58

  4. Orza

    Poster + PNG

    El póster en 3 estilos a 1080×1920 y el PNG

    6 files761 lines

    waiting for you at 06:58

  5. Lumen

    Assemble

    La animación de ensamblado del póster y el brillo holo

    6 files418 lines

    being checked at 06:58

  6. Nube

    Style morph

    La transición entre estilos y la paleta pintándose

    7 files515 lines

    being checked at 06:58

Files written
37
Check runs
62
Failed, then fixed
1
In main when the recording stops
2/6

Scroll to play the session

Rehearsal 3 of your-year-poster, as it was recorded.

mainno screen to open yet
  1. 00:00: The orchestrator splits the brief. One brief, six tasks. The orchestrator is a Claude Code session with Plait’s tools, and it opens a seat for each task about ten seconds apart.
  2. 00:52: Six agents, six worktrees. Faro, Vela, Iris, Orza, Lumen and Nube each get a branch and a folder of their own, like cafe/nadir-657bf44f. What they write stays hollow on the map until it reaches main.
  3. 01:42: Every change is checked. Before calling anything done, the agents run the project’s own checks: tsc, lint, build and node --test. 62 runs in 06:58.
  4. 02:14: Merged into main. Vela’s photo picker merges first, at 02:14. Its file stops being hollow and takes the colour of its folder. Main only changes here.
  5. 03:24: “Done” needs evidence. An agent saying it’s finished proves nothing. At 03:24 Plait stopped Iris: it couldn’t verify the result. At 04:21 it sent Nube back with one finding to fix.
  6. 04:26: The app shows up. At 04:26 Faro’s skeleton merges, and for the first time main has something to open: the poster app, running in demo mode on a phone.
  7. 06:29: Some calls are yours. Plait stops and asks instead of guessing. At 06:29, Lumen’s next step could destroy work; at 06:33, Orza’s would change the agreed scope. Amber means it needs you.
  8. 06:58: The recording ends here. 06:58 in, two of the six branches are in main. The other four are being checked or waiting for a decision. When a complete session is recorded, it replaces this one.
  9. 06:58: the recording ends with two of six branches in main.

One terminal, and a team behind it.

Orchestrator

A Claude Code terminal with Plait connected over MCP. It opens a seat per task and answers agents when they ask. Nothing starts until you approve the plan.

Live diff

Each agent writes on its own branch. Your main only changes when Plait merges.

Iriscafe/calmo-bcdd3c97src/palette/color.ts+160 −0 · 01:04
1+// Lógica pura de color (sin DOM): usable desde Node para los tests.
2+
3+export type Rgb = [number, number, number];
4+export type Hsl = { h: number; s: number; l: number };
5+
6+export function hexToRgb(hex: string): Rgb | null {
7+  const m = /^#?([0-9a-f]{6})$/i.exec(hex.trim());
8+  if (!m) return null;
9+  const n = parseInt(m[1], 16);
10+  return [(n >> 16) & 255, (n >> 8) & 255, n & 255];
11+}
12+
13+export function rgbToHex([r, g, b]: Rgb): string {
14+  const c = (v: number) =>
15+    Math.max(0, Math.min(255, Math.round(v))).toString(16).padStart(2, "0");
16+  return `#${c(r)}${c(g)}${c(b)}`.toUpperCase();
17+}
18+
19+/** h en grados [0,360), s y l en [0,1]. */
20+export function rgbToHsl([r, g, b]: Rgb): Hsl {
21+  const rn = r / 255;
22+  const gn = g / 255;
23+  const bn = b / 255;
24+  const max = Math.max(rn, gn, bn);
25+  const min = Math.min(rn, gn, bn);
26+  const l = (max + min) / 2;

Checks and the evaluator

Agents run your checks; then a fresh, read-only Claude reviews the diff against the task. Fixable findings go back to the same agent, and risky calls wait for you.

0 runs0 passed0 failed0 Plait stepped in00:00

    Worktrees

    Two branches merged during the recording; the other four were still in review when it ended.

    Six branches leave main between 00:00 and 00:52 and run in parallel. Vela merges at 02:14 and Faro at 04:26; the other four are still open when the recording ends at 06:58.00:0001:0002:0003:0004:0005:0006:0007:00main02:50 · feat(app): cream skeleton, Anton/Inter Tight, reducer state, ?demo=1 loop, stubs03:05 · feat(app): wire real @/pick, surface photo load failuresFaronadir-657bf44f00:58 · feat(pick): loadPhotos (reduce to 1200px, average color) and PhotoPicker trayVelasirio-5afe63e702:20 · palette: extractPalette (k-means), yearTitle, hueStrip, PaletteChips y HueStrip03:24 · Plait stopped the loop and asked for a decision: it couldn’t verify the result05:32 · Plait stopped the loop and asked for a decision: it couldn’t verify the resultIriscalmo-bcdd3c9704:01 · poster: tres estilos 1080x1920, StyleSlider y export PNG con layout compartido06:33 · Plait stopped the loop and asked for a decision: it would change the agreed scopeOrzagala-4593454a02:45 · wow: animación de ensamblado del póster y brillo holo03:59 · Plait stopped the loop and asked for a decision: it couldn’t verify the result06:29 · Plait stopped the loop and asked for a decision: it could destroy workLumenonda-f6d5875703:20 · feat(morph): StyleMorph FLIP entre estilos y paintPalette con gotas en arco04:21 · Plait sent it back to fix 1 finding · attempt 1/305:36 · Plait stopped the loop and asked for a decision: the same failure repeated without progressNubejade-2ba929eb

    commit Plait stopped it merged still open at 06:58

    Every row comes from the recording, at its real time. Tasks and code comments stay in Spanish, as they were written.

    It runs on your own Claude Code.

    Plait drives the official claude CLI, signed in with your own Claude plan or API key. Plait never sees your Claude credentials and there is no server of ours in the middle; projects, worktrees and metrics stay on your Mac. Claude usage is billed by Anthropic under your plan, and parallel agents use it faster.

    Orchestrates
    Opus
    Builds
    Sonnet
    Evaluates
    Opus
    Explores
    Haiku

    The default model per role, yours to change. In rehearsal 3 all six builders ran Sonnet.

    If you want to record it, there’s a mode for that.

    Show mode lays a session out for the screen, 16:9 or 9:16, with the map, the agents and the merges in one frame. It’s how the videos on the channel are made.

    The same recording in show mode at 20×, from the first task to where the recording ends.

    Free to start. Pro when the team grows.

    Plait

    Free

    • An orchestrator that splits your brief into tasks
    • Up to 3 agents in parallel, each on its own branch and worktree
    • The live map of your code
    • Merging into main
    • The video kit, with “built with Plait” on it

    Plait Pro

    $120a year

    or $15 a month

    • Unlimited agents
    • The evaluator: criteria and evidence for every task, and only what passes is merged
    • The video kit without the watermark
    • Themes, Dawn included

    More Pro features are on the way.

    For the waitlist

    Pro for $96 a year, for life

    The first 100 people on the list get it. Your email holds the spot, and nothing is charged today. You’ll need a Mac, Claude Code signed in, and a git repo.

    No card, no charge today. We only email you about Plait, and never share your address. Privacy

    Questions people ask

    Can I use Plait today?
    Not yet. Plait is in development and builds the apps you see on the channel every day. People on the waitlist get early access first, by email. There’s no date here because there isn’t one yet.
    Is the map on this page real?
    It’s Plait’s own map engine, running in your browser on the recorded events of a real session: the agents, files and times are the session’s. The recording covers 06:58. Two of the six branches had merged by then; the other four were still being checked or waiting for a decision.
    Does it cost extra Claude usage?
    Agents run on the claude CLI you already have, so they count against your own plan like any Claude Code session. Six agents at once use six sessions’ worth, and Plait shows the spend of each one as it goes.
    Does my code go anywhere new?
    No. Plait has no server. Projects, worktrees and its own metrics stay on your Mac, and your code only goes where Claude Code already sends it.
    Which coding agents does it work with?
    Plait runs on Claude Code: the orchestrator, every agent and the evaluator are Claude Code sessions. The evaluator stays independent because it’s a fresh, read-only session that only sees the task, the diff and the evidence.
    Windows or Linux?
    Not planned. Plait is a native Mac app.
    How long does a session take?
    As long as the work does. If you want to hold a session to a time box, Plait has an optional timer that keeps the scope honest.