# Gas Town — expressed as a Gas City configuration.
#
# This proves the Gas City thesis: any orchestration pack is pure config.
# Composable packs:
# core (builtin) — gc skills, default prompts, core formulas, mechanical
# housekeeping orders (gate/orphan/wisp sweeps, branch
# pruning, nudge relays); included explicitly below
# bd (builtin) — Dolt-backed beads provider; pulls in the dolt pack
# (server lifecycle, dog formulas + exec orders + CLI
# commands, with its own dolt dog pool)
# gastown — domain-specific coding workflow: mayor, deacon, boot,
# dog utility pool, witness, refinery, polecat, crew +
# digest orders
#
# City-scoped agents: mayor, deacon, boot, and the gastown-owned dog.
# Rig-scoped agents (witness, refinery, polecat) are stamped per-rig.
#
# The sibling pack.toml owns the Gastown import. This city owns the default
# rig binding used by `gc rig add`.
#
# To use: save these three files into a city directory, then run
# gc start <city-dir>
# Requires rigs to be registered: gc rig add <path>
[workspace]
name = "gastown"
provider = "claude"
global_fragments = ["command-glossary", "operational-awareness"]
# Builtin packs compose only through explicit includes (gc init writes
# these; gc doctor --fix repairs them).
includes = [".gc/system/packs/core", ".gc/system/packs/bd"]
[providers.claude]
base = "builtin:claude"
[defaults.rig.imports.gastown]
source = "https://github.com/gastownhall/gascity-packs/tree/main/gastown"
version = "sha:fa91a3b4f1fe5cc9d1ba9ffbdd2d26274680adf9"
[daemon]
patrol_interval = "30s"
max_restarts = 5
restart_window = "1h"
shutdown_timeout = "5s"
# Enable compiler-v2 formulas from imported packs. Legacy molecule formulas keep
# molecule_id attachment semantics unless they declare a compiler-v2 requirement.
formula_v2 = true
# Register a rig to activate per-rig agents (witness, refinery, polecat):
# [[rigs]]
# name = "myproject"
# path = "/path/to/your/project"
# Crew members are persistent, individually named workers, so they can't be
# pack-stamped. Each one is a directory agent under agents/<name>/ plus a
# named session that keeps it alive. To add a crew member "wolf" bound to a
# registered rig "myproject":
#
# 1. Create agents/wolf/agent.toml (relative paths resolve against this
# city directory):
#
# scope = "rig"
# dir = "myproject"
# nudge = "Check your hook and mail, then act accordingly."
# work_dir = ".gc/worktrees/myproject/crew/wolf"
# idle_timeout = "4h"
# prompt_template = "prompts/crew.template.md" # copied from the gastown pack
# pre_start = ["{{.CityRoot}}/scripts/worktree-setup.sh {{.RigRoot}} {{.WorkDir}} {{.AgentBase}} --sync"]
#
# tmux theming comes from the gastown pack's [global] session_live hooks,
# so crew members need no session_setup wiring of their own.
#
# 2. Keep the crew session alive by declaring a named session here. The
# dir must match the agent's so the session resolves to "myproject/wolf":
#
# [[named_session]]
# template = "wolf"
# dir = "myproject"
# scope = "rig"
# mode = "always"