~/gt/... layout, and its gt commands. This page carries that knowledge across to Gas City.
Gas City is the platform that machinery was extracted into. Two things changed. First, the orchestrator hardcodes zero roles — every role you knew is now configuration, and you express Gas Town (or any orchestration) on top of a few primitives. Second, and bigger: the orchestrator can now run a formula as a graph across many agents, out of your session — decomposing a job into beads, fanning the ready ones out in parallel, gating each step on its dependencies, and retrying failures to completion. Your single-agent, in-session formulas still run (v1); this fleet orchestration (v2) is what’s new. Because it is a platform, a feature added to Gas City lifts every orchestrator built on it — Gas Town included.
For the system-level mental model first, read How Gas City Works.
Mapping tables
The five tables map Gas Town onto Gas City one domain at a time. Every entry on the right is configuration — a user-configured agent plus a prompt template — not a built-in platform type.Roles
Mechanisms and behaviors
What those roles and features actually do, and where that logic now lives.Filesystem and state
Gas Town encodes architecture into directories; Gas City treats directories as an implementation detail.Workflows
The operator verbs — the things you actually type. (Formulas are a mechanism, above; these are day-to-day moves.) The transcripts below show them end to end.
A first work cycle — start the city, hand the mayor a task, watch it land:
gc session peek takes --lines for a point-in-time snapshot — there is no --follow. For a continuously updating view, gc session attach. For the system-wide live feed, gc events --follow.Commands
The fullgt → gc/bd mapping lives in the Gas Town → Gas City Command Map.
What usually maps cleanly
Roles become pack agents. Adding a role follows an escalation ladder — stop at the first rung that solves your problem:city.toml, not an imported pack. Edit a pack only when the change should become the reusable default for every consumer.
gc sling creates convoy structure while routing, and formulas/orders/waits compose around that bead graph. The orchestration that runs over it is the orchestrator’s control dispatcher — it executes the control beads (check, retry, fan-out, tally, drain) that drive a convoy’s work to completion across many agents.
Crew and polecats are operating modes, not types. Crew = persistent named agents; polecats = scalable or transient agents, often with worktrees. The platform does not force the distinction — a pack can adopt, relax, or replace it.
Where Gas City deliberately differs
The orchestrator owns infrastructure behavior. It is the canonical owner of reconciling desired→running sessions, session scaling, order evaluation, health patrol, and garbage-collecting ephemeral run beads (the v1 wisp container). If something is fundamentally platform infrastructure, put it on the orchestrator path rather than inventing another deacon-like role. Filesystem layout is not the architecture. Usedir (in agent.toml, or patched per-rig in city.toml) for scope and identity; work_dir only when the session must run elsewhere; bead metadata for durable handoff state.
Roles are examples, not platform law. The Gastown pack ships familiar roles as an example operating model, not a type system. Adding a behavior means editing a pack, formula, order, or prompt — not adding a hardcoded role. A local city change edits
city.toml (rig overrides, patches, a city-specific agent); a shared product change edits the pack for a better default everywhere. Most onboarding work is local.
Common translation patterns
”How do I get to my mayor?”
mayor, deacon, boot) attach the same way; gc session list shows what is running. This replaces gt session at mayor/ or tmux attach -t gt-mayor.
What not to port literally
These Town habits create unnecessary complexity in Gas City:- exact
~/gt/...directory trees - path-derived identity
- new hardcoded role names in platform code
- plugin systems when an order is enough
- special helper agents for work that is really a shell command
- duplicating durable state outside beads when labels or metadata suffice
Editing Gastown config
The common edits — registering rigs, scaling pools, swapping providers, patching agents, tweaking prompts — live in Gastown on Gas City: Config Recipes.Fast ramp checklist
The shortest path to effective:- Read How Gas City Works for the six primitives in user terms.
- Skim the CLI reference alongside the Command Map so
gt→gcmuscle memory transfers. - Read Tutorial 07 — Orders and remap “plugins” → “orders”.
- Read Tutorial 05 — Formulas: Gas City compiles and instantiates formulas itself; for v2 formulas the orchestrator drives control beads while agents execute work beads.
- Work through Tutorial 02 — Agents and Shareable Packs for the
agents/<name>/layout end to end. - Read A Complete Gastown Example — city, root pack, and nested pack assembled into one runnable topology.