Skip to content
Oeiuwq Faith Blog OpenSource Porfolio

steveyegge/gastown

Gas Town - multi-agent workspace manager

steveyegge/gastown.json
{
"createdAt": "2025-12-16T00:33:33Z",
"defaultBranch": "main",
"description": "Gas Town - multi-agent workspace manager",
"fullName": "steveyegge/gastown",
"homepage": "",
"language": "Go",
"name": "gastown",
"pushedAt": "2026-01-07T09:35:22Z",
"stargazersCount": 2572,
"topics": [],
"updatedAt": "2026-01-08T01:57:25Z",
"url": "https://github.com/steveyegge/gastown"
}

Multi-agent orchestration system for Claude Code with persistent work tracking

Gas Town is a workspace manager that lets you coordinate multiple Claude Code agents working on different tasks. Instead of losing context when agents restart, Gas Town persists work state in git-backed hooks, enabling reliable multi-agent workflows.

ChallengeGas Town Solution
Agents lose context on restartWork persists in git-backed hooks
Manual agent coordinationBuilt-in mailboxes, identities, and handoffs
4-10 agents become chaoticScale comfortably to 20-30 agents
Work state lost in agent memoryWork state stored in Beads ledger
graph TB
Mayor[The Mayor<br/>AI Coordinator]
Town[Town Workspace<br/>~/gt/]
Town --> Mayor
Town --> Rig1[Rig: Project A]
Town --> Rig2[Rig: Project B]
Rig1 --> Crew1[Crew Member<br/>Your workspace]
Rig1 --> Hooks1[Hooks<br/>Persistent storage]
Rig1 --> Polecats1[Polecats<br/>Worker agents]
Rig2 --> Crew2[Crew Member]
Rig2 --> Hooks2[Hooks]
Rig2 --> Polecats2[Polecats]
Hooks1 -.git worktree.-> GitRepo1[Git Repository]
Hooks2 -.git worktree.-> GitRepo2[Git Repository]
style Mayor fill:#e1f5ff
style Town fill:#f0f0f0
style Rig1 fill:#fff4e1
style Rig2 fill:#fff4e1

Your primary AI coordinator. The Mayor is a Claude Code instance with full context about your workspace, projects, and agents. Start here - just tell the Mayor what you want to accomplish.

Your workspace directory (e.g., ~/gt/). Contains all projects, agents, and configuration.

Project containers. Each rig wraps a git repository and manages its associated agents.

Your personal workspace within a rig. Where you do hands-on work.

Ephemeral worker agents that spawn, complete a task, and disappear.

Git worktree-based persistent storage for agent work. Survives crashes and restarts.

Work tracking units. Bundle multiple issues/tasks that get assigned to agents.

Git-backed issue tracking system that stores work state as structured data.

Terminal window
# Install Gas Town
go install github.com/steveyegge/gastown/cmd/gt@latest
# Add Go binaries to PATH (add to ~/.zshrc or ~/.bashrc)
export PATH="$PATH:$HOME/go/bin"
# Create workspace with git initialization
gt install ~/gt --git
cd ~/gt
# Add your first project
gt rig add myproject https://github.com/you/repo.git
# Create your crew workspace
gt crew add yourname --rig myproject
cd myproject/crew/yourname
# Start the Mayor session (your main interface)
gt mayor attach
sequenceDiagram
participant You
participant Mayor
participant Convoy
participant Agent
participant Hook
You->>Mayor: Tell Mayor what to build
Mayor->>Convoy: Create convoy with issues
Mayor->>Agent: Sling issue to agent
Agent->>Hook: Store work state
Agent->>Agent: Complete work
Agent->>Convoy: Report completion
Mayor->>You: Summary of progress
Terminal window
# 1. Start the Mayor
gt mayor attach
# 2. In Mayor session, create a convoy
gt convoy create "Feature X" issue-123 issue-456 --notify --human
# 3. Assign work to an agent
gt sling issue-123 myproject
# 4. Track progress
gt convoy list
# 5. Monitor agents
gt agents

Best for: Coordinating complex, multi-issue work

flowchart LR
Start([Start Mayor]) --> Tell[Tell Mayor<br/>what to build]
Tell --> Creates[Mayor creates<br/>convoy + agents]
Creates --> Monitor[Monitor progress<br/>via convoy list]
Monitor --> Done{All done?}
Done -->|No| Monitor
Done -->|Yes| Review[Review work]

Commands:

Terminal window
# Attach to Mayor
gt mayor attach
# In Mayor, create convoy and let it orchestrate
gt convoy create "Auth System" issue-101 issue-102 --notify
# Track progress
gt convoy list

Best for: Predefined, repeatable processes

Formulas are TOML-defined workflows stored in .beads/formulas/.

Example Formula (.beads/formulas/release.formula.toml):

