Atlanta, USA
Last updated: 2026-03-25
Cross-platform GitOps CLI built in Rust for managing organization repositories across GitHub, Azure DevOps, and GitLab.
This project is a container-first CLI for repository governance and maintenance at scale. The goal is to give you a single tool that can blueprint repositories, audit standards, sync shared files, generate catalogs, and align metadata across multiple source-control platforms.
Managing an organization with many repositories usually leads to repeated manual work:
- keeping repo metadata aligned
- copying workflows and templates between repos
- auditing descriptions, topics, and licensing
- blueprinting new repositories from a standard template
- generating a reusable catalog of projects
devopster is intended to centralize that work behind one CLI and one config file.
The repository now includes:
- a Rust CLI package with the
devopsterbinary - a command tree for
init,repo,catalog,topics, andstats - a provider abstraction for GitHub, Azure DevOps, and GitLab
- YAML configuration loading through
devopster-config.yaml - a dev container and Docker-based workflow so the host machine does not need Rust installed
- a CI workflow that builds and tests through containers
This project is designed to run inside a container. The only required tool on your host machine is
make, everything else including Docker is installed automatically bymake setup.
| Tool | Where | How |
|---|---|---|
| Homebrew | macOS only, if missing | Official install script |
| Docker Desktop | macOS | brew install --cask docker |
| Docker Engine | Debian/Ubuntu | Official apt repository |
gh, az, glab, Rust, devopster |
Inside the container | Dockerfile |
On macOS, after Docker Desktop is installed for the first time you need to start it from Applications, then re-run
make setup.
- Clone the repository.
- Open it in VS Code.
- Reopen the folder in the Dev Container.
- The post-create step runs
make setupautomatically.
# First time on a new machine -- installs Docker if needed, builds the image,
# and drops you into the container shell where devopster is ready to use:
make setup
# Inside the container:
devopster init
devopster repo listTo reopen the container shell after exiting, run
make setupagain ormake container-run.
After
make setupthedevopsterbinary is on your$PATHand these commands work directly:
| Command | Options / Variants | Purpose |
|---|---|---|
devopster init |
- --no-login |
- Create devopster-config.yaml and sign in to a provider- Create devopster-config.yaml only, skip the sign-in prompt |
devopster login |
- <github|azure-devops|gitlab>- all- status- logout <provider> |
- Sign in to that provider via browser (uses gh, az, or glab CLI)- Sign in to all three providers sequentially - Show authentication status for all providers - Remove stored credentials for a provider |
devopster repo list |
- --topic <topic> |
- List all repositories in the configured organization - Filter repositories by topic |
devopster repo audit |
N/A | - Audit repos for missing description, topics, license, and default branch |
devopster repo fix |
N/A | - Prompt for missing description, topics, and license in scoped repos that actually need fixes |
devopster repo blueprint |
- --name <name> --template <template> |
- Create a new repository from a template defined in config |
devopster repo sync |
- --from-blueprint |
- Push files from .github/ to all repositories- Compare required workflow files from the blueprint repo, prompt to add any missing ones, and prompt to add the org README header and badge markers |
devopster catalog generate |
N/A | - Export a JSON catalog of all repositories |
devopster topics align |
N/A | - Add missing template topics to every matching repository |
devopster stats |
- --scope-missing |
- Print org summary: config, coverage (description/topics/license/branch), compliance, and top topics - Update scoped repos to the non-compliant list |
# 1. build the image and install devopster
make setup
# 2. init: creates devopster-config.yaml and asks which provider to sign in to
devopster init
# 3. run any command
devopster repo list
devopster repo audit
devopster repo blueprint --name sample-repo --template azure-overview
devopster catalog generate
devopster topics align
devopster statsTo skip the sign-in prompt:
devopster init --no-login
| File | Purpose |
|---|---|
devopster-config.template.yaml |
Committed template: all supported keys with comments. Copy this to get started. |
devopster-config.yaml |
Your active config: generated by devopster init or copied from the template. Git-ignored. |
-
Start from the template file:
cp devopster-config.template.yaml devopster-config.yaml
-
Then set the provider and token environment variables you want to use.
Tip
Configure a blueprint source repo for devopster repo sync --from-blueprint:
blueprint:
repo: MicrosoftCloudEssentials-LearningHub/org-repo-template
branch: main
paths:
- .github