| name | gastown |
| description | Gas Town multi-agent workspace manager. Use when working with gt CLI commands, managing rigs/polecats/witnesses/refineries, dispatching work (gt sling), agent communication (gt nudge, gt mail), Dolt server operations, or understanding Gas Town architecture. |
gt (Gas Town) Expert
gt manages multi-agent workspaces called rigs. It coordinates agent spawning,
work distribution, and communication across distributed teams of AI agents.
When to Use This Skill
Invoke this skill when:
- Using
gt CLI commands (sling, nudge, hook, done, status, etc.)
- Managing Gas Town agents (polecats, witness, refinery, deacon, mayor)
- Understanding rig architecture and agent roles
- Dispatching work with
gt sling or formulas
- Agent communication via
gt nudge or gt mail
- Managing the Dolt server
- Running
gt prime for context recovery
- Using
gt done to complete work
Architecture Overview
Town (~/.gt/ or ~/gt/)
├── mayor/ ← Global coordinator (Chief of Staff)
├── deacon/ ← Town-level watchdog (manages witness + refinery)
├── <rig>/ ← A project workspace (e.g., gastown_el/)
│ ├── .beads/ ← Issue tracking (Dolt-backed)
│ ├── polecats/ ← Worker agents (ephemeral sessions, persistent identity)
│ │ └── <name>/ ← Individual polecat worktree
│ ├── refinery/ ← Merge queue processor
│ └── witness/ ← Per-rig polecat health monitor
Agent Roles
| Role | Purpose |
|---|
| Polecat | Worker agent. Gets assigned issues, implements, runs gt done |
| Witness | Per-rig health monitor. Nudges stuck polecats, handles cleanup |
| Refinery | Merge queue processor. Merges completed polecat branches to main |
| Mayor | Town-level coordinator. Routes cross-rig work, handles escalations |
| Deacon | Town-level watchdog. Manages witness + refinery health |
| Overseer | Human stakeholder. Receives critical escalations |
The Propulsion Principle (GUPP)
If you find work on your hook, YOU RUN IT. No confirmation. No waiting.
The hook is your durability primitive — work survives session restarts,
context compaction, and handoffs.
gt hook
gt mol current
Work Dispatch (gt sling)
gt sling is THE unified work dispatch command:
gt sling ge-abc gastown_el
gt sling ge-abc gastown_el/furiosa
gt sling ge-abc mayor
gt sling ge-abc gastown_el --crew roman
gt sling ge-abc gastown_el --formula shiny --var base_branch=main
gt sling ge-abc gastown_el --merge=direct
gt sling ge-abc gastown_el --merge=mr
gt sling ge-abc gastown_el --merge=local
gt sling ge-abc gastown_el --no-convoy
Hook Management
gt hook
gt mol status
gt hook gt-abc
gt hook gt-abc gastown_el/furiosa
gt unsling
gt hook --clear
Completing Work (gt done)
MANDATORY final step for polecats:
gt done
gt done --status ESCALATED
gt done --status DEFERRED
gt done --cleanup-status clean
gt done --pre-verified
gt done automatically:
- Submits branch to merge queue
- Notifies Witness with exit outcome
- Syncs worktree to main
- Transitions polecat to IDLE
Agent Communication
Nudge (Ephemeral — Preferred)
gt nudge gastown_el/furiosa "Check your mail"
gt nudge witness "Polecat alpha seems stuck"
gt nudge mayor "Status update"
gt nudge deacon "session-started"
gt nudge gastown_el/furiosa -m "Start on the login fix"
gt nudge gastown_el/furiosa --stdin <<'EOF'
Status update:
- Task 1: complete
- Task 2: blocked
EOF
gt nudge target "msg" --mode wait-idle
gt nudge target "msg" --mode queue
gt nudge target "msg" --mode immediate
gt nudge target "msg" --force
gt broadcast "Merge freeze starts Thursday"
Role shortcuts: mayor, deacon, witness, refinery (expand to session names)
Mail (Persistent — Use Sparingly)
Every gt mail send creates a permanent bead + Dolt commit. Use nudge instead
unless the message MUST survive the recipient's session death.
gt mail inbox
gt mail read <mail-id>
gt mail send gastown_el/witness -s "HELP: auth bug" -m "Short message"
gt mail send mayor/ -s "BLOCKED: dependency" --stdin <<'BODY'
Issue: ge-abc
Problem: Cannot proceed without X
Tried: approaches 1, 2, 3
Question: How should we handle Y?
BODY
gt mail send --human -s "Need approval" -m "Context..."
gt mail send --self -s "Remember" -m "Check X before pushing"
Mail budget: 0-1 messages per polecat session. Default to nudge.
Escalation
gt escalate "Auth service is down" -s HIGH
gt escalate "Data loss risk" -s CRITICAL
gt escalate "Blocker on ge-abc" -s HIGH -m "Tried: X, Y, Z. Need: access to prod"
Severity levels: LOW, MEDIUM, HIGH, CRITICAL
Molecule/Formula Workflow
gt formula list
gt formula show shiny-enterprise
gt mol current
gt mol progress
gt mol step done
gt mol dag
Session Management
gt prime
gt prime --hook
gt handoff -s "Subject" -m "Context for next session"
gt resume
gt checkpoint list
gt peek gastown_el/alpha
gt agents
Status and Health
gt status
gt vitals
gt doctor
gt trail
gt feed
gt ready
gt orphans
Convoy Tracking
Convoys track batches of work across rigs:
gt convoy list
gt convoy show <convoy-id>
gt dashboard
Dolt Server Operations
The Dolt server on port 3307 is the data plane. It is fragile.
gt dolt status
gt dolt start
gt dolt stop
gt dolt cleanup
kill -QUIT $(cat ~/gt/.dolt-data/dolt.pid)
gt dolt status 2>&1 | tee /tmp/dolt-hang-$(date +%s).log
Port assignments:
3307 — Gas Town production (NEVER touch arbitrarily)
3308 — beads.el development
3309 — gastown.el development
Services
gt up
gt down
gt daemon start
gt daemon stop
gt daemon status
gt start
Rig Management
gt rig list
gt rig show gastown_el
gt worktree <rig>
gt init
Polecat Management
gt polecat list
gt polecat show furiosa
gt polecat spawn <rig>
gt session list
Witness Operations
gt witness status
gt witness start
gt witness stop
Costs and Diagnostics
gt costs
gt metrics
gt log
gt patrol digest
Memory
gt remember "key" "value"
gt memories
gt memories search "auth"
gt forget "key"
Git Operations
gt commit -m "feat: add feature"
gt prune-branches --dry-run
gt prune-branches
Key Concepts
The Hook
The "hook" is your durability primitive — a persistent record of what you're
working on. Survives:
- Context compaction
- Session restarts (via
gt handoff)
- Crashes
Work on your hook = your current assignment.
Wisps vs Beads
- Bead: Permanent issue. Tracked indefinitely.
- Wisp: Ephemeral issue. Auto-cleaned by TTL (short-lived tasks).
Molecules are attached to beads (or wisps for ephemerals).
Merge Queue Workflow
Polecat implements → git push → gt done → Refinery MR → merged to main
Work is NOT landed until it's on main OR in the Refinery MQ.
PR Workflow (longeye and similar repos)
Implement → Create PR → Monitor CI → Address feedback → CI green + approved → gt done
Directory Discipline
YOUR WORKTREE: <rig>/polecats/<name>/<repo>/
NEVER edit: <rig>/ directly (not a git working tree)
pwd
git status && git add <files> && git commit -m "..." && git push
gt done
Startup Protocol
gt prime --hook
gt hook
gt mol current
If hook has work → EXECUTE. No announcement. No waiting.
If hook empty → check mail: gt mail inbox
Common Patterns
Complete a Polecat Session
eldev -p -dtT lint
eldev -p -dtT test
eldev -p -dtT compile
git status
git add <specific-files>
git commit -m "feat: ..."
git push
gt done
Escalate a Blocker
gt escalate "Cannot proceed: X is unavailable" -s HIGH -m "Details: ..."
Hand Off to Fresh Session
gt handoff -s "Working on ge-abc" -m "Current step: 3 of 5. Next: implement Y."
Check System Health
gt vitals
gt dolt status
gt agents
Quick Reference
| Command | Purpose |
|---|
gt prime | Load role context (run after compaction) |
gt hook | Show/attach work on hook |
gt mol current | Current molecule step |
gt sling <bead> <target> | Dispatch work to agent |
gt done | Signal work complete (MANDATORY final step) |
gt done --status ESCALATED | Signal blocker |
gt nudge <target> "msg" | Ephemeral agent message |
gt mail send <addr> | Persistent mail (sparingly) |
gt escalate "desc" -s HIGH | Escalate critical blocker |
gt handoff -m "context" | Hand off to fresh session |
gt status | Town overview |
gt vitals | Health dashboard |
gt agents | List agent sessions |
gt trail | Recent activity |
gt peek <agent> | View agent output |
gt dolt status | Dolt server health |
gt formula list | Available formulas |
gt convoy list | Track work batches |