Documentation Index
Fetch the complete documentation index at: https://gascityinc-5c0069dd-fix-pr1931-schema-options.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Setup
First, you’ll need to install at least one CLI coding agent (which Gas City calls “providers”) and make sure that they’re on the PATH. Gas City supports many providers, including but not limited to Claude Code (claude), Codex
(codex) and Gemini (gemini). Make sure you’ve configured each of your chosen
providers (the more the merrier!) with the appropriate token and/or API key so
that they can each run and do things for you.
Next, you’ll need to get the Gas City CLI installed and on your PATH:
NOTE: the gascity installation is a great way to get the right dependencies in place, but may not be enough to keep up with the changes we’re making on the way to 1.0. Best practice right now is to build your ownNow we’re ready to create our first city.gcbinary from HEAD on themainbranch of the gascity repo to get the latest and greatest bits before running these tutorials.
Creating a city
A city is a directory that holds your pack definition, deployment config, agent prompts, and workflows. You create a new city withgc init:
A useful mental model is:
- A city is the whole working folder for one Gas City environment. It combines your agents, formulas, rigs, orders, and the local settings that tell Gas City how to run them on this machine.
- A pack is the reusable part of that city. It holds the Gas City definitions that are portable and worth sharing with other cities or other people.
gc init comes with pack.toml, city.toml, and the standard
top-level directories, so let’s look at what’s inside:
pack.toml— the portable pack definition layercity.toml— city-local deployment and runtime settings
mayor agent. The mayor’s prompt lives at
agents/mayor/prompt.template.md, and pack.toml defines the always-on mayor
session that uses it. Assuming you chose the default minimal config
template and default provider, city.toml keeps the shared runtime settings:
[workspace] section in city.toml sets shared runtime defaults such as
the provider. The machine-local workspace identity lives in .gc/site.toml
instead, which is how gc cities, gc status, and other commands still know
this city is named my-city.
The built-in mayor comes from the scaffolded agents/mayor/ content, and
[[named_session]] keeps a mayor session running so you can talk to it at
any time. When you add more agents later, Gas City creates agents/<name>/,
with prompt.template.md for the prompt and agent.toml for any per-agent
overrides.
Gas City also gives you an implicit agent for each supported provider — so
claude, codex, and gemini are available as agent names even though they’re
not listed in pack.toml. These use the provider’s defaults with no custom
prompt.
To check on the status of your city, use gc status:
dog pool is a background utility agent from the built-in maintenance
pack. It handles internal housekeeping like shutdown coordination. You don’t
need to interact with it — ignore it for now.
Adding a rig
In Gas City, a project directory registered with a city is called a “rig.” Rigging a project’s directory lets agents work in it.my-project) and set
up work tracking in it. The shared rig declaration lives in city.toml:
.gc/site.toml:
gc rig list:
Slinging your first work
You assign work to agents by “slinging” it — think of it as tossing a task to someone who knows what to do. To sling work on a rig, start from inside the rig directory and target the rig-scoped agent explicitly:my-project/claude, the work stays scoped to this rig.
The gc sling command created a work item in our city (called a “bead”) and
dispatched it to the claude agent. You can watch it progress:
CLOSED, you can see the results: