Winch Labs

Reference

CLI reference

Generated from the source tree by cmd/docsgen. Do not edit: your change would be overwritten on the next run, and the point of this page is that it cannot disagree with the binary.

One binary, several entrypoints. Everything below is walked from the command tree the binary itself prints, so a flag listed here exists and a flag that exists is listed.

garboard export

Render the RCD to CLAUDE.md / AGENTS.md / cursor rules

garboard export [path] [flags]
FlagDefaultWhat it does
--formatallclaude-md | agents-md | cursor-rules | all
--out.output directory
--rcdread this rcd.json instead of scanning (default: .garboard/rcd.json or a fresh scan)

garboard gate

Run the review gate over infra files; exit non-zero on a blocking finding (CI/CD)

Runs the same deterministic checks a pull request gets — SecOps + reliability rules on HCL (Terraform/OpenTofu), the Crossplane XRD/Composition/Claim gate on YAML, and the repo's own sandboxed WASM rules from .garboard/rules — and exits 1 when any block-severity finding is present. Offline; no API key required. --plan additionally reads a `terraform show -json` plan artifact (produced by the customer's own credentialed CI step; Garboard never runs terraform and the file never leaves their pipeline) and adds plan.stateful_destroy / plan.stateful_replace / plan.blast_radius findings — the plan wins over any static finding it can attribute to the same resource. --rendered additionally reads `crossplane render` output (a file or directory) and gates the composed managed resources it actually produces, which can differ from a compliant Composition base once patches apply. --rendered-diff <base-dir> <head-dir> compares two rendered trees (the same claims rendered against a base ref and head ref) and flags a changed field the Crossplane immutable table says forces replacement (SPEC §5j).

garboard gate [path] | gate --rendered-diff <base-dir> <head-dir> [flags]
FlagDefaultWhat it does
--advisory-errorsalso fail the gate on advisory findings
--formathumanoutput format: human | json | sarif
--planpath to a `terraform show -json` plan artifact
--profilealso enforce a curated catalog profile, e.g.
--rendered-diffcompare two `crossplane render` output directories, given as the two positional args <base-dir> <head-dir>
--renderedpath to a `crossplane render` output file or directory
--rulealso enforce individual catalog rules by id, e.g.
--rulesdirectory of custom WASM rules (default: <path>/.garboard/rules, skipped when absent)

garboard library

Browse the curated rule catalog shipped with this binary

Lists, searches and explains the lib.* rules this build ships. The catalog is embedded, so every subcommand works offline. Rules are not enforced until an org adopts them; this command only shows what is available and what each rule checks.

garboard library

garboard library adopt

Explain where a rule is adopted, and how to enforce one in CI today

garboard library adopt <rule-id|profile-id>

garboard library ignore

Explain where a rule is declined, and what declining means

garboard library ignore <rule-id>

garboard library list

List catalog rules

garboard library list [flags]
FlagDefaultWhat it does
--categoryfilter by category
--providerfilter by provider (aws, azure, gcp)
--severityfilter by severity (critical, warn, info)

garboard library profiles

List the curated rule bundles this build ships

Profiles are curated, pinned bundles of catalog rules (SPEC §5f-bis) — not filters over the catalog. Pass one to `garboard gate --profile <id>` to enforce it in CI, or adopt it through the server for the hosted review.

garboard library profiles

garboard library recommend

Rank the catalog for one repo: which rules to adopt first, and why

Scores every catalog rule against the Terraform in [dir] (default ".") using facts the parser already produces: which resource types the repo actually uses, how many resources would fail each rule as the tree stands, the rule's severity, and whether a built-in already enforces it. Every line carries the numbers behind its score.

garboard library recommend [dir] [flags]
FlagDefaultWhat it does
--allalso list the rules that were NOT recommended, with the reason
--limit20print at most this many recommendations, and say on stderr how many were held back (0 or less prints all)

Search rules by rule id, upstream check id, title or body

Searches the embedded catalog with library.Index (WIN-85). The query is free text: the words of the problem ("encryption at rest"), an upstream check id (CKV_AWS_16), or one of our own rule ids. Results are grouped by WHY they matched — an exact upstream id is a different kind of answer from a word found in a body — and the tier is printed so that is visible. Fully offline: no key, no network, and the same query always returns the same order.

garboard library search <query> [flags]
FlagDefaultWhat it does
--limit10maximum results to print (at least 1)

garboard library show

Show one rule in full: what it checks, why, and where it came from

garboard library show <rule-id>

garboard mcp

Expose the RCD to coding agents over MCP (read-only)

garboard mcp [flags]
FlagDefaultWhat it does
--rcd.garboard/rcd.jsonRCD file written by `garboard scan`
--transportstdiostdio | http

garboard receipt

Work with governance receipts

Verify an exported receipt bundle offline, or generate a signing key. Verification reads only the files you give it — it never contacts the Garboard server, so the check does not depend on the party being audited.

garboard receipt

garboard receipt keygen

Generate an ed25519 receipt signing seed

Prints a new signing seed and its public key. Put the seed in your secret store as GARBOARD_RECEIPT_KEY and publish the public key. This command does NOT write anything: a key this tool could overwrite is a key it could destroy, and regenerating one invalidates verification of every receipt it already signed.

garboard receipt keygen

garboard receipt verify

Verify an exported receipt chain offline

Reads a receipts JSON array (as produced by the evidence bundle) and reports one of four states: verified, unsigned, chain_broken, no_records.

garboard receipt verify <receipts.json> [flags]
FlagDefaultWhat it does
--keyspublished key set JSON (from /.well-known/garboard-receipts.json).

garboard scan

Parse a repo, derive conventions with evidence, and write its RCD

garboard scan [path] [flags]
FlagDefaultWhat it does
--jsonemit the RCD as JSON
--no-llmfacts-only mode: no network calls except git clone
--no-recommendskip the catalog-rule suggestions printed after the summary
--out.garboarddirectory to write rcd.json into

garboard schema

Manage the pinned provider CRD schema cache (grounds the gate and Forge)

Fetches public, versioned Crossplane provider CRD schemas, pins them to an explicit release tag, and caches a compact index locally. The gate and Forge read only this cache; an empty cache means they behave exactly as without schemas. No cloud credentials are ever used — provider schemas are public metadata.

garboard schema

garboard schema ls

List synced schema packages (pinned version, kind count, skipped files)

garboard schema ls [flags]
FlagDefaultWhat it does
--dir.garboard/schemasschema cache directory

garboard schema sync

Fetch and pin a provider package's CRD schemas into the local cache

Downloads the provider's GitHub release tarball at the EXACT tag given by --version (pinning is the point — there is no floating latest), extracts package/crds/*.yaml, and writes a compact schema index under the cache directory. This is the only network call in the schema path; reviews replay deterministically from the cache afterwards.

garboard schema sync [flags]
FlagDefaultWhat it does
--dir.garboard/schemasschema cache directory
--lockschemas.locklockfile path (with --locked)
--lockedsync every pin in the lockfile instead of --pkg/--version
--pkgcrossplane-contrib/provider-upjet-awsprovider package as GitHub owner/repo
--versionrelease tag to pin, e.g.

garboard serve

Run the GitHub App webhook + Connect-RPC API server

garboard serve [flags]
FlagDefaultWhat it does
--addr:8080listen address

garboard version

Print the garboard version

garboard version