Documentation Index
Fetch the complete documentation index at: https://gascityinc-5c0069dd-work-default-pack-registry.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Run the Built-in Doctor
gc doctor checks your city for structural, config, dependency, and runtime
issues. It is always the best first step:
“command not found” After Install
Ifgc is installed but your shell cannot find it, the binary is not on your
PATH.
Homebrew puts binaries in a directory that is usually already on your PATH.
Run brew --prefix to confirm, then check that $(brew --prefix)/bin appears
in your PATH.
Direct download requires you to move or symlink the binary into a
directory on your PATH:
~/.bashrc or ~/.zshrc.
Oh My Zsh Git Plugin Hides gc
Oh My Zsh’s git plugin defines gc as an alias for
git commit --verbose. When that alias is active, commands like gc version,
gc init, or gc start run git instead of the Gas City binary.
Temporary workaround:
command bypasses shell aliases for that invocation.
Persistent fix in ~/.zshrc:
unalias line must come after Oh My Zsh loads. If it appears before
source "$ZSH/oh-my-zsh.sh", the git plugin recreates the alias later.
Oh My Zsh also loads files in $ZSH_CUSTOM after built-in plugins, so this is
a good alternative:
git from the
plugins=(...) list.
Missing Prerequisites
gc init and gc start check for required tools and report any that are
missing. You can also run gc doctor inside an existing city for a fuller
check.
Always required
| Tool | macOS | Debian / Ubuntu |
|---|---|---|
| tmux | brew install tmux | apt install tmux |
| git | brew install git | apt install git |
| jq | brew install jq | apt install jq |
| pgrep | included | apt install procps |
| lsof | included | apt install lsof |
Required for the default beads provider (bd)
If you do not want to install dolt, bd, and flock, switch to the file-based
store:
city.toml:
bd provider adds
durable versioned storage and is recommended for real work.
Dolt Version Too Old
Gas City requires a final Dolt 1.86.2 or newer. Older and pre-release builds can miss the upstream GC/writer deadlock fix in dolthub/dolt commitccf7bde206, which can hang dolt_backup sync under heavy write load. Check
your version:
brew upgrade dolt) or download a newer release from
dolthub/dolt/releases.
bd Version Too Old
Gas City requires bd 1.0.0 or newer. Check your version:
brew upgrade beads) or download a newer release from
gastownhall/beads/releases.
flock Not Found (macOS)
macOS does not shipflock. Install it via Homebrew:
gc version Prints Unexpected Output
If gc version prints git progress lines (Enumerating objects...) instead
of a clean version string, upgrade to Gas City v0.13.4 or later. This was a
bug where remote pack fetches wrote git sideband output to the terminal,
fixed in PR #141.
JSONL Archive Push Failures
The maintenance pack runsjsonl-export every 15 minutes to dump each bead
database to a text-diffable JSONL snapshot inside a local git repository
(the “JSONL archive”). The archive serves as a disaster-recovery backup:
if the live Dolt server loses data, the last-known-good bead graph can be
reconstructed from the archive’s commit history.
Local-only vs push mode
The archive operates in one of two modes, detected from the state of its git remotes on every run:- Local-only (default). No
originremote is configured. Commits are created and retained on the host but never leave the machine. This mode is safe to run indefinitely; its only limitation is that the archive is not backed up off-box, so a disk failure on this host loses the archive alongside the live Dolt data. - Push. An
originremote is configured. Each run rebases ontoorigin/mainand pushes new commits so the archive survives a host loss.
jsonl-export logs the active mode to stderr on transitions
(e.g. after you add or remove origin) and re-logs it at least weekly so
that an operator reading the log file can always find the current mode.
Enabling off-box backup
Pick a repository that only this host will push to (the archive contains bead content and should not be shared across cities). Then:jsonl-export detects the new origin,
logs archive running in push mode, and resumes pushing every run.
Switching back to local-only
Remove the remote:archive running in local-only mode.
Reading a JSONL push failed [HIGH] escalation
When push mode is active and git push fails GC_JSONL_MAX_PUSH_FAILURES
times in a row (default: 3), the mayor’s inbox receives an
ESCALATION: JSONL push failed [HIGH] message with a body shaped like:
- Credentials rotated or expired. SSH key removed from the remote
host, HTTPS token expired. The captured stderr usually reads
Permission denied (publickey)orremote: Invalid username or password. - Remote URL typo or deleted repo. stderr reads
does not appear to be a git repositoryorrepository not found. - Network partition. stderr reads
Could not resolve hostor a connection-timeout message. If the host is also firewalled from the rest of the internet, this will recover once connectivity returns. - Diverged history. Very unusual — the archive rebases onto
origin/mainautomatically — but if the remote was force-pushed from another host, rebase may fail with a conflict. Inspecting the archive and resolving manually is the only option.
GC_JSONL_MAX_PUSH_FAILURES=99 in the maintenance pack’s environment and
restart the city with gc restart. That bumps the escalation threshold
from 3 to 99, which at the current 15-minute tick rate is ~24 hours of
silence.
WSL (Windows Subsystem for Linux)
Gas City works under WSL 2 with a standard Ubuntu or Debian distribution. Install prerequisites using the Linux column in the tables above. tmux requires a working terminal — use Windows Terminal or another WSL-aware terminal emulator.Build From Source Fails
Building from source requiresmake and Go 1.25 or newer:
make is missing, install it (apt install make on Debian/Ubuntu, or
xcode-select --install on macOS). If your Go version is too old, update it
from go.dev/dl or via your package manager. Then:
Still Stuck?
Open an issue at gastownhall/gascity/issues with the output ofgc doctor --verbose and your OS/architecture.