Vibe coding level:

You don't think of yourself as a "builder" but you'd like to become one. You want to move from "just talking in meetings" to actually building real software. The terminal is a terrifying black box.

Status / Workflow Pipeline

Every agent in Sparkle wears a little progress tracker, like the one that tells you your pizza is being prepared, baked, and out for delivery. At a glance it tells you exactly where that agent's code is on its journey from a loose edit to shipped: Uncommitted, Committed, Pull Request, On Main, Merged. A thin progress line fills left to right as the work advances, so you always know exactly where your code is without typing a single command.

Every agent shows where its code is on a pipeline: Uncommitted, then Committed, then Pull Request, then On Main, then Merged and live, with a progress line filling left to right.

The five stages, in order, with the color each one lights up when it is reached:

  • Uncommitted (amber): there are edits in the working tree that are not saved yet.
  • Committed (cyan): the work is saved as commits on this agent's branch.
  • Pull Request (violet): a pull request is open for review on GitHub.
  • On Main (blue): the work has been merged into the integration branch (main).
  • Merged (green): done, the work has shipped to main.

How it works

Sparkle watches each agent's real git state and the GitHub PR state, then picks the furthest-along stage it can actually prove, never guessing past the evidence.

You do not have to do anything to make the tracker work. Sparkle reads the real state of your project for you and lights up the right stage.

Here is what each color is telling you. Amber (Uncommitted) means the agent has made changes but has not saved a snapshot yet, so if you closed it right now you would lose that work. Cyan (Committed) means the work is safely saved on this agent's own branch (a private lane for its changes), so closing it keeps the work. Violet (Pull Request) means the agent has opened a pull request, which is a formal "please review and accept these changes" request. Blue (On Main) means those changes were accepted into the main line of your project. Green (Merged) means it is all the way done and shipped.

You will mostly watch the line crawl from amber toward green on its own. When it turns green, that thing is real and it is in your project.

The tracker is a live read of git plus the PR probe, distilled to one rail. No more git status in one window and gh pr view in another to reconstruct "wait, did that actually land?" The rail already did it.

The mechanics that matter to you: Committed wins over a dirty tree. Once a branch has commits, a fresh uncommitted edit on top does not drag the bar backward to amber, because the branch has genuinely gotten further than that. And the bar is monotonic: it advances when the evidence advances and holds its high-water mark through the brief dip where a merge drops the commits-ahead count to zero. Start a genuinely new cycle of work (new commits on a branch whose earlier work already shipped) and it correctly tracks the new cycle instead of staying pinned green. You get an honest readout you can trust at a glance and keep shipping.

Two signal sources, furthest-along wins, monotonic. Local git gives you the floor: ahead > 0 reads Committed, otherwise Uncommitted (a clean or dirty pre-commit branch both sit at the start line). PR/On Main/Merged cannot be inferred from ahead/behind/dirty, so they are advanced explicitly from a PR probe plus reachability checks.

Precedence, strongest first: GitHub PR merged forces Merged; reachability into main/origin (or, for a worktree-isolated worker, into its orchestrator's branch) gives On Main / Merged; PR open gives Pull Request; then local ahead/dirty gives Committed / Uncommitted. The reachability checks are gated on a committedSeen watermark, because a freshly cut branch's tip trivially sits in main and would otherwise read as "landed." A build agent's own chevron rolls up to its least-advanced worker: the whole thing is not Merged until every worker is. One known false positive, by design: hard-reset a branch back to main HEAD (discard, not merge) and the watermark still shows On Main. Rare, deliberate, and not worth persisting per-commit merge proofs to catch.

Why it matters

The whole point is that you never have to wonder, and never have to dig, to know the state of your work.

When you are new, the scariest question is "is my work safe, or did I just lose it?" The tracker answers that for you in a color. Amber means "not saved yet," green means "shipped and done," and everything in between is clearly marked. You do not have to learn any commands or trust your memory.

It also kills the worst feeling in software: the quiet doubt of "wait, did that actually happen?" With Sparkle, you look at the rail and you know. No guessing, no hoping.

You are usually running several agents at once. Without a tracker, "where is everything?" is a tab-by-tab investigation. With it, you scan the grid and instantly see which agents are still loose in their working tree, which are in review, and which already landed. The slow-to-ship ones announce themselves.

That is minutes you stop bleeding on status archaeology, and it is the confidence to fan out wider, because you can actually keep track of a fleet instead of one thing at a time.

The value is a single source of truth for "where is this code" across a fleet, derived from the same git and PR facts you would check by hand, but assembled once and shown consistently. No reconstructing state in your head from four terminal commands per agent. The honesty is the feature: it never claims a stage it cannot prove from real git state, and the build rollup tracks the slowest worker, not the most optimistic one. You can trust the green.

vs. the 1980s terminal

The terminal can tell you all of this. It just makes you assemble it yourself, one command and one agent at a time.

In a plain terminal (the black text-only window), there is no tracker. To learn where your work stood, you would type cryptic commands like git status and read walls of output, then do it again for every separate piece of work. It assumes you already know the magic words. Sparkle turns all of that into a colored line you just look at.

A terminal makes you run git status, then gh pr view, then stitch the answer together in your head, per agent, every time you want to know "did it ship?" Sparkle does that stitching once and shows it as a rail. Same facts, zero round-trips, across the whole fleet at once.

One terminal gives you one serial REPL: git status, git log --oneline @{u}.., gh pr view, repeated per agent, with the synthesis happening in your head. Sparkle computes the furthest-provable stage from the same primitives and renders it monotonically, per agent, with a fleet rollup. Nothing here is magic you could not do by hand. It is the by-hand work, done for N agents, continuously, so you do not.

Where to go next