GUPP — Gas Town Universal Propulsion Principle¶
Source: Steve Yegge, "Welcome to Gas Town," Jan 1, 2026
Related: steve-yegge-gas-town, steve-yegge-beads, steve-yegge-hierarchy
Definition¶
GUPP (Gas Town Universal Propulsion Principle) is the core execution axiom of the Gas Town orchestrator:
If there is work on your hook, you MUST run it. No yielding, no waiting — relentless execution.
That's the entire principle. It sounds simple. It is simple. And it is the reason most agent frameworks fail.
Why GUPP Exists¶
Most agentic systems — and most people's intuition about AI agents — follows an ask-then-wait model: you present a task, the agent works on it, you wait for a response. This is the SaaS mental model: request comes in, response goes out. It works fine for single-agent interactions but completely breaks down in multi-agent orchestration.
In a multi-agent system where agents can spawn sub-agents, wait for results, hand off work, and defer to later, yielding is contagious. If Agent A yields while waiting for Agent B, and Agent B yields while waiting for Agent C, the entire pipeline stalls. The system becomes a synchronous call chain masquerading as an asynchronous agent swarm.
GUPP exists to eliminate this class of failure entirely. The hook is a data structure (implemented as a Bead queue in Gas Town's architecture) representing pending work assigned to a given agent. GUPP's rule is absolute: if your hook is non-empty, you are running. No exceptions, no deferring, no "I'll check back later."
The Hook¶
The hook is GUPP's mechanism. Each agent in Gas Town has a hook — a queue of Beads representing work assigned to it. When a Mayor assigns a Bead to a polecat, that polecat's hook is non-empty. GUPP dictates that the polecat must immediately begin processing.
In practice, the hook is not a simple FIFO queue. Gas Town's hook supports:
- Priority ordering — critical Beads can preempt lower-priority ones
- Dependency tracking — a Bead may not be actionable until a parent Bead is complete
- Timeout semantics — stale Beads on a hook trigger the Deacon to intervene (see steve-yegge-hierarchy)
But these are implementation details. The GUPP principle is clean: non-empty hook → running. End of story.
GUPP and the Deacon¶
The natural failure mode of GUPP is a stuck agent — an agent whose hook is non-empty but which has stopped processing (crashed, deadlocked, or gone off into an infinite loop). Gas Town addresses this with the Deacon daemon (see steve-yegge-hierarchy).
The Deacon patrols all hooks in the system. If any hook has been non-empty for longer than a configured timeout, the Deacon kills the responsible agent and re-queues the Bead for another agent to claim. This is the operationalization of GUPP: the principle says "always run," and the Deacon ensures that "always" actually means always.
Yegge describes early versions of Gas Town as plagued by "worker corpses" — polecats that had stopped processing but whose hooks still showed pending work. The Deacon was added specifically to handle this failure mode.
GUPP vs Yielding¶
The contrast with the "normal" agent mental model is stark:
| Behavior | GUPP (Gas Town) | Standard Agent Framework |
|---|---|---|
| Empty hook | Idle (ok) | Idle (ok) |
| Non-empty hook | Must run immediately | May defer, batch, or schedule |
| Waiting on sub-agent | Work continues on other hook items | Blocked until sub-agent returns |
| Sub-agent fails | Bead re-queued; operator notified | Propagation up call chain; possible total failure |
| Timeout | Deacon kills and re-queues | Varies; often no timeout enforcement |
The key insight: GUPP treats the hook as a promise — when work appears on your hook, you are contractually obligated to execute it. Standard agent frameworks treat the hook as advice — nice to have, worth processing when convenient.
Kelly Parallel¶
| GUPP Concept | Kelly Equivalent |
|---|---|
| Hook-based work assignment | Kelly's sub-agent spawning — parent spawns child with specific work; child must execute |
| GUPP's "no yielding" rule | Kelly's autonomous continuation — agents continue working without requiring the parent to poll or re-invoke |
| Deacon timeout enforcement | Kelly's heartbeat check-in mechanism — periodic liveness signals detect stuck agents |
| Re-queuing on failure | Kelly's retry/re-spawn on sub-agent failure within the router pattern |
| "Always running when work exists" | Kelly's cron-driven heartbeat + TaskFlow background jobs — persistent execution vs event-driven yield |
Key gap: Kelly has no formal equivalent to GUPP's absolute "must-run-when-hook-is-non-empty" rule. Kelly's autonomous continuation is respected in practice (sub-agents run to completion), but there is no hook-based mechanism that enforces it at the architectural level. A Kelly-style system would benefit from GUPP's framing: work persistence via hooks, with a Deacon-equivalent to handle the stuck-agent problem.
Kelly's heartbeat serves a similar operational function to the Deacon (detecting stuck agents), but heartbeat is file-based and requires the agent to actively update it. The Deacon is a daemon that actively patrols. GUPP's approach is more robust because the enforcement is external to the agent itself.
Source Attribution¶
- Steve Yegge, "Welcome to Gas Town," Jan 1, 2026 — GUPP introduced as the core execution axiom of Gas Town
Bibliography¶
Related Articles¶
steve-yegge-beads, steve-yegge-gas-town, steve-yegge-hierarchy