description = "Standard release process"
formula = "release"
version = 1
[vars.version]
description = "The semantic version to release (e.g., 1.2.0)"
required = true
[[steps]]
id = "bump-version"
title = "Bump version"
description = "Run ./scripts/bump-version.sh {{version}}"
[[steps]]
id = "run-tests"
title = "Run tests"
description = "Run make test"
needs = ["bump-version"]
[[steps]]
id = "build"
title = "Build"
description = "Run make build"
needs = ["run-tests"]
[[steps]]
id = "create-tag"
title = "Create release tag"
description = "Run git tag -a v{{version}} -m 'Release v{{version}}'"
needs = ["build"]
[[steps]]
id = "publish"
title = "Publish"
description = "Run ./scripts/publish.sh"
needs = ["create-tag"]

Execute:

Terminal window
# List available formulas
bd formula list
# Run a formula with variables
bd cook release --var version=1.2.0
# Create formula instance for tracking
bd mol pour release --var version=1.2.0

Best for: Direct control over work distribution

Terminal window
# Create convoy manually
gt convoy create "Bug Fixes" --human
# Add issues
gt convoy add-issue bug-101 bug-102
# Assign to specific agents
gt sling bug-101 myproject/my-agent
# Check status
gt convoy show
Terminal window
gt install <path> # Initialize workspace
gt rig add <name> <repo> # Add project
gt rig list # List projects
gt crew add <name> --rig <rig> # Create crew workspace
Terminal window
gt agents # List active agents
gt sling <issue> <rig> # Assign work to agent
gt sling <issue> <rig> --agent codex # Override runtime for this sling/spawn
gt mayor attach # Start Mayor session
gt mayor start --agent gemini # Run Mayor with a specific agent alias
gt prime # Alternative to mayor attach
Terminal window
gt convoy create <name> [issues...] # Create convoy
gt convoy list # List all convoys
gt convoy show [id] # Show convoy details
gt convoy add-issue <issue> # Add issue to convoy
Terminal window
# Set custom agent command
gt config agent set claude-glm "claude-glm --model glm-4"
gt config agent set codex-low "codex --thinking low"
# Set default agent
gt config default-agent claude-glm
# View config
gt config show
Terminal window
bd formula list # List formulas
bd cook <formula> # Execute formula
bd mol pour <formula> # Create trackable instance
bd mol list # List active instances

Gas Town includes a web dashboard for monitoring:

Terminal window
# Start dashboard
gt dashboard --port 8080
# Open in browser
open http://localhost:8080

Features:

  • Real-time agent status
  • Convoy progress tracking
  • Hook state visualization
  • Configuration management

Gas Town uses git hooks as a propulsion mechanism. Each hook is a git worktree with:

  1. Persistent state - Work survives agent restarts
  2. Version control - All changes tracked in git
  3. Rollback capability - Revert to any previous state
  4. Multi-agent coordination - Shared through git
stateDiagram-v2
[*] --> Created: Agent spawned
Created --> Active: Work assigned
Active --> Suspended: Agent paused
Suspended --> Active: Agent resumed
Active --> Completed: Work done
Completed --> Archived: Hook archived
Archived --> [*]

MEOW (Mayor-Enhanced Orchestration Workflow)

Section titled “MEOW (Mayor-Enhanced Orchestration Workflow)”

MEOW is the recommended pattern:

  1. Tell the Mayor - Describe what you want
  2. Mayor analyzes - Breaks down into tasks
  3. Convoy creation - Mayor creates convoy with issues
  4. Agent spawning - Mayor spawns appropriate agents
  5. Work distribution - Issues slung to agents via hooks
  6. Progress monitoring - Track through convoy status
  7. Completion - Mayor summarizes results
Terminal window
# Bash
gt completion bash > /etc/bash_completion.d/gt
# Zsh
gt completion zsh > "${fpath[1]}/_gt"
# Fish
gt completion fish > ~/.config/fish/completions/gt.fish
RoleDescriptionPrimary Interface
MayorAI coordinatorgt mayor attach
Human (You)Crew memberYour crew directory
PolecatWorker agentSpawned by Mayor
HookPersistent storageGit worktree
ConvoyWork trackergt convoy commands
  • Always start with the Mayor - It’s designed to be your primary interface
  • Use convoys for coordination - They provide visibility across agents
  • Leverage hooks for persistence - Your work won’t disappear
  • Create formulas for repeated tasks - Save time with Beads recipes
  • Monitor the dashboard - Get real-time visibility
  • Let the Mayor orchestrate - It knows how to manage agents

Check hooks are properly initialized:

Terminal window
gt hooks list
gt hooks repair

Force refresh:

Terminal window
gt convoy refresh <convoy-id>

Restart Mayor session:

Terminal window
gt mayor detach
gt mayor attach

MIT License - see LICENSE file for details


Getting Started: Run gt install ~/gt --git && cd ~/gt && gt config agent list && gt mayor attach (or gt mayor attach --agent codex) and tell the Mayor what you want to build!