Fleet Awareness
Discover repositories under one or more roots, skip nested duplicates, and run the same command everywhere without shell scripts.
Fleet-scale Git automation
Automate folder normalization, remote alignment, branch refresh, and workflow-driven maintenance with one CLI — purpose-built for teams juggling hundreds of repos.
gix workflow configs/account-rename.yaml \
--roots ~/Development \
--var namespace_old=github.com/old/org \
--var namespace_new=github.com/new/org \
--yes
Discover repositories under one or more roots, skip nested duplicates, and run the same command everywhere without shell scripts.
Domain-specific safeguards, “require clean” checks, interactive prompts, and a structured reporter ensure every operation is auditable.
Describe multi-step plans (folder rename, remote update, git operations, PR creation) declaratively with YAML or run the built-in presets.
Fix remotes, convert protocols, rename directories to canonical names, purge stale files, and refresh branches through one CLI.
Optional integrations assist with commit messages or changelog
summaries while keeping human approvals in the loop. Configure
ordered llm.openai and
llm.llm_proxy connection profiles.
Every command runs through the same workflow engine, so CLI, automation, and CI all produce consistent logs and summaries.
Launch a typed browser audit, queue remediation actions for review, and apply only the changes you approve.
gix init or system defaults with
gix init --system.
Install the CLI, point it at your workspace, and let gix bring your repositories into a consistent, inspectable shape.
go install github.com/tyemirov/gix@latestgix init to create
~/.gix/config.yml.
gix audit --roots ~/Development for a first pass.
gix --web --roots ~/Development to review typed
audit findings and queue changes before applying them.
Config controls reusable defaults for roots, remotes, logging,
confirmation prompts, clean-worktree policy, LLM provider/model
settings, and workflow operations. The generated file gives
llm.llm_proxy priority 1, selects Meta Muse inside
that profile, and references
${LLM_PROXY_SECRET_KEY}. The direct
llm.openai profile has priority 2 and interpolates
${OPENAI_API_KEY}, so it is attempted after a proxy
request failure. Placeholders resolve only from the process
environment; gix does not load dotenv files.
gix folder rename --roots ~/Development --owner --yes
Rename directories to match owner/repo naming so
your filesystem mirrors GitHub.
gix remote update-to-canonical --owner tyemirov --roots
~/Projects
Ensure every repository’s origin points at the
canonical GitHub slug.
gix remote update-protocol --from https --to git --roots
~/Work --yes
Switch entire trees over to SSH (or vice versa) without touching each repo manually.
gix sync master --stash --roots ~/Fleet
Stash tracked changes, jump to master, pull
updates, and restore your work.
gix workflow configs/maintenance.yaml --roots ~/Fleet
--yes
Chain rename, remote updates, git operations, and PR creation with one declarative file.
gix audit --roots ~/Fleet --all --format csv > audit.csv
Capture CSV output for branch defaults, owners, remote protocols, and more.
gix --web --roots ~/Fleet
Inspect typed audit rows, queue fixes, and apply only the reviewed batch from the local browser workspace.
All commands live under cmd/cli with shared flags,
one canonical YAML configuration path, and logging.
The internal workflow package plans, executes, and reports each operation, sharing discovery, prompts, and logging across commands.
pkg/taskrunner wires dependencies and now emits
compact summaries when multiple repositories run.
internal/repos, internal/branches, and
friends isolate Git/GitHub logic so workflows stay focused.
--stash to
store tracked changes.
gix sync master --stash --roots ~/Fleet.gix sync master --stash --roots ~/Fleet
gix audit --roots ~/Repos.
gix remote update-protocol --from https --to git --roots
~/Repos --yes.
gix remote update-protocol \
--from https \
--to git \
--roots ~/Repos --yes
gix workflow ./configs/maintenance.yaml --roots ~/Fleet
--yes.
workflow:
- step:
name: normalize
command: ["folder", "rename"]
with:
include_owner: true
- step:
name: remotes
after: ["normalize"]
command: ["remote", "update-to-canonical"]
Commands, steps, safeguards, templating, and summaries all flow
through internal/workflow. The engine now plugs
into pkg/taskrunner, which prints a concise summary
when multiple repositories run.
gix workflow namespace --var namespace_old=... --var
namespace_new=...
gix workflow license --var license_template=mit
gix packages delete --roots ~/Containers --yes
Install gix with Go 1.25+, point it at your repositories, and let it keep your fleet in shape.