docs(kilo-docs): write full content for all Gastown documentation pages

Flesh out all 7 sub-pages with comprehensive content:
- Quick Start: town creation, PAT setup, first task flow
- Concepts: towns, beads, convoys, rigs, agents, micro-adversarial loops
- The Mayor: capabilities, tools, communication tips
- Sling Work: single tasks, convoys, staged convoys, DAG execution
- Code Review: refinery pipeline, adversarial loops, merge strategies
- Settings: models, GitHub PAT, merge strategy, env vars, custom instructions
- Troubleshooting: common failure modes and fixes

Includes React Flow diagram placeholders (TODO comments) describing
what each interactive diagram should visualize.

Also moves Gastown nav link under Platforms section with sub-links and
updates page title to 'Gas Town by Kilo'.
This commit is contained in:
John Fawcett
2026-04-30 14:10:02 -05:00
parent 1e2aca357b
commit df1d1753eb
9 changed files with 999 additions and 45 deletions
+14 -13
View File
@@ -23,6 +23,19 @@ export const CodeWithAiNav: NavSection[] = [
{ href: "/code-with-ai/platforms/mobile", children: "Mobile Apps" },
{ href: "/code-with-ai/platforms/slack", children: "Slack" },
{ href: "/code-with-ai/app-builder", children: "App Builder" },
{
href: "/code-with-ai/gastown",
children: "Gas Town by Kilo",
subLinks: [
{ href: "/code-with-ai/gastown/quick-start", children: "Quick Start" },
{ href: "/code-with-ai/gastown/concepts", children: "Concepts" },
{ href: "/code-with-ai/gastown/mayor", children: "The Mayor" },
{ href: "/code-with-ai/gastown/sling-work", children: "Sling Work" },
{ href: "/code-with-ai/gastown/code-review", children: "Code Review" },
{ href: "/code-with-ai/gastown/settings", children: "Settings" },
{ href: "/code-with-ai/gastown/troubleshooting", children: "Troubleshooting" },
],
},
],
},
{
@@ -62,19 +75,7 @@ export const CodeWithAiNav: NavSection[] = [
},
],
},
{
title: "Gastown",
links: [
{ href: "/code-with-ai/gastown", children: "Overview" },
{ href: "/code-with-ai/gastown/quick-start", children: "Quick Start" },
{ href: "/code-with-ai/gastown/concepts", children: "Concepts" },
{ href: "/code-with-ai/gastown/mayor", children: "The Mayor" },
{ href: "/code-with-ai/gastown/sling-work", children: "Sling Work" },
{ href: "/code-with-ai/gastown/code-review", children: "Code Review" },
{ href: "/code-with-ai/gastown/settings", children: "Settings" },
{ href: "/code-with-ai/gastown/troubleshooting", children: "Troubleshooting" },
],
},
{
title: "Productivity Tools",
links: [
@@ -5,16 +5,163 @@ description: "How the refinery agent reviews and merges code"
# {% $markdoc.frontmatter.title %}
<!-- TODO: Review flow, merge strategies, approval gates -->
Every piece of code produced by Gas Town agents goes through automated review before merging. The **refinery** agent is dedicated to critiquing, verifying, and gatekeeping what lands in your codebase.
## The Review Pipeline
When a polecat finishes a bead and pushes its branch, the work enters the review pipeline:
<!-- TODO: React Flow diagram — Review Pipeline
Linear flow with decision points:
Polecat "pushes branch"
→ MR bead created (status: open)
→ Refinery dispatched (status: in_progress)
→ Refinery reviews diff
→ Decision: "Quality check"
→ PASS: "Merge" → bead closed ✓
→ FAIL: "Send feedback" → Polecat revises → Re-submit → (loop back to Refinery)
Show retry counter on the loop (max 3 attempts)
Caption: "The review pipeline — code must pass refinery review before merging"
-->
The refinery evaluates:
- **Correctness** — does the code do what the task asked?
- **Style** — does it follow project conventions?
- **Completeness** — are tests included? Are edge cases handled?
- **Safety** — any security issues, data leaks, or breaking changes?
## Micro-Adversarial Loops
The core insight behind Gas Town's review system is **adversarial iteration**. Rather than one agent producing a final answer, two agents with different objectives improve the output through tension:
<!-- TODO: React Flow diagram — Adversarial Loop Detail
Circular/orbital layout showing the tension:
Center: "The Code" (evolving artifact)
Orbit 1 (Polecat, blue):
Goal: "Ship the feature" → writes code → pushes
Orbit 2 (Refinery, amber):
Goal: "Protect quality" → reviews → sends feedback OR approves
Connection: feedback arrow from Refinery back to Polecat with example text:
"Missing error handling in the catch block. The API endpoint should return
a structured error response, not swallow the exception."
Polecat then: "Revises with feedback" → pushes again → Refinery re-reviews
Style: animated orbital, showing the push-pull dynamic
Caption: "Adversarial tension between 'ship it' and 'make it better'"
-->
This pattern is fundamentally different from having a single agent self-review:
- Self-review has a **confirmation bias** — the same "mind" that wrote the code evaluates it
- Adversarial review creates **genuine tension** — the refinery has different priorities than the polecat
- Each revision cycle **measurably improves** the output because feedback is specific and actionable
### The Loop in Practice
A typical bead goes through 1-2 revision cycles:
| Cycle | What happens |
|---|---|
| **Write** | Polecat reads the task, writes code, runs tests, pushes |
| **Review 1** | Refinery finds 2 issues: missing test case, inconsistent naming |
| **Revise 1** | Polecat adds the test, fixes naming, pushes again |
| **Review 2** | Refinery approves — code meets quality bar |
| **Merge** | Code lands on target branch |
After 3 failed revision cycles, the bead escalates rather than looping forever.
## Merge Strategies
Gas Town supports two merge strategies, configurable per-town or per-rig:
### Direct Merge
The refinery merges directly to the target branch (convoy feature branch or main) without creating a GitHub PR. This is faster but gives you less visibility into individual merges.
**Best for:** trusted agent output, internal projects, rapid iteration.
### Pull Request Mode
The refinery creates a GitHub PR for each merge. The PR includes:
- The diff
- Review comments from the refinery
- Status checks from CI
You can configure whether PRs auto-merge after refinery approval or require human approval.
**Best for:** production codebases, team environments, audit trails.
## Convoy-Level Review
Convoys add an additional review layer beyond per-bead review:
<!-- TODO: React Flow diagram — Convoy Review Layers
Three columns showing review at different scopes:
Column 1 "Per-Bead Review":
Bead 1 → Refinery ✓
Bead 2 → Refinery ✓
Bead 3 → Refinery ✓ (with one revision cycle shown)
Column 2 "Landing Review":
Combined diff (all 3 beads) → Refinery reviews holistically
"Does the combined work make sense as a feature?"
Column 3 "Human Review" (optional):
Final PR to main → Your team reviews
Caption: "Three layers of review — individual, combined, and human"
-->
| Review Layer | What's checked | Who reviews |
|---|---|---|
| Per-bead | Individual contribution quality | Refinery agent |
| Landing | Combined feature coherence | Refinery agent |
| Human (optional) | Business logic, architecture | Your team |
## Combining with Kilo Code Review
Gas Town's refinery works independently, but combining it with [Kilo Code Review](/code-with-ai/platforms/cloud-agent) creates an even stronger pipeline:
1. **Agent writes** → agent-level refinery reviews (fast, automated)
2. **Code lands as PR** → Kilo Code Review provides human-readable review (deeper, contextual)
3. **Human approves** → code ships
This gives you automated adversarial review for speed **plus** AI-assisted human review for judgment — the best of both approaches.
## Review Configuration
Customize the refinery's behavior in **Town Settings** → **Review**:
| Setting | Options | Default |
|---|---|---|
| `review_mode` | `always` / `never` / `pr_only` | `always` |
| `merge_strategy` | `direct` / `pr` | `direct` |
| `auto_merge` | `true` / `false` | `true` |
| `review_gates` | Strictness level (1-5) | 3 |
| `max_review_cycles` | How many revision attempts | 3 |
### Review Mode
- **`always`** — every bead goes through refinery review (recommended)
- **`never`** — skip review, merge directly on polecat completion (fast but risky)
- **`pr_only`** — only review work that creates a PR
### Review Gates
Higher gate levels make the refinery stricter:
- **Level 1** — basic sanity (compiles, doesn't break tests)
- **Level 3** — standard (style, tests, correctness) — default
- **Level 5** — strict (architecture review, performance, security)
## Handling Review Feedback
When the refinery rejects a submission, it provides specific, actionable feedback. The polecat receives this feedback and revises accordingly. You can see the feedback exchange in the bead's event history.
If a bead fails review 3 times, it transitions to `failed` and creates an **escalation** for human attention. This prevents infinite loops while ensuring difficult code doesn't slip through without proper quality.
@@ -1,24 +1,193 @@
---
title: "Concepts"
description: "Understand the building blocks of Gastown — towns, beads, convoys, rigs, and agents"
description: "Understand the building blocks of Gas Town — towns, beads, convoys, rigs, and agents"
---
# {% $markdoc.frontmatter.title %}
<!-- TODO: Detailed explanation of each concept with diagrams -->
Gas Town by Kilo is built around a small set of composable primitives. Understanding these concepts is key to getting the most out of agent orchestration.
## Towns
A **town** is a persistent workspace where agents operate on your code. It maintains:
- **Configuration** — models, merge strategy, review settings, custom instructions
- **Agent state** — which agents exist, what they're working on, their capabilities
- **Work history** — every bead that's been created, worked on, reviewed, and closed
- **Rig connections** — which repositories are connected and how they're configured
Think of a town as a team's workspace — it accumulates institutional knowledge over time. Agents in your town learn from the history of what's been built, reviewed, and merged.
A town can be personal (owned by you) or organizational (shared across a team).
## Beads
A **bead** is the fundamental unit of work. Every task, review, and coordination action is represented as a bead with a lifecycle:
<!-- TODO: React Flow diagram — Bead Lifecycle
Nodes: open → in_progress → in_review → closed
With branch for: open → in_progress → failed
And loop: in_review → open (when review rejects)
Style: horizontal flow, status-colored nodes (green=closed, blue=in_progress, amber=in_review, red=failed)
-->
| Status | What's happening |
|---|---|
| `open` | Waiting to be picked up by an agent |
| `in_progress` | An agent is actively working on it |
| `in_review` | Work is complete, awaiting review by the refinery |
| `closed` | Successfully completed and merged |
| `failed` | Could not be completed (agent exhausted retries) |
### Bead Types
| Type | Purpose |
|---|---|
| `issue` | A coding task — bug fix, feature, refactor |
| `merge_request` | A review task for the refinery |
| `convoy` | A container for multi-step workflows |
| `escalation` | An issue the agents couldn't resolve — needs human input |
| `message` | Inter-agent communication |
## Convoys
A **convoy** is a multi-bead workflow where tasks can depend on each other. Instead of slinging isolated tasks, convoys let you express complex work as a directed graph.
<!-- TODO: React Flow diagram — Convoy DAG Example
Nodes:
"Explore codebase" (closed) → "Design schema" (closed) → "Implement API" (in_progress)
"Design schema" (closed) → "Write tests" (open)
"Implement API" → "Integration tests" (open)
Style: DAG layout, edges showing dependencies, node colors by status
Caption: "A convoy executing a 5-bead feature implementation"
-->
When you create a convoy, you define:
- **Tasks** — what needs to be done (each becomes a bead)
- **Dependencies** — which tasks must complete before others can start
- **Feature branch** — a shared branch that convoy work lands on
The reconciler ensures beads are only dispatched when their dependencies are met. This means agents naturally build on each other's work.
### Staged Convoys
Convoys can be **staged** — created but not started immediately. This lets you review the plan before agents begin executing. Un-stage when you're ready to go.
## Rigs
A **rig** connects a repository to your town. Each rig has:
- Its own set of agents (polecats, refinery)
- Branch configuration (default branch, merge target)
- Override settings (model, review mode, merge strategy)
A town can have **multiple rigs** — useful when your project spans several repositories.
## Agents
Agents are the workers in your town. Each has a specialized role:
### Polecats (Coding Agents)
Polecats do the actual software engineering:
- Read and understand your codebase
- Write code changes in isolated git worktrees
- Run tests and commands to verify their work
- Push branches when done
Multiple polecats can work in **parallel** on different beads. The default is 2 per rig, configurable up to 5+.
Each polecat gets its own git worktree — they never conflict with each other or with your local development.
### The Refinery (Review Agent)
The refinery is the quality gate. When a polecat finishes a bead:
1. The refinery reviews the diff
2. Checks for issues, style violations, missing tests
3. Either **approves and merges** or **sends feedback**
4. If feedback is sent, the polecat revises and resubmits
This creates a **micro-adversarial loop** — one agent writes, another critiques, forcing iterative improvement before code lands.
<!-- TODO: React Flow diagram — Micro-Adversarial Loop
Circular flow:
Polecat "writes code" → Refinery "reviews" → (approve) → "merge"
→ (reject) → Polecat "revises" → Refinery "reviews" (loop back)
Style: circular/orbital layout, animated edges showing the loop,
highlight the adversarial tension between write and review
Caption: "The micro-adversarial loop — code is critiqued before it lands"
-->
### The Mayor (Coordination Agent)
The mayor is your interface to the town:
- Plans convoys from high-level descriptions
- Reports on status and progress
- Triages issues and escalations
- Manages agent configuration
- Answers questions about the codebase and work history
The mayor runs persistently — always available for conversation.
## The Reconciler
The reconciler is the engine that drives the town forward. It runs on every alarm tick (every 5 seconds when work is active) and:
1. **Drains events** — agent completions, status changes, failures
2. **Evaluates rules** — which beads need agents, which convoys are ready to advance
3. **Emits actions** — dispatch an agent, create a review, update convoy progress
4. **Enforces invariants** — no double-dispatch, no orphaned hooks, bounded retries
You don't interact with the reconciler directly — it's the autonomous engine that keeps the town moving.
## The Micro-Adversarial Loop
The most powerful concept in Gas Town is the **micro-adversarial loop**. Rather than trusting a single agent's output, every piece of work goes through an adversarial cycle:
<!-- TODO: React Flow diagram — Full Adversarial Pipeline
Multi-lane flow showing:
Lane 1 (Polecat): "Read task" → "Write code" → "Run tests" → "Push branch"
Lane 2 (Refinery): "Review diff" → decision diamond "Quality?"
→ Yes: "Merge to target"
→ No: "Send feedback" → (back to Polecat "Revise")
Lane 3 (Convoy level): Multiple beads flowing through the pipeline in sequence,
each one building on the merged output of the previous
Caption: "Every bead goes through write → review → revise cycles before landing"
-->
This pattern compounds when combined with **convoys**:
1. Bead 1: Explore the codebase → reviewed → merged to convoy branch
2. Bead 2: Design the schema (builds on bead 1's context) → reviewed → merged
3. Bead 3: Implement the feature (builds on beads 1+2) → reviewed → merged
4. **Landing review**: The full convoy branch is reviewed as a cohesive unit before merging to main
At every stage, work is critiqued and refined. Combined with Kilo's [Code Review](/code-with-ai/gastown/code-review) product, this creates a pipeline where code is reviewed multiple times by different agents with different perspectives before it ever reaches your main branch.
## How It All Fits Together
<!-- TODO: React Flow diagram — Full Town Architecture
Shows the complete flow:
User → Mayor (chat) → creates Convoy/Beads
Reconciler (center, engine) → dispatches Polecats
Polecat → pushes branch → Refinery reviews → merges
Container (wrapping polecats) with git worktrees
Rig connecting to GitHub repo
Style: similar to the Connect talk architecture diagram but simplified for docs
Caption: "The complete Gas Town architecture"
-->
| Component | Responsibility |
|---|---|
| **You** | Describe work, review PRs, set direction |
| **Mayor** | Plan, coordinate, communicate |
| **Reconciler** | Schedule, dispatch, enforce rules |
| **Polecats** | Write code, run tests, push branches |
| **Refinery** | Review, critique, merge |
| **Container** | Isolated environment with git, tools, runtime |
| **Rig** | Repository connection and configuration |
@@ -1,36 +1,103 @@
---
title: "Gastown"
title: "Gas Town by Kilo"
description: "Autonomous AI agent orchestration for your codebase"
---
# {% $markdoc.frontmatter.title %}
Gastown is an autonomous agent orchestration platform that manages multiple AI agents working on your codebase. It coordinates polecats (coding agents), a refinery (code review agent), and a mayor (coordination agent) to handle tasks, code reviews, and merges — all without constant human oversight.
Gastown by Kilo is an autonomous agent orchestration platform that manages teams of AI agents working on your codebase. Built on [Gastown](https://gastown.dev) — the open protocol for agent orchestration — Kilo's implementation coordinates coding agents, a code review agent, and a conversational coordinator to ship features, fix bugs, and maintain your projects with minimal human intervention.
## Core Concepts
You describe the work. Agents figure out how to do it, write the code, review each other's output, and land clean PRs — while you stay in control of what ships.
- **Towns** — A workspace that connects to your repository and manages agents working on it
- **Beads** — Units of work (issues, tasks, reviews) that agents pick up and complete
- **Convoys** — Multi-step workflows that chain beads together in a dependency graph
- **Rigs** — Repository connections within a town, each with their own agents and configuration
- **The Mayor** — Your primary interface to the town; a conversational agent that coordinates work and answers questions
<!-- TODO: Screenshot — town overview page showing active agents, beads in progress, and a recent merge -->
## What Makes Gastown Different
Unlike single-agent coding tools that handle one task at a time, Gastown orchestrates **multiple specialized agents** working in parallel:
| Agent | Role | What it does |
|---|---|---|
| **Polecats** | Coding | Write code, run tests, push branches. Multiple can work simultaneously on different tasks. |
| **Refinery** | Code Review | Reviews polecat output, runs quality checks, merges approved work. |
| **Mayor** | Coordination | Your conversational interface. Plans work, answers questions, triages issues, keeps things moving. |
These agents operate within a **town** — a persistent workspace connected to your repository. The town maintains state across sessions: work history, agent configuration, and institutional knowledge about your codebase.
<!-- TODO: Screenshot — the mayor chat interface showing a conversation about planning work -->
## How It Works
1. **Create a town** and connect it to your repository
2. **Sling work** — describe what you need done, and agents autonomously pick it up
3. **Agents collaborate** — polecats write code, the refinery reviews and merges, the mayor coordinates
4. **You stay in control** — review PRs, adjust settings, intervene when needed
### 1. Create a town
Connect a GitHub repository to a new town. Gastown provisions a dedicated environment with agents ready to work.
### 2. Sling work
Describe what needs to be done — a bug to fix, a feature to build, a refactor to execute. You can sling a single task or a **convoy** (a multi-step plan where tasks depend on each other).
<!-- TODO: Screenshot — the "Sling Work" dialog or the convoy creation UI -->
### 3. Agents pick it up
The reconciler assigns open work to available polecats. Each agent gets its own git worktree, writes code, runs commands, and pushes a branch when done.
### 4. Code gets reviewed
Completed work flows to the refinery for automated code review. Depending on your merge strategy, the refinery either merges directly or creates a PR for your approval.
### 5. You stay in control
Monitor progress from the town dashboard. Chat with the mayor. Review PRs. Adjust priorities. Intervene when agents need guidance. Everything the agents do is visible — branches, commits, review comments, and decision reasoning.
<!-- TODO: Screenshot — beads page showing a mix of closed, in-progress, and open beads -->
## Core Concepts
| Concept | What it is |
|---|---|
| **Town** | A persistent workspace connecting your repo to a team of agents. Maintains configuration, history, and state. |
| **Bead** | A unit of work — an issue to fix, a task to complete, a review to perform. Beads have a lifecycle: open, in progress, in review, closed. |
| **Convoy** | A multi-bead workflow. Beads within a convoy can depend on each other, forming a DAG that agents execute in order. |
| **Rig** | A repository connection within a town. Each rig has its own branch configuration, agents, and settings. A town can have multiple rigs. |
| **Mayor** | The coordination agent. Your primary interface for interacting with the town through natural language. |
| **Polecat** | A coding agent. Works on individual beads — reads code, makes changes, runs tests, pushes branches. |
| **Refinery** | The review agent. Checks polecat output for quality, performs merges, and gates what lands in your codebase. |
For a deeper dive, see [Concepts](/code-with-ai/gastown/concepts).
## The Mayor — Your Interface to the Town
The mayor is how you interact with Gastown conversationally. Think of it as a technical lead that knows your codebase, tracks what all agents are doing, and can take action on your behalf.
You can ask the mayor to:
- Plan and create convoys from high-level descriptions
- Check on the status of in-progress work
- Investigate failures and stuck agents
- Update town settings and configuration
- Triage incoming issues or bug reports
The mayor runs persistently in your town — it's always available, even when no coding agents are active.
<!-- TODO: Screenshot — mayor conversation showing it creating a convoy from a user request -->
## What You Can Build With Gastown
- **Feature development** — Describe a feature, get back a PR with tests
- **Bug fixes** — Point agents at an issue, they investigate and fix it
- **Refactoring** — Large-scale codebase changes executed methodically across convoys
- **Maintenance** — Dependency updates, lint fixes, documentation generation
- **Code review** — Automated first-pass review on all agent and human PRs
## Getting Started
- [Quick Start](/code-with-ai/gastown/quick-start) — Get your first town running in minutes
- [Concepts](/code-with-ai/gastown/concepts) — Understand towns, beads, convoys, and agents
- [The Mayor](/code-with-ai/gastown/mayor) — How to interact with your town's coordinator
- [Quick Start](/code-with-ai/gastown/quick-start) — Create your first town and see agents work in under 5 minutes
- [Concepts](/code-with-ai/gastown/concepts) — Detailed explanation of towns, beads, convoys, and the agent lifecycle
- [The Mayor](/code-with-ai/gastown/mayor) — How to interact with the coordination agent effectively
## Guides
- [Sling Work](/code-with-ai/gastown/sling-work) — Creating tasks and convoys for agents
- [Code Review](/code-with-ai/gastown/code-review) — How the refinery reviews and merges code
- [Settings](/code-with-ai/gastown/settings) — Configure models, merge strategies, and agent behavior
- [Sling Work](/code-with-ai/gastown/sling-work) — Creating tasks, convoys, and staged workflows
- [Code Review](/code-with-ai/gastown/code-review) — Merge strategies, review gates, and the refinery pipeline
- [Settings](/code-with-ai/gastown/settings) — Model configuration, agent limits, custom instructions, and environment variables
- [Troubleshooting](/code-with-ai/gastown/troubleshooting) — Common issues and how to resolve them
@@ -5,12 +5,100 @@ description: "How to interact with your town's coordination agent"
# {% $markdoc.frontmatter.title %}
<!-- TODO: Mayor capabilities, conversation patterns, commands -->
The Mayor is your primary interface to a Gas Town. It's a persistent conversational agent that coordinates work, answers questions, and takes action on your behalf.
## What the Mayor Does
The Mayor operates as a technical lead that:
- **Plans work** — converts high-level descriptions into convoys and beads
- **Reports status** — knows what every agent is doing, what's stuck, what's shipped
- **Triages issues** — investigates failures, stuck agents, and escalations
- **Configures the town** — updates settings, manages rigs, adjusts agent behavior
- **Answers questions** — about the codebase, work history, and town state
Unlike polecats (which spin up to work on specific beads), the Mayor runs **persistently**. It's always available, even when no coding agents are active.
<!-- TODO: Screenshot — Mayor chat interface showing a multi-turn conversation -->
## Talking to the Mayor
## Mayor Commands
Open the Mayor panel from your town dashboard. The conversation is persistent — the Mayor remembers context from previous messages within the same session.
### Planning Work
Ask the Mayor to create work for the town:
> *"Create a convoy to add authentication to the API. We need JWT token generation, middleware for protected routes, and integration tests."*
The Mayor will:
1. Break this into individual beads with dependencies
2. Propose a convoy plan for your review
3. Create the convoy (staged by default, so you can review before agents start)
### Checking Status
> *"What's everyone working on?"*
> *"Is anything stuck?"*
> *"How did the last convoy go?"*
The Mayor has full visibility into agent state, bead progress, and recent history.
### Investigating Problems
> *"The auth refactor bead has been in progress for 20 minutes — what's happening?"*
> *"Why did the refinery reject the last review?"*
The Mayor can inspect agent status messages, review feedback, and container logs to diagnose issues.
### Updating Configuration
> *"Switch the model to Claude Opus for this town"*
> *"Set max polecats to 4"*
> *"Add a custom instruction: always use TypeScript strict mode"*
The Mayor can modify town settings on your behalf through natural language.
## Mayor Tools
The Mayor has access to specialized tools for town management:
| Tool | What it does |
|---|---|
| `gt_sling` | Create a bead or convoy |
| `gt_convoy_close` | Force-close a stuck convoy |
| `gt_agent_reset` | Reset a stuck agent |
| `gt_bead_delete` | Delete beads (single or bulk) |
| `gt_report_bug` | File a bug report about town behavior |
| `gt_done` | Mark work as complete |
These tools are used automatically when you make requests — you don't need to invoke them directly.
## Tips for Effective Communication
### Be specific about scope
Instead of: *"Fix the bugs"*
Try: *"Fix the TypeScript type errors in src/auth/. There are 3 reported in the CI output."*
### Use convoys for complex work
Instead of: *"Add a user dashboard with charts, settings, and notifications"*
Try: *"Create a staged convoy for the user dashboard. Break it into: 1) dashboard layout and navigation, 2) chart components with mock data, 3) settings page, 4) notification system. Each should build on the previous."*
### Let the Mayor triage
When something goes wrong, ask the Mayor before investigating yourself:
> *"Bead abc123 has been stuck for 30 minutes — can you investigate?"*
The Mayor can often diagnose and resolve issues (reset agents, close stuck convoys, re-dispatch work) without you needing to dig into the admin panel.
## Mayor Limitations
- The Mayor coordinates but doesn't write code itself — that's what polecats are for
- It can only see what's happening inside your town, not external systems
- Complex multi-repo orchestration may need manual coordination between towns
- The Mayor's context window is bounded — very long conversations may lose early context
@@ -1,8 +1,88 @@
---
title: "Quick Start"
description: "Get your first Gastown town running in minutes"
description: "Get your first Gas Town running in minutes"
---
# {% $markdoc.frontmatter.title %}
<!-- TODO: Step-by-step guide to creating a town and seeing agents work -->
This guide walks you through creating your first town, connecting a repository, and watching agents work on real code.
## Prerequisites
- A [Kilo account](https://app.kilo.ai) (free tier works)
- A GitHub repository you want agents to work on
- A GitHub Personal Access Token (recommended)
## 1. Create a Town
From the Kilo dashboard, click **New Town**. Give it a name — this is just for your reference.
<!-- TODO: Screenshot — "New Town" button and creation dialog -->
## 2. Connect a Repository
Add a **rig** to your town. A rig is a connection to a specific repository.
1. Click **Add Rig**
2. Select your GitHub repository (or paste the URL)
3. Choose the default branch (usually `main`)
4. Click **Connect**
Gastown uses the [Kilo GitHub App](https://github.com/apps/kilo-code) to access your repository. You'll be prompted to install it if you haven't already.
<!-- TODO: Screenshot — rig creation flow showing repo selection -->
## 3. Add a GitHub Personal Access Token
{% callout type="tip" title="Recommended" %}
Adding a GitHub PAT means all commits, branches, and PRs created by your town's agents will appear as **you** — not a bot account. It also enables agents to use `gh` CLI commands (creating issues, commenting on PRs, etc.) on your behalf.
{% /callout %}
1. Go to **Town Settings** → **Git & Authentication**
2. Paste your GitHub Personal Access Token
3. The token needs `repo` scope (and `workflow` if your repo uses GitHub Actions)
Without a PAT, agents use the GitHub App installation token — functional but shows up as a bot in your git history.
## 4. Sling Your First Task
Now let's give the agents something to do:
1. Click **Sling Work** (or ask the Mayor)
2. Describe a simple task, e.g.: *"Add a CONTRIBUTING.md file with basic setup instructions"*
3. Click **Sling**
<!-- TODO: Screenshot — Sling Work dialog with a sample task -->
## 5. Watch Agents Work
The reconciler assigns your task to an available polecat agent. You'll see:
1. A **bead** appear in the beads list with status `open`
2. The bead transitions to `in_progress` as a polecat picks it up
3. The agent reads your code, makes changes, and pushes a branch
4. The bead moves to `in_review` as the refinery checks the work
5. The refinery merges (or creates a PR depending on your settings)
6. The bead reaches `closed`
<!-- TODO: Screenshot — bead lifecycle showing the transitions in real-time -->
The whole cycle typically takes 2-10 minutes depending on complexity and the model you're using.
## 6. Talk to the Mayor
Click the **Mayor** chat to interact with your town's coordinator. Try:
- *"What's the status of the town?"*
- *"Create a convoy to add unit tests for the auth module"*
- *"What settings should I change for faster reviews?"*
The Mayor is always running — it's your primary interface for managing the town conversationally.
<!-- TODO: Screenshot — Mayor chat with a greeting and status response -->
## What's Next?
- [Concepts](/code-with-ai/gastown/concepts) — Understand the building blocks in depth
- [Sling Work](/code-with-ai/gastown/sling-work) — Learn about convoys and multi-step workflows
- [Settings](/code-with-ai/gastown/settings) — Configure models, merge strategies, and agent behavior
@@ -5,16 +5,161 @@ description: "Configure models, merge strategies, and agent behavior"
# {% $markdoc.frontmatter.title %}
<!-- TODO: All configurable settings with explanations -->
Gas Town settings control how your agents behave — which models they use, how they review code, and how they interact with your repositories.
Access settings from your town dashboard → **Settings**.
## Models
### Default Model
The primary model used by all agents (polecats, refinery, mayor). This affects quality, speed, and cost.
Popular choices:
- **Claude Sonnet** — fast, good for most tasks (default)
- **Claude Opus** — highest quality, best for complex work
- **Kilo Auto Free** — free tier, great for trying things out
### Role-Specific Models
Override the default model for specific agent roles:
| Role | Recommended | Why |
|---|---|---|
| Polecat | Claude Sonnet / Opus | Balance of speed and quality for code generation |
| Refinery | Claude Opus | Higher reasoning for thorough review |
| Mayor | Claude Sonnet | Fast responses for conversational coordination |
### Small Model
Used for lightweight tasks (classification, routing, summarization). Usually a smaller, cheaper model.
## Git & Authentication
### GitHub Personal Access Token
{% callout type="tip" title="Strongly Recommended" %}
Adding a GitHub PAT ensures that all commits, branches, and PRs created by your agents appear as **you** in git history. Without it, activity shows up under the Kilo GitHub App bot account.
{% /callout %}
**To add a PAT:**
1. Go to **Settings** → **Git & Authentication**
2. Generate a token at [github.com/settings/tokens](https://github.com/settings/tokens)
3. Required scopes: `repo` (full repository access)
4. Recommended: also add `workflow` (if your repo uses GitHub Actions)
5. Paste the token and save
**What the PAT enables:**
- Commits and PRs appear as you (your avatar, your username)
- Agents can use `gh` CLI commands on your behalf
- Full access to private repositories you own
- Ability to trigger CI workflows
**Without a PAT:**
- The GitHub App installation token is used (functional but less personal)
- PRs show as created by the Kilo bot
- Some `gh` CLI operations may not work
### GitHub App Installation
The [Kilo GitHub App](https://github.com/apps/kilo-code) provides base-level repository access. It's installed per-organization or per-repository and gives agents read/write access to code, PRs, and issues.
The GitHub App is **required** — it's how Gastown gets installation tokens for cloning and pushing. The PAT is **optional but recommended** — it provides user-level attribution.
## Merge Strategy
Controls how reviewed code lands in your repository:
| Strategy | Behavior | Best for |
|---|---|---|
| `direct` | Refinery merges directly (no PR) | Speed, trusted environments |
| `pr` | Refinery creates a PR | Audit trail, team visibility, CI integration |
For `pr` mode, you can also configure:
- **Auto-merge** — PRs merge automatically after refinery approval
- **Require human approval** — PRs wait for a human reviewer
## Refinery Configuration
### Review Mode
| Mode | Behavior |
|---|---|
| `always` | Every completed bead goes through review (default, recommended) |
| `never` | Skip review entirely — merge on polecat completion |
| `pr_only` | Only review work that generates a PR |
### Review Gates
Strictness level from 1 (lenient) to 5 (strict). Higher levels mean the refinery will reject more frequently but produce higher quality output.
### Max Review Cycles
How many write → review → revise cycles before a bead fails and escalates. Default: 3.
## Agent Limits
### Max Polecats Per Rig
How many coding agents can work simultaneously on a single rig. Default: 2.
Higher values mean more parallel work but also more resource consumption. Consider:
- **1-2** — conservative, good for small repos or limited budgets
- **3-4** — moderate parallelism, good for medium projects
- **5+** — aggressive, best for large repos with lots of independent work
### Alarm Intervals
Controls how frequently the reconciler checks for work:
- **Active interval** — when agents are working (default: 5s)
- **Idle interval** — when no work is pending (default: 60s)
Lower active intervals mean faster response to events but more compute usage.
## Environment Variables
Add environment variables that are available to all agents in the container. Useful for:
- API keys for external services agents might test against
- Database connection strings for test environments
- Feature flags or configuration values
{% callout type="warning" %}
Environment variables are visible to all agents in the town. Do not store production secrets here — use test/development credentials only.
{% /callout %}
## Custom Instructions
Free-form text injected into every agent's system prompt. Use this to communicate:
- Project conventions: *"Always use TypeScript strict mode"*
- Architecture decisions: *"The auth module uses JWT with RS256. Never use HS256."*
- Style preferences: *"Use functional components with hooks, never class components"*
- Constraints: *"Do not modify files in the `vendor/` directory"*
- Testing requirements: *"Every new function must have a corresponding unit test"*
Custom instructions are powerful — they let you encode institutional knowledge that agents follow consistently.
## Convoy Settings
### Staged Convoys Default
When `true`, new convoys are created as staged (paused until you un-stage). Default: `true`.
### Convoy Merge Mode
| Mode | Behavior |
|---|---|
| `review-then-land` | Each bead merges to a feature branch, then a landing review merges to main (default) |
| `review-and-merge` | Each bead goes through review and merges directly to main (no feature branch) |
`review-then-land` provides the strongest quality guarantees but takes longer. Use `review-and-merge` for simpler tasks or when you want immediate feedback.
## Per-Rig Overrides
Any town-level setting can be overridden at the rig level. This lets you:
- Use a more powerful model for a complex repository
- Set stricter review gates for a production codebase
- Allow more polecats on a repo with many independent modules
- Disable review for a documentation-only repo
Access per-rig settings from the rig detail page → **Settings**.
@@ -5,14 +5,152 @@ description: "Creating tasks and convoys for agents to work on"
# {% $markdoc.frontmatter.title %}
<!-- TODO: How to create beads, convoys, staged work -->
"Slinging work" is how you give agents something to do. You can sling a single task (a bead) or a structured multi-step plan (a convoy).
## Creating a Single Task
## Single Tasks
## Creating a Convoy
The simplest way to use Gas Town — describe what needs to be done, and an agent picks it up:
## Staged Convoys
1. Click **Sling Work** in the town header
2. Write a description: *"Fix the 404 error on the /settings page — the route is missing from the router config"*
3. Click **Sling**
The reconciler assigns the bead to an available polecat. The agent reads the relevant code, makes the fix, runs any tests, and pushes a branch.
<!-- TODO: Screenshot — Sling Work dialog with a single task -->
### Writing Good Task Descriptions
The quality of agent output directly correlates with the clarity of your description:
| Approach | Example |
|---|---|
| **Vague** (avoid) | "Fix the auth" |
| **Specific** (better) | "Fix the JWT token expiration — tokens should last 24h, not 1h. The constant is in `src/auth/config.ts`" |
| **Contextual** (best) | "Fix #142: users are getting logged out after 1 hour. The issue is the JWT expiration in `src/auth/config.ts` is set to 3600 (1h) but should be 86400 (24h). Add a test to verify." |
Include:
- **What** needs to change
- **Where** in the codebase (file paths if you know them)
- **Why** it's needed (link to issues, error messages)
- **How to verify** (tests to run, behavior to check)
## Convoys
Convoys are where Gas Town really shines. Instead of one agent doing everything in one pass, convoys break complex work into stages where each builds on the last — with adversarial review at every step.
### Why Convoys?
Single-pass agent output has a quality ceiling. The longer an agent works on one task, the more likely it is to accumulate compounding errors. Convoys solve this by:
1. **Decomposing** complex work into focused, reviewable chunks
2. **Sequencing** so later steps build on reviewed, merged code
3. **Reviewing** each chunk independently before it becomes the foundation for the next step
4. **Containing failures** — if step 3 fails, steps 1 and 2 are already safely merged
<!-- TODO: React Flow diagram — Convoy vs Single-Pass Comparison
Two parallel flows:
Top (Single-Pass):
"Big task" → Polecat works 30min → "Large PR (800 lines)" → Review struggles → Bugs land
Bottom (Convoy):
"Explore" → review ✓ → "Design" → review ✓ → "Implement" → review ✓ → "Test" → review ✓ → Clean merged result
Each step: small PR, easy review, bugs caught early
Caption: "Convoys produce higher quality output through iterative adversarial review"
-->
### Creating a Convoy
**Via the UI:**
1. Click **Sling Work** → **Convoy**
2. Add tasks in order
3. Define dependencies (which tasks block others)
4. Choose **staged** (review plan first) or **immediate** (start right away)
**Via the Mayor:**
> *"Create a convoy to migrate the database from PostgreSQL to MySQL. Steps: 1) audit current schema and queries, 2) design the new schema with migration plan, 3) implement the migration scripts, 4) update the application layer, 5) add integration tests"*
The Mayor converts this into a convoy with proper dependencies.
<!-- TODO: Screenshot — Convoy creation UI showing task list with dependency arrows -->
### Convoy Execution
Once started, the reconciler manages the convoy:
<!-- TODO: React Flow diagram — Convoy Execution Flow
Animated stage-by-stage flow:
Stage 1: Bead "Audit schema" dispatched to Polecat-1
→ Polecat works → pushes branch → Refinery reviews → MERGE to convoy branch
Stage 2: Bead "Design migration" dispatched to Polecat-2 (starts from convoy branch)
→ Polecat works (has context from stage 1) → pushes → Refinery reviews → MERGE
Stage 3: Bead "Implement scripts" dispatched (starts from convoy branch with stages 1+2)
→ works → pushes → reviews → MERGE
Final: "Landing Review" — full convoy branch reviewed as cohesive unit → MERGE to main
Caption: "Each stage builds on merged, reviewed work from previous stages"
-->
Key behaviors:
- Each polecat starts from the **convoy feature branch**, which accumulates all previously merged work
- Beads only dispatch when their **dependencies are satisfied** (upstream beads closed)
- The refinery reviews each sub-PR against the convoy branch
- Once all beads close, a **landing review** checks the full combined diff before merging to main
### The Adversarial Advantage
The convoy pattern creates **layered adversarial review**:
1. **Per-bead review** — refinery critiques each individual contribution
2. **Context accumulation** — each agent builds on verified, reviewed code
3. **Landing review** — the complete feature is reviewed holistically
4. **Combined with Kilo Code Review** — if configured, human reviewers see the final PR too
This means code goes through **3-4 review passes** before landing in your main branch. Bugs get caught at the smallest possible scope where they're cheapest to fix.
### Staged Convoys
By default, convoys are created **staged** — the plan exists but agents don't start until you un-stage it. This lets you:
- Review the task breakdown before execution
- Adjust descriptions, add context, reorder
- Ensure the plan makes sense before burning compute
Un-stage via the convoy detail page or ask the Mayor: *"Start the database migration convoy"*
## Assigning Priority
Beads have priority levels: `low`, `medium` (default), `high`, `critical`.
Higher priority beads are dispatched first when multiple beads are waiting for agents. Set priority:
- In the Sling Work dialog
- Via the Mayor: *"Make the auth fix high priority"*
- By editing the bead after creation
## Watching Progress
### Beads Page
The beads list shows all work in your town with real-time status updates. Filter by:
- Status (open, in progress, in review, closed, failed)
- Type (issue, merge_request, convoy)
- Rig (if you have multiple repos)
<!-- TODO: Screenshot — Beads page with filter controls and mixed status beads -->
### Town Overview
The town overview shows a high-level summary:
- Active agents and what they're working on
- Recent completions
- Pending work queue
### Real-Time Events
The event timeline shows every state transition as it happens — bead dispatched, review submitted, merge completed. Useful for understanding the flow in real-time.
@@ -5,14 +5,133 @@ description: "Common issues and how to resolve them"
# {% $markdoc.frontmatter.title %}
<!-- TODO: Common failure modes and fixes -->
Gas Town is a complex system with multiple agents, containers, and external integrations. When things go wrong, this guide helps you diagnose and fix common issues.
## Agents Not Picking Up Work
**Symptom:** Beads stay in `open` status. No agents transition to `working`.
**Common causes:**
| Cause | Fix |
|---|---|
| All polecats at max dispatch attempts | Ask the Mayor: *"Reset agent dispatch attempts"* |
| Container not running | Check container status in the admin panel. The Mayor can confirm: *"Is the container running?"* |
| Reconciler paused (draining) | Wait for drain to complete, or cancel it in settings |
| No available polecats | Check `max_polecats_per_rig` — you may need to increase it |
**Quick fix:** Ask the Mayor: *"Why aren't beads getting picked up?"* — it can diagnose and often resolve the issue.
## Container Not Starting
**Symptom:** The container status shows errors or stays in "starting" indefinitely.
**Common causes:**
- Git clone failure (bad credentials, repo not accessible)
- GitHub App not installed on the repository
- Environment variables causing startup crash
**Fix:**
1. Check that the [Kilo GitHub App](https://github.com/apps/kilo-code) is installed on your repository
2. Verify your GitHub PAT is valid (if configured)
3. Remove any environment variables that might cause issues during container init
4. Try a container restart from town settings
## Git Authentication Failures
## Review Loop Issues
**Symptom:** Agents can't clone, push, or fetch. Errors mention "authentication failed" or "permission denied".
**Common causes:**
| Cause | Fix |
|---|---|
| GitHub App uninstalled | Reinstall at [github.com/apps/kilo-code](https://github.com/apps/kilo-code) |
| PAT expired or revoked | Generate a new token and update in Settings → Git & Authentication |
| Repository visibility changed | Ensure the GitHub App has access to the repo |
| Org SSO not authorized | Authorize the token for your organization's SSO |
**Diagnosis:** The Mayor may report *"git credential refresh failed: no_installation_found"* — this definitively means the GitHub App needs to be reinstalled.
## Review Loop / Stuck in Review
**Symptom:** A bead cycles between `in_review` and `in_progress` repeatedly, or MR beads keep failing.
**Common causes:**
- The refinery finds issues the polecat can't fix (e.g., fundamental architecture problems)
- Missing PR URL on merge request beads
- Convoy feature branch deleted from remote
**Fix:**
1. Check the bead's event history for review feedback
2. If the feedback is a dead end, ask the Mayor to close the bead: *"Close bead [id] — the approach isn't working"*
3. For stuck convoys, the Mayor can force-close: *"Force close convoy [name]"*
{% callout type="info" %}
Beads automatically escalate after 3 failed review cycles. If a bead is genuinely stuck in a loop, it will eventually fail and notify you rather than running forever.
{% /callout %}
## The Mayor is Unresponsive
**Symptom:** Messages to the Mayor don't get responses, or the Mayor says it's "unauthenticated".
**Common causes:**
- Container sleeping (wakes up after ~30 seconds)
- KILOCODE_TOKEN expired
- Gateway authentication failure
**Fix:**
1. Wait 30 seconds — the container may be waking from sleep
2. If persistent: go to Settings → refresh the container token
3. If still failing: check that your Kilo account is active and the town's billing is current
## Convoy Stuck / Never Completes
**Symptom:** A convoy shows open but no beads are being dispatched, or it never reaches "landed".
**Common causes:**
- Upstream dependency bead failed (blocks downstream)
- Convoy feature branch doesn't exist on remote
- Landing MR repeatedly failing
**Fix:**
1. Check convoy progress: which beads are closed? which are open/failed?
2. For failed dependencies: fix or close the blocking bead, then downstream beads will dispatch
3. Ask the Mayor: *"What's blocking convoy [name]?"*
4. If truly stuck: force-close the convoy and re-create it
## Agent Permanently Stuck
**Symptom:** An agent shows as `working` but hasn't produced output for 20+ minutes.
**Common causes:**
- Container process crashed but heartbeat continues
- Agent waiting on an external resource (network, API)
- Infinite loop in agent execution
**Fix:**
1. Ask the Mayor: *"Reset agent [name]"*
2. This clears the hook, resets the agent to idle, and returns the bead to `open`
3. The reconciler will re-dispatch the bead to a fresh agent
## High Failure Rate
**Symptom:** Many beads ending in `failed` status.
**Common causes:**
- Task descriptions are too vague (agents can't figure out what to do)
- The codebase has issues that prevent agents from working (broken build, missing dependencies)
- Model quality is too low for the complexity of the work
**Fix:**
1. Review failed bead descriptions — make them more specific
2. Ensure the repo builds cleanly (agents struggle with pre-existing broken builds)
3. Consider upgrading the model (Sonnet → Opus for complex work)
4. Add custom instructions to guide agents: test commands, build steps, conventions
## Getting Help
If you can't resolve an issue:
1. **Ask the Mayor** — it can diagnose most problems
2. **Check the event timeline** — see exactly what happened and when
3. **Contact support** — reach out at [kilo.ai/discord](https://kilo.ai/discord) with your town ID