GitHub repository management as infrastructure-as-code.
Install · Quick Start · Docs · Contributing
────────────────────────────────────────
What is Ward?
Ward is a Rust CLI that treats GitHub repository management as infrastructure-as-code. Declare your desired state in ward.toml, diff it against reality, apply changes, and verify the result. No shell scripts, no cloning, no guessing.
Install
# from crates.io (recommended)
# homebrew (macOS / Linux)
# shell script (macOS / Linux)
|
# powershell (Windows)
# from source
&&
Requires Rust >= 1.85 (source install only) and a GitHub token (GH_TOKEN, GITHUB_TOKEN, or gh auth token).
Token scopes needed: repo, read:org, workflow.
Quick Start
Use ward init --non-interactive to scaffold a minimal ward.toml without the wizard.
Documentation
| Guide | Description |
|---|---|
| Configuration | ward.toml format, systems, overrides |
| Commands | Full CLI reference |
| Templates | Built-in and custom Tera templates |
| TUI Dashboard | Interactive terminal interface |
| CI Integration | Using Ward in GitHub Actions |
| Architecture | How Ward works under the hood |
How it works
Plan (read) → Apply (write) → Verify (read)
Diff current Execute with Re-read from API,
vs desired audit logging confirm match
- No git cloning -- file commits use the Git Trees API (blob, tree, commit, update ref). Atomic, no filesystem side effects.
- Idempotent -- detects existing state and skips what's already done.
- Audit log -- every mutation logged to
~/.ward/audit.logas JSON lines. Query withjq. - Custom templates -- place
.terafiles in~/.ward/templates/to add or override built-in templates. Uses Tera (Jinja2-compatible).
────────────────────────────────────────
Contributing
See CONTRIBUTING.md for setup and workflow details.
&& &&
License
MIT. See LICENSE.