COMPLYCTL-PROVIDER-AMPEL(1)
π NAME π
okay bestie, welcome to complyctl-provider-ampel(1) β it's the Ampel scanning provider for complyctl, and it lives in the General Commands Manual section like the absolute icon it is β¨
πΈ SYNOPSIS πΈ
complyctl-provider-ampel
π¦ DESCRIPTION π¦
so complyctl-provider-ampel is a gRPC plugin for complyctl(1) that hands out compliance scanning powers using the Ampel evaluation engine. and like β no cap β you don't run this yourself. it's not that kind of program. complyctl finds it and launches it all on its own the moment the provider is installed. main character energy, but make it a subprocess π
what it actually does: it takes assessment configurations from complyctl and evaluates repository configurations against granular security policies (think branch protection rules, that kind of thing) using the snappy and ampel CLI tools. results come back with per-tenet messages and remediation guidance, which is genuinely so helpful of it π«Ά
the talking-to-complyctl part happens over the hashicorp/go-plugin gRPC interface, and it implements exactly three RPCs: Describe, Generate, and Scan. three. that's the whole squad. periodt.
π CONFIGURATION π
the config comes through variables defined in assessment plan targets. these get passed to the provider via complyctl β you do not set them by hand, bestie. hands off π
url(required) β the HTTPS URL of the repository to scan. it must use the HTTPS scheme, no exceptions. example:https://github.com/org/repospecs(required) β a comma-separated list of spec references identifying which policy files to evaluate. example:builtin:github/branch-rules.yaml. and heads up β path traversal sequences (../) get rejected. nope nope nope πbranches(optional) β comma-separated list of branches to scan. has to match the pattern[a-zA-Z0-9._/-]+. path traversal sequences are rejected here too. default:mainaccess_token(optional) β authentication token for getting into private repositories. rejected if it contains newlines or null bytes. keep it clean β¨platform(optional) β a platform hint for self-hosted instances (e.g.,github,gitlab). used when hostname-based detection fails to figure out the platform. default: auto-detected from the URL hostname.ampel_policy_dir(optional, global variable) β a custom directory holding granular Ampel policy source files. takes second priority after complypack content. default:.complytime/ampel/granular-policies/
π ENVIRONMENT π
COMPLYTIME_MACHINE_ID_FILEβ path to the machine-id file used for host identification in evidence remarks. the file's content gets dropped into eachEvidence.Source.Remarksfield alongside the hostname, so auditors can tell which host the scan ran on. default:/etc/machine-id
π₯ EXTERNAL TOOLS π₯
you need the snappy and ampel CLI tools present at runtime. ampel version 1.4.2 or later is required β that's the version that brought SKIP handling and the βallow-skip flag π. the provider checks the ampel version at Generate/Scan time and, if what you've got is below the minimum, it reports an actionable error instead of just vibing into the void.
not me having to tell you this but: these tools are not currently packaged in Fedora and must be installed separately π
installation instructions live over in the Carabiner project: https://github.com/carabiner-dev
π FILES π
.complytime/ampel/β the provider workspace directory. every path below is relative to the current working directory, iykyk..complytime/ampel/results/<repo>-<branch>-<spec>-snappy.intoto.jsonβ the in-toto attestation produced bysnappy snap. contains the raw API data collected from the repository (e.g., branch protection rules). the filename encodes the sanitized repository URL, the branch, and the spec label..complytime/ampel/results/<repo>-<branch>-<spec>-ampel.intoto.jsonβ the in-toto attestation produced byampel verify. contains the policy evaluation results against the snappy-collected data. filename follows the exact same pattern as the snappy attestation..complytime/ampel/results/<repo>-<branch>.jsonβ per-repository result JSON, summarizing findings for a single repository + branch combo..complytime/ampel/generated/<content-key>/scan-config.jsonβ scan configuration written by the Generate RPC. it records the matched requirement IDs so the Scan RPC can synthesize passing assessments for requirements that had no findings. clever girl π.complytime/ampel/generated/<content-key>/β the merged AMPEL policy bundle, generated from granular policy files..complytime/ampel/generated/generate-index.jsonβ maps each generated target to its content-keyed scan configuration and policy bundle. the little index that keeps track of everyone π.complytime/ampel/granular-policies/β default directory for granular AMPEL policy source files. overridden byampel_policy_diror complypack content.
π EVIDENCE π
the provider records Evidence entries on every AssessmentLog returned by the Scan RPC. per repository/branch/spec combination you get two attestation types:
β Snappy attestation (type: IntotoAttestation)
the snappy tool collects raw API data from the repository platform (e.g., GitHub branch protection settings) and produces an in-toto attestation. this one captures the observed state of the repository at scan time. a literal snapshot, hence the name, obsessed πΈ
Source.Coordinate: path to the snappy attestation fileSource.Digest:sha256:<hex>digest of the attestation fileSource.ReferenceID:snappy-<repo>-<branch>-<spec-label>
β Ampel attestation (type: IntotoAttestation)
the ampel tool evaluates granular security policies against the snappy-collected data and produces an in-toto attestation holding the evaluation results.
β οΈ real talk: a non-zero exit code here means policy failures, not tool errors. don't panic-misread it π
Source.Coordinate: path to the ampel result attestation fileSource.Digest:sha256:<hex>digest of the attestation fileSource.ReferenceID:ampel-<repo>-<branch>-<spec-label>
π EXIT CODES π
this provider is a gRPC subprocess managed by complyctl, so exit codes follow the hashicorp/go-plugin protocol and are not user-facing. nothing for you to read here, bestie, move along π§
π«Ά SEE ALSO π«Ά
complyctl(1), complyctl-provider-openscap(1), complyctl-provider-opa(1)
project: https://github.com/complytime/complytime-providers
β¨ COPYRIGHT β¨
Apache-2.0 β slay, free and open, as always π
π AUTHORS π
Marcus Burghardt <maburgha@redhat.com> β thank you for your service π«‘
and that's the whole page, bestie!! this was the ComplyTime Manual, September 2026 edition, of COMPLYCTL-PROVIDER-AMPEL(1) β go forth and scan responsibly, ily, bye π
β¨π
π¦ where this page comes from
- fedora 43: complytime-providers-ampel 0.3.0-2.fc43 Β· Apache-2.0 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0
- fedora 44: complytime-providers-ampel 0.3.0-2.fc44 Β· Apache-2.0 AND BSD-3-Clause AND ISC AND MIT AND MPL-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms