CLI Commands Reference
Complete command reference for FinFocus.
Commands Overview
Section titled “Commands Overview”finfocus # Auto-detects Pulumi project; opens overview if found, otherwise shows helpfinfocus overview # Unified cost dashboard (alias: ov)finfocus cost # Cost commandsfinfocus cost projected # Estimate costs from planfinfocus cost actual # Get actual historical costsfinfocus cost estimate # What-if cost analysisfinfocus cost recommendations # Get cost optimization recommendationsfinfocus cost recommendations dismiss # Dismiss a recommendationfinfocus cost recommendations snooze # Snooze a recommendationfinfocus cost recommendations undismiss # Re-enable a dismissed recommendationfinfocus cost recommendations history # View recommendation lifecycle historyfinfocus config # Configuration commandsfinfocus config init # Initialize configuration file with defaultsfinfocus config set # Set a configuration valuefinfocus config get # Get a configuration valuefinfocus config list # List all configuration valuesfinfocus config validate # Validate routing configurationfinfocus config routes # Routing inspection commandsfinfocus config routes list # Show effective routing rulesfinfocus config routes test # Simulate plugin selection for a resource typefinfocus plugin # Plugin commandsfinfocus plugin init # Initialize a new pluginfinfocus plugin install # Install a pluginfinfocus plugin update # Update a pluginfinfocus plugin remove # Remove a pluginfinfocus plugin list # List installed pluginsfinfocus plugin inspect # Inspect plugin capabilitiesfinfocus plugin validate # Validate plugin setupfinfocus plugin conformance # Run conformance testsfinfocus plugin certify # Run certification testsfinfocus analyzer # Analyzer commandsfinfocus analyzer install # Install the Pulumi analyzer pluginfinfocus analyzer uninstall # Uninstall the Pulumi analyzer pluginfinfocus analyzer serve # Start the analyzer gRPC serveroverview
Section titled “overview”Display a unified cost dashboard combining Pulumi state and plan data with actual costs, projected costs, drift analysis, and recommendations.
When run inside a Pulumi project directory without explicit file flags, finfocus overview
auto-detects the project and current stack, then runs pulumi stack export and
pulumi preview --json automatically. Running finfocus with no arguments has the
same effect when a Pulumi project is detected.
Alias: ov
Usage (overview)
Section titled “Usage (overview)”finfocus overview [options]finfocus ov [options]finfocus # same as overview when inside a Pulumi projectOptions (overview)
Section titled “Options (overview)”| Flag | Description | Default |
|---|---|---|
--pulumi-state | Path to Pulumi state JSON (skips auto-detection) | Auto-detected |
--pulumi-json | Path to Pulumi preview JSON (skips auto-detection) | Auto-detected |
--stack | Pulumi stack name for auto-detection (ignored with --pulumi-state/--pulumi-json) | Current stack |
--from | Start date (YYYY-MM-DD or RFC3339) | 1st of current month |
--to | End date (YYYY-MM-DD or RFC3339) | Now |
--adapter | Restrict to a specific adapter plugin | All plugins |
--output | Output format: table, json, ndjson | table |
--filter | Resource filters, repeatable | - |
--plain | Force non-interactive plain text output | false |
--yes, -y | Skip confirmation prompts | false |
--no-pagination | Disable pagination (plain mode only) | false |
Examples (overview)
Section titled “Examples (overview)”# Auto-detect from current Pulumi project (recommended)finfocus overview
# Same — bare invocation inside a Pulumi projectfinfocus
# Select a non-default stackfinfocus overview --stack production
# Use pre-exported filesfinfocus overview --pulumi-state state.json --pulumi-json plan.json
# CI/CD: non-interactive JSON outputfinfocus overview --output json --yes
# Filter to a single providerfinfocus overview --filter provider=aws --plain --yes
# Custom date rangefinfocus overview --from 2026-01-01 --to 2026-01-31 --plain --yescost projected
Section titled “cost projected”Calculate estimated costs from Pulumi plan. When --pulumi-json is omitted,
FinFocus auto-detects the Pulumi project and runs pulumi preview --json.
Usage (cost projected)
Section titled “Usage (cost projected)”finfocus cost projected [options]Options (cost projected)
Section titled “Options (cost projected)”| Flag | Description | Default |
|---|---|---|
--pulumi-json | Path to Pulumi preview JSON (optional; auto-detected if omitted) | |
--stack | Pulumi stack name for auto-detection (ignored with —pulumi-json) | |
--filter | Filter resources (tag:key=value, type=*) | None |
--output | Output format: table, json, ndjson | table |
--utilization | Assumed resource utilization (0.0-1.0) | 1.0 |
--help | Show help |
Examples (cost projected)
Section titled “Examples (cost projected)”# Auto-detect from Pulumi projectfinfocus cost projected
# Specific stackfinfocus cost projected --stack production
# Explicit file (existing behavior)finfocus cost projected --pulumi-json plan.json
# JSON outputfinfocus cost projected --pulumi-json plan.json --output json
# Filter by typefinfocus cost projected --pulumi-json plan.json --filter "type=aws:ec2*"
# NDJSON for pipelinesfinfocus cost projected --pulumi-json plan.json --output ndjsoncost recommendations
Section titled “cost recommendations”Display cost optimization recommendations from cloud providers.
Usage (cost recommendations)
Section titled “Usage (cost recommendations)”finfocus cost recommendations --pulumi-json <file> [options]Options (cost recommendations)
Section titled “Options (cost recommendations)”| Flag | Description | Default |
|---|---|---|
--pulumi-json | Path to Pulumi preview JSON | Required |
--filter | Filter expression (e.g., action=RIGHTSIZE,TERMINATE) | None |
--output | Output format: table, json, ndjson | table |
--limit | Limit number of recommendations | 0 (all) |
--verbose | Show all recommendations with full details | false |
--include-dismissed | Show dismissed and snoozed recommendations alongside active ones | false |
--sort | Sort expression (e.g., savings:desc) | None |
--help | Show help |
Subcommands (cost recommendations)
Section titled “Subcommands (cost recommendations)”| Subcommand | Description |
|---|---|
dismiss | Permanently dismiss a recommendation |
snooze | Snooze a recommendation until a date |
undismiss | Re-enable a dismissed recommendation |
history | View lifecycle history for a recommendation |
Examples (cost recommendations)
Section titled “Examples (cost recommendations)”# Interactive mode (default)finfocus cost recommendations --pulumi-json plan.json
# Filter by action typefinfocus cost recommendations --pulumi-json plan.json --filter "action=RIGHTSIZE,TERMINATE"
# JSON outputfinfocus cost recommendations --pulumi-json plan.json --output json
# Include dismissed and snoozed recommendationsfinfocus cost recommendations --pulumi-json plan.json --include-dismissedcost recommendations dismiss
Section titled “cost recommendations dismiss”Permanently dismiss a recommendation with a reason.
Usage (cost recommendations dismiss)
Section titled “Usage (cost recommendations dismiss)”finfocus cost recommendations dismiss <recommendation-id> [options]Options (cost recommendations dismiss)
Section titled “Options (cost recommendations dismiss)”| Flag | Description | Default |
|---|---|---|
-r, --reason | Dismissal reason (required) | Required |
-n, --note | Free-text explanation (required for other reason) | None |
-f, --force | Skip confirmation prompt | false |
--pulumi-json | Path to Pulumi preview JSON (for plugin communication) | None |
--adapter | Use specific adapter plugin | None |
Valid Reasons
Section titled “Valid Reasons”| Reason | Description |
|---|---|
not-applicable | Recommendation doesn’t apply |
already-implemented | Already acted on this recommendation |
business-constraint | Business requirements prevent action |
technical-constraint | Technical limitations prevent action |
deferred | Will address later |
inaccurate | Recommendation data is wrong |
other | Custom reason (requires --note) |
Examples (cost recommendations dismiss)
Section titled “Examples (cost recommendations dismiss)”# Dismiss with a reasonfinfocus cost recommendations dismiss rec-123abc \ --reason business-constraint --pulumi-json plan.json
# Dismiss with a custom notefinfocus cost recommendations dismiss rec-123abc \ --reason other --note "Intentional oversizing" --pulumi-json plan.json
# Skip confirmation promptfinfocus cost recommendations dismiss rec-123abc \ --reason not-applicable --force --pulumi-json plan.jsoncost recommendations snooze
Section titled “cost recommendations snooze”Temporarily dismiss a recommendation until a future date.
Usage (cost recommendations snooze)
Section titled “Usage (cost recommendations snooze)”finfocus cost recommendations snooze <recommendation-id> [options]Options (cost recommendations snooze)
Section titled “Options (cost recommendations snooze)”| Flag | Description | Default |
|---|---|---|
--until | Snooze until date (required, YYYY-MM-DD or RFC3339; must be in the future) | Required |
-r, --reason | Dismissal reason | deferred |
-n, --note | Free-text explanation | None |
-f, --force | Skip confirmation prompt | false |
--pulumi-json | Path to Pulumi preview JSON (for plugin communication) | None |
--adapter | Use specific adapter plugin | None |
Examples (cost recommendations snooze)
Section titled “Examples (cost recommendations snooze)”# Snooze until a specific date (replace with a future date)finfocus cost recommendations snooze rec-456def \ --until YYYY-MM-DD --pulumi-json plan.json
# Snooze with reason and note (replace with a future date)finfocus cost recommendations snooze rec-456def \ --until YYYY-MM-DD --reason deferred \ --note "Scheduled for Q2 review" --pulumi-json plan.jsoncost recommendations undismiss
Section titled “cost recommendations undismiss”Re-enable a previously dismissed or snoozed recommendation.
Usage (cost recommendations undismiss)
Section titled “Usage (cost recommendations undismiss)”finfocus cost recommendations undismiss <recommendation-id> [options]Options (cost recommendations undismiss)
Section titled “Options (cost recommendations undismiss)”| Flag | Description | Default |
|---|---|---|
-f, --force | Skip confirmation prompt | false |
Examples (cost recommendations undismiss)
Section titled “Examples (cost recommendations undismiss)”# Re-enable a dismissed recommendationfinfocus cost recommendations undismiss rec-123abccost recommendations history
Section titled “cost recommendations history”View the lifecycle history of a specific recommendation.
Usage (cost recommendations history)
Section titled “Usage (cost recommendations history)”finfocus cost recommendations history <recommendation-id> [options]Options (cost recommendations history)
Section titled “Options (cost recommendations history)”| Flag | Description | Default |
|---|---|---|
--output | Output format: table, json, ndjson | table |
Examples (cost recommendations history)
Section titled “Examples (cost recommendations history)”# View history in table formatfinfocus cost recommendations history rec-123abc
# View history as JSONfinfocus cost recommendations history rec-123abc --output json
# View history as NDJSON (one JSON object per line)finfocus cost recommendations history rec-123abc --output ndjsoncost actual
Section titled “cost actual”Get actual historical costs from plugins. When --pulumi-json and --pulumi-state
are both omitted, FinFocus auto-detects the Pulumi project and runs
pulumi stack export.
Usage (cost actual)
Section titled “Usage (cost actual)”finfocus cost actual [options]Options (cost actual)
Section titled “Options (cost actual)”| Flag | Description | Default |
|---|---|---|
--pulumi-json | Path to Pulumi preview JSON (mutually exclusive with —pulumi-state) | |
--pulumi-state | Path to Pulumi state JSON from pulumi stack export | |
--stack | Pulumi stack name for auto-detection (ignored with —pulumi-json/—pulumi-state) | |
--from | Start date (YYYY-MM-DD or RFC3339; auto-detected from state if omitted) | |
--to | End date (YYYY-MM-DD or RFC3339) | Now |
--filter | Filter resources (tag:key=value, type=*) | None |
--group-by | Group results (resource, type, provider, daily, monthly) | |
--output | Output format: table, json, ndjson | table |
--estimate-confidence | Show confidence level for cost estimates | false |
--help | Show help |
Confidence Levels
Section titled “Confidence Levels”When --estimate-confidence is enabled, a Confidence column appears showing data reliability:
| Level | Description |
|---|---|
| HIGH | Real billing data from plugin (AWS Cost Explorer, Kubecost) |
| MEDIUM | Runtime estimate for Pulumi-created resources |
| LOW | Runtime estimate for imported resources (creation time unknown) |
Examples (cost actual)
Section titled “Examples (cost actual)”# Auto-detect from Pulumi project (dates auto-detected from state)finfocus cost actual
# Auto-detect with specific stackfinfocus cost actual --stack production
# Estimate costs from Pulumi state (--from auto-detected from timestamps)finfocus cost actual --pulumi-state state.json
# Estimate costs from state with explicit date rangefinfocus cost actual --pulumi-state state.json --from 2025-01-01 --to 2025-01-31
# Get costs from Pulumi planfinfocus cost actual --pulumi-json plan.json --from 2025-01-01
# Group by dayfinfocus cost actual --pulumi-json plan.json --group-by daily --from 2025-01-01 --to 2025-01-31
# Group by providerfinfocus cost actual --pulumi-json plan.json --from 2025-01-01 --group-by provider
# Filter by tagfinfocus cost actual --pulumi-json plan.json --from 2025-01-01 --filter "tag:env=prod"
# JSON outputfinfocus cost actual --pulumi-json plan.json --from 2025-01-01 --output json
# Show estimate confidence levels (useful for imported resources)finfocus cost actual --pulumi-state state.json --estimate-confidencecost estimate
Section titled “cost estimate”Perform what-if cost analysis on resources without modifying Pulumi code.
Usage (cost estimate)
Section titled “Usage (cost estimate)”finfocus cost estimate [options]The command supports two mutually exclusive modes:
Single-Resource Mode:
- Specify
--providerand--resource-typeto estimate cost for a single resource - Use
--propertyto specify property overrides (repeatable)
Plan-Based Mode:
- Specify
--pulumi-jsonto load resources from a Pulumi plan - Use
--modifyto apply modifications to specific resources
Options (cost estimate)
Section titled “Options (cost estimate)”| Flag | Description | Default |
|---|---|---|
--provider | Cloud provider (aws, gcp, azure) | |
--resource-type | Resource type (e.g., ec2:Instance) | |
--property | Property override key=value (repeatable) | |
--pulumi-json | Path to Pulumi preview JSON | |
--modify | Resource modification resource:key=value | |
--region | Region for cost calculation | |
--interactive | Launch interactive TUI mode | false |
--output | Output format: table, json, ndjson | table |
--adapter | Specific plugin adapter to use | |
--help | Show help |
Examples (cost estimate)
Section titled “Examples (cost estimate)”# Single resource estimation - estimate cost of changing instance typefinfocus cost estimate --provider aws --resource-type ec2:Instance \ --property instanceType=m5.large
# Single resource with regionfinfocus cost estimate --provider aws --resource-type ec2:Instance \ --property instanceType=m5.large --region us-west-2
# Plan-based estimation - modify a specific resource in existing planfinfocus cost estimate --pulumi-json plan.json \ --modify "web-server:instanceType=m5.large"
# Plan-based with multiple modificationsfinfocus cost estimate --pulumi-json plan.json \ --modify "web-server:instanceType=m5.large" \ --modify "api-server:instanceType=c5.xlarge"
# Interactive TUI modefinfocus cost estimate --interactive
# Interactive mode with planfinfocus cost estimate --pulumi-json plan.json --interactive
# JSON output for scriptingfinfocus cost estimate --provider aws --resource-type ec2:Instance \ --property instanceType=m5.large --output jsonOutput Example
Section titled “Output Example”What-If Cost Analysis=====================
Resource: ec2:Instance (aws)ID: estimate-resource
Baseline: $8.32/mo (USD)Modified: $83.22/mo (USD)
Change: +$74.90/mo
Property Changes:----------------- instanceType: t3.micro -> m5.large (+$74.90/mo)Interactive Mode
Section titled “Interactive Mode”The interactive TUI mode allows you to:
- Navigate through resource properties with arrow keys
- Edit property values inline (press Enter to edit)
- See live cost updates as you modify properties
- Press ‘q’ or Ctrl+C to exit
config init
Section titled “config init”Initialize a configuration file with default values. When run inside a Pulumi
project, creates project-local configuration at $PROJECT/.finfocus/config.yaml
along with a .gitignore to protect user-specific data. Use --global to force
global initialization even inside a project.
Usage (config init)
Section titled “Usage (config init)”finfocus config init [options]Options (config init)
Section titled “Options (config init)”| Flag | Description | Default |
|---|---|---|
--global | Force global config init even inside a Pulumi project | false |
--force | Overwrite existing configuration file | false |
Examples (config init)
Section titled “Examples (config init)”# Create project-local config (inside a Pulumi project)finfocus config init
# Create global configfinfocus config init --global
# Overwrite existing configfinfocus config init --forceconfig set
Section titled “config set”Set a configuration value using dot notation. Writes to ~/.finfocus/config.yaml
(or the project-local config when inside a Pulumi project).
For sensitive values such as API keys, use environment variables instead of storing them in config files.
Usage (config set)
Section titled “Usage (config set)”finfocus config set <key> <value>Examples (config set)
Section titled “Examples (config set)”# Set output formatfinfocus config set output.default_format json
# Set plugin configurationfinfocus config set plugins.aws.region us-west-2
# Set logging levelfinfocus config set logging.level debug
# For sensitive values, prefer environment variablesexport FINFOCUS_PLUGIN_AWS_SECRET_KEY="mysecret"config get
Section titled “config get”Get a configuration value using dot notation from ~/.finfocus/config.yaml.
Usage (config get)
Section titled “Usage (config get)”finfocus config get <key>Examples (config get)
Section titled “Examples (config get)”# Get output formatfinfocus config get output.default_format
# Get a plugin sectionfinfocus config get plugins.aws
# Get all pluginsfinfocus config get plugins
# Get logging levelfinfocus config get logging.levelconfig list
Section titled “config list”List all configuration values from ~/.finfocus/config.yaml.
Usage (config list)
Section titled “Usage (config list)”finfocus config list [options]Options (config list)
Section titled “Options (config list)”| Flag | Description | Default |
|---|---|---|
--format | Output format: yaml or json | yaml |
Examples (config list)
Section titled “Examples (config list)”# List all configuration in YAML format (default)finfocus config list
# List all configuration in JSON formatfinfocus config list --format jsonconfig validate
Section titled “config validate”Validate routing configuration for errors and warnings.
Usage (config validate)
Section titled “Usage (config validate)”finfocus config validate [options]Options (config validate)
Section titled “Options (config validate)”| Flag | Description |
|---|---|
--help | Show help |
Examples (config validate)
Section titled “Examples (config validate)”# Validate routing configurationfinfocus config validate
# Success output:# ✓ Configuration valid## Discovered plugins:# aws-ce: Recommendations, ActualCosts (priority: 20)# aws-public: ProjectedCosts, ActualCosts (priority: 10)## Routing rules:# aws:eks:* → eks-costs (pattern, priority: 30)# aws:* → aws-public (provider, priority: 10)
# Error output:# ✗ Configuration invalid## Errors:# - aws-ce: plugin not found# - patterns[0].pattern: invalid regex: missing closing bracket## Warnings:# - aws-public: feature 'Carbon' not supported by plugin# - eks-costs: duplicate plugin configuration foundconfig routes list
Section titled “config routes list”Display effective plugin routing rules.
Usage (config routes list)
Section titled “Usage (config routes list)”finfocus config routes list [--output table|json]Options (config routes list)
Section titled “Options (config routes list)”| Flag | Description | Default |
|---|---|---|
--output | Output format: table or json | table |
Examples (config routes list)
Section titled “Examples (config routes list)”# Show routing as a tablefinfocus config routes list
# Show routing in JSONfinfocus config routes list --output jsonconfig routes test
Section titled “config routes test”Simulate plugin selection for a resource type and view match reasons.
Usage (config routes test)
Section titled “Usage (config routes test)”finfocus config routes test <resource-type> [region] [--output table|json]Arguments (config routes test)
Section titled “Arguments (config routes test)”| Argument | Required | Description |
|---|---|---|
resource-type | Yes | Pulumi type token (for example aws:ec2:Instance) |
region | No | Region hint (for example us-east-1) |
Options (config routes test)
Section titled “Options (config routes test)”| Flag | Description | Default |
|---|---|---|
--output | Output format: table or json | table |
Examples (config routes test)
Section titled “Examples (config routes test)”# Test routing for a typefinfocus config routes test aws:ec2:Instance
# Include region in match contextfinfocus config routes test aws:ec2:Instance us-east-1
# JSON output for scriptsfinfocus config routes test aws:ec2:Instance --output jsonplugin init
Section titled “plugin init”Initialize a new FinFocus plugin project.
Usage (plugin init)
Section titled “Usage (plugin init)”finfocus plugin init <plugin-name> --author <name> --providers <list> [options]Options (plugin init)
Section titled “Options (plugin init)”| Flag | Description | Default |
|---|---|---|
--author | Author name for the plugin | (required) |
--providers | Comma-separated list of cloud providers | (required) |
--help | Show help |
Examples (plugin init)
Section titled “Examples (plugin init)”# Initialize a new AWS pluginfinfocus plugin init my-aws-plugin --author "Your Name" --providers awsplugin install
Section titled “plugin install”Install a FinFocus plugin from a registry or URL.
Usage (plugin install)
Section titled “Usage (plugin install)”finfocus plugin install <plugin-name> [--version <version>] [--url <url>] [options]Options (plugin install)
Section titled “Options (plugin install)”| Flag | Description | Default |
|---|---|---|
--version | Specify plugin version to install | latest |
--url | URL to plugin binary (for custom installs) | (registry lookup) |
--force | Force overwrite existing plugin installation | false |
--clean | Remove all other versions after successful install | false |
--metadata | Key=value metadata pairs (e.g., region=us-west-2) | (none) |
--no-save | Don’t add plugin to config file | false |
--help | Show help |
Examples (plugin install)
Section titled “Examples (plugin install)”# Install the latest Vantage pluginfinfocus plugin install vantage
# Install a specific version of a pluginfinfocus plugin install kubecost --version 0.2.0
# Install and remove all other versions (cleanup disk space)finfocus plugin install kubecost --clean
# Install from a custom URLfinfocus plugin install my-plugin --url https://example.com/my-plugin-0.1.0.tar.gz
# Install with region metadata (selects region-specific binary)finfocus plugin install aws-public --metadata="region=us-west-2"plugin update
Section titled “plugin update”Update an installed FinFocus plugin.
Usage (plugin update)
Section titled “Usage (plugin update)”finfocus plugin update <plugin-name> [options]Options (plugin update)
Section titled “Options (plugin update)”| Flag | Description | Default |
|---|---|---|
--version | Specify target version (defaults to latest) | latest |
--all | Update all installed plugins | false |
--help | Show help |
Examples (plugin update)
Section titled “Examples (plugin update)”# Update the Vantage plugin to the latest versionfinfocus plugin update vantage
# Update all installed pluginsfinfocus plugin update --allplugin remove
Section titled “plugin remove”Remove an installed FinFocus plugin.
Usage (plugin remove)
Section titled “Usage (plugin remove)”finfocus plugin remove <plugin-name> [options]Options (plugin remove)
Section titled “Options (plugin remove)”| Flag | Description | Default |
|---|---|---|
--all | Remove all installed plugins | false |
--help | Show help |
Examples (plugin remove)
Section titled “Examples (plugin remove)”# Remove the Vantage pluginfinfocus plugin remove vantage
# Remove all installed pluginsfinfocus plugin remove --allplugin list
Section titled “plugin list”List installed plugins with optional capability details.
Usage (plugin list)
Section titled “Usage (plugin list)”finfocus plugin list [options]Options (plugin list)
Section titled “Options (plugin list)”| Flag | Description | Default |
|---|---|---|
--verbose | Show detailed plugin capabilities and providers | false |
--help | Show help |
Examples (plugin list)
Section titled “Examples (plugin list)”# List all pluginsfinfocus plugin list
# Output:# NAME VERSION SPEC PATH# vantage 0.1.0 0.4.14 /Users/me/.finfocus/plugins/vantage/v0.1.0/finfocus-plugin-vantage# kubecost 0.2.0 0.4.14 /Users/me/.finfocus/plugins/kubecost/v0.2.0/finfocus-plugin-kubecost
# List with detailed capabilities (routing-aware)finfocus plugin list --verbose
# Output:# NAME VERSION PROVIDERS CAPABILITIES SPEC PATH# aws-public 1.0.0 [aws] ProjectedCosts, ActualCosts 0.4.14 /Users/me/.finfocus/plugins/aws-public/v1.0.0/finfocus-plugin-aws-public# aws-ce 1.0.0 [aws] Recommendations, ActualCosts 0.4.14 /Users/me/.finfocus/plugins/aws-ce/v1.0.0/finfocus-plugin-aws-ce# gcp-public 1.0.0 [gcp] ProjectedCosts, ActualCosts 0.4.14 /Users/me/.finfocus/plugins/gcp-public/v1.0.0/finfocus-plugin-gcp-public# eks-costs 0.5.0 [aws] ProjectedCosts 0.4.14 /Users/me/.finfocus/plugins/eks-costs/v0.5.0/finfocus-plugin-eks-costsplugin inspect
Section titled “plugin inspect”Inspect a plugin’s capabilities and field mappings.
Usage (plugin inspect)
Section titled “Usage (plugin inspect)”finfocus plugin inspect <plugin-name> <resource-type> [options]Options (plugin inspect)
Section titled “Options (plugin inspect)”| Flag | Description | Default |
|---|---|---|
--version | Specify plugin version to inspect | latest |
--json | Output in JSON format | false |
--help | Show help |
Examples (plugin inspect)
Section titled “Examples (plugin inspect)”# Inspect field mappings for AWS EC2 Instancefinfocus plugin inspect aws-public aws:ec2/instance:Instance
# Output:# Field Mappings:# FIELD STATUS CONDITION# -------------------- ---------- ------------------------------# instanceType MAPPED# region MAPPED# tags IGNORED Not used for pricing
# Inspect specific versionfinfocus plugin inspect aws-public aws:ec2/instance:Instance --version v0.1.0
# Output as JSONfinfocus plugin inspect aws-public aws:ec2/instance:Instance --jsonplugin validate
Section titled “plugin validate”Validate plugin installations.
Usage (plugin validate)
Section titled “Usage (plugin validate)”finfocus plugin validate [options]Options (plugin validate)
Section titled “Options (plugin validate)”| Flag | Description |
|---|---|
--help | Show help |
Examples (plugin validate)
Section titled “Examples (plugin validate)”# Validate all pluginsfinfocus plugin validate
# Output:# vantage (0.1.0): OK# kubecost (0.2.0): OKplugin conformance
Section titled “plugin conformance”Run conformance tests against a plugin binary to verify protocol compliance.
Usage (plugin conformance)
Section titled “Usage (plugin conformance)”finfocus plugin conformance <plugin-path> [options]Options (plugin conformance)
Section titled “Options (plugin conformance)”| Flag | Description | Default |
|---|---|---|
--mode | Communication mode: tcp, stdio | tcp |
--verbosity | Output detail: quiet, normal, verbose, debug | normal |
--output | Output format: table, json, junit | table |
--output-file | Write output to file | stdout |
--timeout | Global suite timeout | 5m |
--category | Filter by category (repeatable): protocol, error, performance, context | all |
--filter | Regex filter for test names | |
--help | Show help |
Examples (plugin conformance)
Section titled “Examples (plugin conformance)”# Basic conformance checkfinfocus plugin conformance ./plugins/aws-cost
# Verbose output with JSONfinfocus plugin conformance --verbosity verbose --output json ./plugins/aws-cost
# Filter to protocol tests onlyfinfocus plugin conformance --category protocol ./plugins/aws-cost
# JUnit XML for CIfinfocus plugin conformance --output junit --output-file report.xml ./plugins/aws-cost
# Use stdio modefinfocus plugin conformance --mode stdio ./plugins/aws-costplugin certify
Section titled “plugin certify”Run full certification tests and generate a certification report.
Usage (plugin certify)
Section titled “Usage (plugin certify)”finfocus plugin certify <plugin-path> [options]Options (plugin certify)
Section titled “Options (plugin certify)”| Flag | Description | Default |
|---|---|---|
-o, --output | Output file for certification report | stdout |
--mode | Communication mode: tcp, stdio | tcp |
--timeout | Global certification timeout | 10m |
--help | Show help |
Certification Requirements
Section titled “Certification Requirements”A plugin is certified if all conformance tests pass:
- All protocol tests (Name, GetProjectedCost, GetActualCost)
- All error handling tests
- All context/timeout tests
- All performance tests
Examples (plugin certify)
Section titled “Examples (plugin certify)”# Basic certificationfinfocus plugin certify ./plugins/aws-cost
# Save report to filefinfocus plugin certify --output certification.md ./plugins/aws-cost
# Use stdio modefinfocus plugin certify --mode stdio ./plugins/aws-cost
# Output:# 🔍 Certifying plugin at ./plugins/aws-cost...# Running conformance tests...# ✅ CERTIFIED - Plugin passed all conformance testsCertification Report
Section titled “Certification Report”The command generates a markdown report containing:
- Plugin name and version
- Certification status (CERTIFIED or FAILED)
- Test summary (total, passed, failed, skipped)
- List of issues (if any failed)
analyzer serve
Section titled “analyzer serve”Starts the FinFocus analyzer gRPC server. This command is intended to be run by
the Pulumi CLI as part of the pulumi preview workflow, typically configured in
Pulumi.yaml.
Usage (analyzer serve)
Section titled “Usage (analyzer serve)”finfocus analyzer serve [options]Options (analyzer serve)
Section titled “Options (analyzer serve)”| Flag | Description | Default |
|---|---|---|
--logtostderr | Log messages to stderr rather than log files | false |
--v | Log level for V-logging (verbose logging) | 0 |
--pulumilogfile | Pulumi log file name (internal use) | (generated) |
--help | Show help |
Examples (analyzer serve)
Section titled “Examples (analyzer serve)”# This command is typically not run directly by users.# It's configured in Pulumi.yaml for zero-click cost estimation:## plugins:# - path: finfocus# args: ["analyzer", "serve"]analyzer install
Section titled “analyzer install”Install the finfocus binary as a Pulumi Analyzer plugin. This replaces the manual process of creating the plugin directory, copying the binary, and setting permissions.
After installation, the binary on PATH is required for Pulumi to find it:
export PATH="${HOME}/.pulumi/plugins/analyzer-finfocus-v<version>:${PATH}"Usage (analyzer install)
Section titled “Usage (analyzer install)”finfocus analyzer install [options]Options (analyzer install)
Section titled “Options (analyzer install)”| Flag | Description | Default |
|---|---|---|
--force | Overwrite existing installation | false |
--target-dir | Override Pulumi plugin directory | ~/.pulumi/plugins/ |
Examples (analyzer install)
Section titled “Examples (analyzer install)”# Install the analyzerfinfocus analyzer install
# Force reinstall after upgrading finfocusfinfocus analyzer install --force
# Install to a custom directoryfinfocus analyzer install --target-dir /opt/pulumi/pluginsanalyzer uninstall
Section titled “analyzer uninstall”Remove all installed versions of the finfocus Pulumi Analyzer plugin.
All analyzer-finfocus-v* directories are deleted from the plugin directory.
Usage (analyzer uninstall)
Section titled “Usage (analyzer uninstall)”finfocus analyzer uninstall [options]Options (analyzer uninstall)
Section titled “Options (analyzer uninstall)”| Flag | Description | Default |
|---|---|---|
--target-dir | Override Pulumi plugin directory | ~/.pulumi/plugins/ |
Examples (analyzer uninstall)
Section titled “Examples (analyzer uninstall)”# Uninstall the analyzerfinfocus analyzer uninstall
# Uninstall from a custom directoryfinfocus analyzer uninstall --target-dir /opt/pulumi/pluginsGlobal Options
Section titled “Global Options”finfocus [global options] command [command options]| Option | Description |
|---|---|
--help | Show help |
--version | Show version |
--debug | Enable debug logging |
--verbose | Enable verbose output |
--no-color | Disable colored output |
--plain | Enable plain text mode (no TUI) |
--high-contrast | Enable high contrast mode |
--skip-version-check | Skip plugin spec version compatibility check |
Date Formats
Section titled “Date Formats”Accepted Formats
Section titled “Accepted Formats”# ISO 8601 (YYYY-MM-DD)finfocus cost actual --from 2024-01-01
# RFC3339 (full timestamp)finfocus cost actual --from 2024-01-01T00:00:00Z
# Relative (future)finfocus cost actual --from "7 days ago"Output Formats
Section titled “Output Formats”Table (Default)
Section titled “Table (Default)”Human-readable table format:
RESOURCE TYPE MONTHLY CURRENCYInstance1 ec2 $7.50 USDBucket1 s3 $0.50 USD──────────────────────────────Total $8.00 USDMachine-readable JSON format:
{ "summary": { "totalMonthly": 8.0, "currency": "USD" }, "resources": [{ "name": "Instance1", "type": "ec2", "cost": 7.5 }]}NDJSON
Section titled “NDJSON”Newline-delimited JSON (one per line):
{"name":"Instance1","type":"ec2","cost":7.50}{"name":"Bucket1","type":"s3","cost":0.50}Exit Codes
Section titled “Exit Codes”| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Invalid arguments |
See User Guide for workflow examples.