Files

The "second run" demo

compound-loop.gif is the animation embedded at the top of the root README. It shows the one thing that distinguishes Compound Engineering from any other agent tool: a learning written in one session being read back and applied in a later, unrelated one.

Regenerating it

vhs assets/demo/compound-loop.tape

compound-loop.tape drives VHS; it runs play.sh and captures the result. Both files are checked in, so the GIF is reproducible rather than a one-off screen capture. Re-render it whenever the CLI's real output changes so the demo stays truthful.

You can also run bash play.sh on its own to preview a change without rendering. The tape exports CE_DEMO_TAKE=1 and blanks the shell prompt, which is what lets the capture safely outlive the script: no prompt and no cursor draw after play.sh exits, so the closing card holds the final frame and Sleep in the tape can be retuned freely. A standalone run restores your cursor normally.

What it is, and what it is not

play.sh is a scripted playback of a real session, not a live agent run. Every line it prints is transcribed from actual recorded output — Claude Code's / markers, its Agent(name) Opus 5 (1M context) and Backgrounded agent (↓ to manage · ctrl+o to expand) lines, and its spinner frames are reproduced as the terminal really renders them, not approximated.

This matters and has one rule: the shown output must match what the tool actually prints. A scripted demo of real behavior is a demo. A scripted demo of behavior the tool does not have is a lie. If a skill's output changes, re-transcribe rather than letting the GIF drift.

Source

The two beats are a genuine matched pair from one repository, 18 days apart, where the second session demonstrably read the first session's output:

  • Beat 1ce-compound ran after a merged PR and wrote a learning about an auth-gate trap: an env var declared only in wrangler.jsonc never reaches a dev worktree, so every authenticated user gets redirected. The arc shown (probe, three parallel research subagents, assemble, write, validators) is the real sequence and the real ordering.
  • Beat 2 — 18 days later, in a different worktree on unrelated work, a ce-plan run dispatched a learnings researcher across docs/solutions/. It scanned 71 files and returned beat 1's file among its strong matches. Two constraints in the resulting plan — an assertedOptional env-plumbing decision and a .worktreeinclude caveat — trace to that learning and to nothing in the prompt.

Real timings, for anyone re-cutting this: the three subagents in beat 1 ran 56s / 64s / 76s in parallel, and the full arc took about six minutes. The demo compresses to roughly 35 seconds but preserves the ordering.

Anonymization

The source sessions are from a private product repository. Everything identifying is substituted, consistently, and the substitutions preserve string-length class so line wraps stay believable: the org, repo, product, and feature names; usernames and home paths; branch names, ticket IDs, PR numbers, and commit SHAs; environment variable and route names.

What is deliberately kept: the CE scratch paths under /tmp/compound-engineering-<uid>/, the skill and subagent names, the validator output, and the generic infrastructure vendors. Those are the product's real behavior, and faking them would defeat the point.

If you re-mine source material for a new cut, scrub credentials before recording anything — session transcripts routinely contain live tokens and page passwords.