ghfanout
ghfanout is a CLI tool that manages shared configuration files (such as .gitignore and pom.xml) in one place and fans them out to many GitHub repositories as pull requests (or direct pushes).
Edit a file once in your config repository, run one command, and every affected repository receives a pull request with the change.
- No
git clonerequired — target repositories are read and written purely through the GitHub Git Data API, so the tool works with nothing more thanpip install - Kustomize-like composition — a
baseof shared files plus per-repositoryoverlays, with Jinja2 templating for repository-specific values - Designed for microservices — made for fleets of repositories that cannot be consolidated into a monorepo
Where to start
New to ghfanout? Follow the Getting Started tutorial — it walks you through installing the tool, generating a config repository, and opening your first pull request.
| Page | What it covers |
|---|---|
| Getting Started | Install → init → build → authenticate → deploy, end to end |
| Configuration | The config repository layout, ghfanout.yaml, manifest.yaml, per-branch overrides, and distribution excludes (.ghfanoutignore) |
| Templates | Embedding repository-specific values with .tmpl files (Jinja2) |
| Authentication | PAT and GitHub App authentication in detail |
| CLI Reference | All commands, options, and behavior details |
| Development | Local setup, running tests/lint/type-check, and commit conventions |