Quick Start
Step 1: Install Complyctl#
See INSTALLATION.md.
Step 2: Install A Plugin#
Scanning providers are standalone executables placed in ~/.complytime/providers/. The filename determines the evaluator ID.
mkdir -p ~/.complytime/providers
cp bin/complyctl-provider-openscap ~/.complytime/providers/Naming convention: complyctl-provider-<evaluator-id>. The CLI strips the prefix to derive the evaluator ID used for routing.
For the openscap plugin, install prerequisites:
openscap-scannerpackagescap-security-guidepackage
See the Plugin Guide for authoring details.
Step 3: Create Workspace Config#
Create complytime.yaml in your working directory. This is the runtime configuration — it declares targets, variables, and policy selections.
version: 1
policies:
- url: registry.example.com/policies/nist-800-53-r5@v1.0
id: nist
targets:
- id: my-system
policies:
- nist
variables:
api_token: ${MY_API_TOKEN}Or use interactive setup:
complyctl initinit prompts for policy URLs, IDs, and targets when no complytime.yaml exists.
Variable expansion: Only targets[].variables supports ${VAR} environment variable substitution. Use this for secrets and per-target credentials. Top-level variables are workspace constants passed to providers as-is — ${...} references there are not expanded.
Step 4: Fetch Policies#
complyctl getDownloads Gemara policies from the OCI registry into the local cache (~/.complytime/policies/). Incremental — only fetches new or modified content.
Step 5: Verify Cache#
complyctl listDisplays cached policies and their versions.
Step 6: Generate#
complyctl generate --policy-id nist-800-53-r5Resolves the policy dependency graph, extracts assessment configurations, and dispatches to the matching plugin via Generate RPC.
Step 7: Scan#
## Evaluationlog (default)
complyctl scan --policy-id nist-800-53-r5
## Markdown Report
complyctl scan --policy-id nist-800-53-r5 --format pretty
## OSCAL Assessment-results
complyctl scan --policy-id nist-800-53-r5 --format oscal
## Sarif
complyctl scan --policy-id nist-800-53-r5 --format sarifOutput written to ./.complytime/scan/.
Authentication#
complyctl uses Docker credential helpers via oras-credentials-go. No custom configuration needed — if docker login works, complyctl get works.
Supported sources:
~/.docker/config.json(credHelpers, credsStore, inline auths)- Credential helpers:
docker-credential-desktop,docker-credential-gcloud,docker-credential-ecr-login, etc.