Configuration
Workspace layout, settings, suppressions, and report metadata.
CloudOpt keeps snapshots, analysis runs, and reports in a workspace directory. Pass --workspace-dir on each command or export COA_WORKSPACE_DIR once before the session (default: ~/.cloudopt).
Workspace layout
After cloudopt init:
~/.cloudopt/
├── config/
│ ├── config.yaml # main settings
│ ├── suppressions.yaml # optional: hide known findings
│ └── report.yaml # optional: customer/project labels
├── data/ # snapshots and analysis results
├── reports/ # generated HTML and JSON
└── tmp/
Settings precedence
Highest priority wins:
- Command flags (
--workspace-dir,--log-level, etc.) - Environment variables (
COA_*) config/config.yamlin the workspace
Environment variables
| Variable | Purpose |
|---|---|
COA_WORKSPACE_DIR |
Workspace root directory |
COA_LOG_LEVEL |
debug, info, warn, or error |
COA_LOG_FORMAT |
text or json |
Credentials
AWS: env vars, ~/.aws/credentials, or an instance/container IAM role via the standard SDK chain.
GCP: Application Default Credentials (gcloud auth application-default login, or workload identity in CI). Pass --impersonate-service-account on collect commands for short-lived cross-project access without storing keys.
Do not put secrets in workspace config files or commit them to git.
Suppressing findings
Add accepted findings to config/suppressions.yaml:
suppressions:
- fingerprint: "<finding fingerprint from a previous report>"
reason: "Decommission scheduled for Q3"
expires_at: "2026-12-31T23:59:59Z"
Or suppress by rule and resource:
suppressions:
- rule_id: compute.stopped_instance_storage_cost
resource_id: i-0abc123def456
reason: "Reserved for DR testing"
Expired suppressions drop out automatically. Suppressed findings still show in the report appendix but not in totals.
Report metadata
Optional config/report.yaml sets header labels:
customer_name: Acme Corp
project_name: Production audit
These labels do not affect analysis or findings.