Cross-repo invariant verifier for the zyplux organization
Project description
cerberus
Verifies repository invariants — CI workflows, branch-protection rulesets, CODEOWNERS, workflow secrets, and justfile conventions. Run it two ways: as a per-repo linter against a checkout (cerberus), or as a central scan across every repo in the org (cerberus org).
Requirements
The justfile check shells out to just, which ships with the package (via rust-just) — no separate install.
Lint a repo
uv run cerberus # lint the current directory
uv run cerberus PATH # lint a checkout at PATH
Runs the content checks (justfile, ci-workflow, codeowners) against the checkout and exits non-zero on any failure or error — warnings do not fail the run — so it drops into CI like any linter. Control-plane checks (ruleset, workflow-secrets) read GitHub org/admin state the checkout cannot see, so they are skipped here and reported by cerberus org.
Run cerberus list to see every check, its scope, and what it verifies.
| Option | Description |
|---|---|
--check NAME |
Limit to named check(s); repeatable |
--config PATH |
Use a cerberus.toml other than the bundled |
--fix |
Auto-fix fixable problems (e.g. trailing whitespace) |
Scan the org
cerberus org takes the org as a required argument — a bare name, github.com/<org>, or a full URL.
uv run cerberus org zyplux # scan every repo, report findings
uv run cerberus org github.com/zyplux # same, org given as a URL
uv run cerberus org zyplux --repo api # scan only the named repo(s)
Runs all checks, including the control-plane ones the local linter skips. Accepts --repo/-r and --check. A failure or error exits non-zero; warnings do not.
Checks
| ID | Scope | Verifies |
|---|---|---|
justfile |
content | Recipe names, aliases, check pipeline, wrapped tool calls, no trailing whitespace |
ci-workflow |
content | ci.yml exists, exposes a ci check, runs on PRs |
workflow-tooling |
content | Workflows set up only the workspace toolchain (uv, bun), not extra tools |
codeowners |
content | CODEOWNERS present and covers /.github/ |
ruleset |
control-plane | Default branch protected by the org baseline ruleset |
workflow-secrets |
control-plane | Every secret referenced in workflows is provisioned |
Config
Policy — org name, excluded repos, ruleset name, required recipes and aliases — lives in cerberus.toml. Override it with --config PATH.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zyplux_cerberus-0.3.0.tar.gz.
File metadata
- Download URL: zyplux_cerberus-0.3.0.tar.gz
- Upload date:
- Size: 15.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a93eebb39d93581f10dfcd149e092d0121e1312edb4adc3b6655fb64d76ef34
|
|
| MD5 |
c637391c805e12a52aa8b3302561c431
|
|
| BLAKE2b-256 |
318558bbe4dd9630b32b7436e7984c6536b8d07aab2b119230337439639873ab
|
File details
Details for the file zyplux_cerberus-0.3.0-py3-none-any.whl.
File metadata
- Download URL: zyplux_cerberus-0.3.0-py3-none-any.whl
- Upload date:
- Size: 24.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ae6664e0d513dc629a3371a217c8d631ddea228e45064737d7025f382f71355
|
|
| MD5 |
9609bfc8ca941b31a81448247dddfddc
|
|
| BLAKE2b-256 |
e6632035ce131c83c6d3109858b156b7a3b88043b0d9bc74fd44dfb771c89cc2
|