v3/implementation/adrs/ADR-042-gas-town-analysis.md
Research - Comparative Analysis (2026-01-24)
2026-01-24
Steve Yegge released Gas Town on January 1, 2026, a multi-agent orchestration system built on top of Beads, his git-backed issue tracker. This ADR analyzes these systems and identifies lessons applicable to Claude Flow V3.
Gas Town operates on the principle that sessions are ephemeral cattle; agents are persistent identities. This is the inverse of how most orchestrators work.
| Concept | Gas Town | Claude Flow V3 |
|---|---|---|
| Session Persistence | Cattle (disposable) | Cattle (disposable) |
| Agent Identity | Pets (persistent in Git) | Pets (persistent in memory) |
| Work Storage | Git-backed Beads | AgentDB + SQLite |
| Orchestration | Hierarchical (Mayor → Workers) | Hierarchical/Mesh hybrid |
Formulas (TOML) → Protomolecules → Molecules → Wisps
↓ ↓ ↓ ↓
Templates Classes Instances Ephemeral
| Role | Function | Claude Flow Equivalent |
|---|---|---|
| Mayor | Main coordinator, concierge | hierarchical-coordinator |
| Polecats | Ephemeral workers for swarms | Task tool agents |
| Refinery | Merge Queue manager | N/A (opportunity) |
| Witness | Polecat supervisor | swarm-memory-manager |
| Deacon | Daemon beacon, patrol runner | Daemon workers |
| Dogs | Deacon's helpers | Background workers |
| Crew | Long-lived personal workers | Named agents |
| Overseer | Human operator | User |
"If there is work on your hook, YOU MUST RUN IT."
Every worker has a persistent "hook" (a special bead) where work is queued. This ensures:
Unlike Temporal's deterministic replay, Gas Town achieves durability through:
Even if the path is nondeterministic, the outcome is guaranteed as long as you keep throwing agents at it.
Work-order/ticketing system that wraps slung work into trackable units.
gt sling creates a ConvoyEphemeral workflows (wisps) that run in loops for Refinery, Witness, and Deacon.
Workers can communicate with their predecessors via Claude Code's /resume feature.
| Feature | Gas Town | Claude Flow V3 |
|---|---|---|
| Multi-agent orchestration | ✅ | ✅ |
| Hierarchical coordination | ✅ Mayor-led | ✅ Queen-led |
| Persistent memory | ✅ Git + SQLite | ✅ AgentDB + SQLite |
| Workflow definitions | ✅ Formulas (TOML) | ✅ YAML workflows |
| Background workers | ✅ Dogs, Patrols | ✅ 12 daemon workers |
| Swarm support | ✅ Polecats | ✅ Task tool agents |
| Real-time messaging | ✅ tmux + mail | ✅ MCP tools |
| Aspect | Gas Town | Claude Flow V3 |
|---|---|---|
| Primary UI | tmux | CLI + MCP |
| Language | Go | TypeScript |
| Data Plane | Git JSONL | AgentDB vectors |
| Conflict Resolution | Refinery agent | Manual/hooks |
| Work Units | Beads (hash IDs) | Tasks/Todos |
| Workflow Format | TOML Formulas | YAML templates |
| Session Model | Persistent hooks | Session restore |
| Search | SQLite FTS | HNSW vectors |
Create persistent "hooks" for agents that survive session crashes:
interface AgentHook {
agentId: string;
molecule: string; // Current workflow chain
position: number; // Current step
lastCheckpoint: Date;
}
Implementation: Store in AgentDB, check on session restore.
Wrap slung work into trackable units:
interface Convoy {
id: string;
name: string;
trackedTasks: string[];
status: 'active' | 'landed' | 'failed';
startedAt: Date;
completedAt?: Date;
}
Benefit: Better visibility into swarm progress.
Dedicated agent to handle git conflicts in multi-agent work:
// New agent type
{
name: 'refinery',
role: 'Intelligent merge conflict resolution',
responsibilities: [
'Process merge queue one-at-a-time',
'Reimplement changes against new baseline',
'Escalate irreconcilable conflicts'
]
}
Implement patrol loops for critical workers:
interface Patrol {
worker: string;
steps: PatrolStep[];
backoffMs: number;
maxBackoffMs: number;
}
Enhance YAML workflows with variable substitution:
# Formula equivalent
name: feature-workflow
variables:
- feature_name
- branch_prefix
steps:
- id: design
description: "Design ${feature_name}"
- id: implement
depends: [design]
description: "Implement ${feature_name}"
Add ephemeral task mode that doesn't persist to Git:
const wisp = await taskCreate({
...task,
ephemeral: true, // Don't persist after completion
squashSummary: true // Compress to single line
});
Enable agents to query previous session context:
// hooks session-restore with predecessor query
await hooks.sessionRestore({
sessionId: 'previous',
query: 'What was the status of the auth refactor?'
});
For power users who want terminal-native orchestration:
npx claude-flow tmux attach --mayor
npx claude-flow tmux crew cycle
Marketplace for workflow templates:
npx claude-flow formulas search "release"
npx claude-flow formulas install @community/release-workflow
Yegge's insight: "Sessions are cattle, agents are pets, work is permanent."
Git provides:
Claude Flow uses AgentDB for vectors, but could add Git-backed audit logs for critical state.
Molecules solve the "LLM context window" problem by:
This is why Gas Town can run million-step workflows (MAKER 20-disc Hanoi).
Yegge's evolution chart is useful for positioning:
| Stage | Description | Tool |
|---|---|---|
| 1 | Zero AI | Manual coding |
| 2 | IDE agent, permissions on | Cursor, Copilot |
| 3 | IDE agent, YOLO mode | Trust enabled |
| 4 | IDE wide agent | Full screen agent |
| 5 | CLI single agent | Claude Code |
| 6 | CLI multi-agent | 3-5 parallel |
| 7 | 10+ agents, hand-managed | Power user |
| 8 | Building orchestrator | Gas Town, Claude Flow |
Claude Flow V3 targets Stage 7-8 users.
Gas Town represents a significant advancement in multi-agent orchestration, particularly in:
Claude Flow V3 has advantages in:
The ideal system would combine Gas Town's durability guarantees with Claude Flow's intelligence features.