Gantry runs are deterministic sequences which get logged in detail. In addition to detailed stats on all runs, it is possible to replay any previous run in the Gantry TUI.
To show this feature off, I record screencasts of replays and speed them up even more, so a multi-hour run is compressed to half a minute. These videos, with no sound, are used as illustrations on the Gantry website, drawing from an archive of 100+ replays.
In addition to a screencast video, every run has a page where you can follow the decomposition into milestones and sprints, and see stats for each step:
There's also obnoxious clanker prose on these pages, describing what was being built and what choices the planner agents made. It's very grating for those of us who can't stand the clanker technolect, but it gives detailed information about what was actually going on inside these real-world production runs of Gantry.
Watching Gantry build itself
The Gantry runs I publish on the website are ones which built features of Gantry itself. I also run Gantry in other projects, a total of 19 different repos at this point. But the ones I publish here are only the Gantry ones.
I also use the replays to present the releases. In the change log, every Gantry run which contributed to the release version gets linked up with a replay.
Come at me, bro
Next to the stats, I offer the replays to anyone who wants to evaluate the quality of Gantry and the ideas behind it.
If I were to evaluate a meta-harness, and I had to choose between analyzing the source code or acessing real-world stats and replays from hundreds of production runs – I would pick the latter.
Yep, Gantry is closed source. But you get the full source code when you buy it and a license for unlimited personal or internal use.
What is Gantry, again?
Gantry tries to solve the problem of context rot by decomposing a big plan into sequences of smaller plans. The default pattern uses a metaphor of milestones and sprints.
The work is lined up in deterministic sequences driven by Gantry without using any LLM calls. This means the top level running things is no longer at risk of context rot. We use LLM agents exclusively as 'subagents', but launched by a deterministic sequencer. This means we can have sequences run autonomously for hours or days without cascading context issues.
Gantry aims to be simple, solving a well-defined problem in a clean way. It's built for playing nice with other tools, so you can use your favorite coding agent, multiplexer or meta-harness to drive Gantry.
Softcoded orchestration
Orchestration patterns are not defined in code. Gantry provides only pattern primitives and an interpreter to execute patterns.
The default Gantry pattern alternates between launching agents and running tests. It uses planner, worker, reviewer and troubleshooter agents.
You can change this pattern any way you like. A custom agent type is a prompt in a markdown file referenced from a pattern file.
Basic usage
You use Gantry by feeding it a big plan. Gantry will not help you make plans. But once you have a plan, Gantry takes it from there.
Gantry runs in your terminal, as a TUI or writing to stdout. You don't have to interact with it. 100% of the runtime UI is optional, Gantry will work just as well without it.
Launch Gantry with gantry plan.md and go do something else, come back hours later and have the work done.