FinFocus Cost Analysis
Projected Costs
Estimate future costs from a Pulumi preview:
# From Pulumi JSON
finfocus cost projected --pulumi-json plan.json
# With output format
finfocus cost projected --pulumi-json plan.json --output json
# With specific adapter
finfocus cost projected --pulumi-json plan.json --adapter aws-public
# Auto-detect Pulumi project (searches for Pulumi.yaml)
finfocus cost projected
Generate Pulumi JSON: pulumi preview --json > plan.json
Actual Costs
Fetch historical costs from cloud providers:
# Basic usage
finfocus cost actual --pulumi-json plan.json --from 2024-01-01
# Date range
finfocus cost actual --pulumi-json plan.json --from 2024-01-01 --to 2024-01-31
# With grouping
finfocus cost actual --pulumi-json plan.json --from 2024-01-01 --group-by daily
finfocus cost actual --pulumi-json plan.json --from 2024-01-01 --group-by monthly
# Cross-provider aggregation
finfocus cost actual --group-by daily --from 2024-01-01 --to 2024-01-31
Date formats: 2006-01-02 or RFC3339. --to defaults to now.
Recommendations
Get cost optimization suggestions:
# All recommendations
finfocus cost recommendations --pulumi-json plan.json
# Filter by action type
finfocus cost recommendations --pulumi-json plan.json --action-type RIGHTSIZE,TERMINATE
# Dismiss/undismiss
finfocus cost recommendations dismiss <id>
finfocus cost recommendations undismiss <id>
finfocus cost recommendations history
Valid action types: RIGHTSIZE, TERMINATE, PURCHASE_COMMITMENT, ADJUST_REQUESTS, MODIFY, DELETE_UNUSED, MIGRATE, CONSOLIDATE, SCHEDULE, REFACTOR, INVESTIGATE, OTHER.
Budgets
Monitor cloud spending against budget limits:
# View budgets
finfocus cost budget
# Filter by provider
finfocus cost budget --filter "provider=kubecost"
# Filter by tags
finfocus cost budget --filter "tag:namespace=production"
finfocus cost budget --filter "tag:namespace=prod-*" # Glob patterns
# Combined filters
finfocus cost budget --filter "provider=aws" --filter "tag:env=staging"
Health statuses: OK (<80%), WARNING (80-89%), CRITICAL (90-100%), EXCEEDED (>100%).
Output Formats
Three formats via --output:
| Format | Flag | Use Case |
|---|---|---|
| Table | --output table |
Human-readable (default) |
| JSON | --output json |
Programmatic consumption |
| NDJSON | --output ndjson |
Streaming large datasets |
Pulumi Integration
See references/cli-commands.md for complete flag reference and auto-detection behavior.
Engine Internals
See references/engine-api.md for the cost calculation pipeline, aggregation types, and error handling.
Resource Filtering
Filter patterns for --filter:
provider=aws- By cloud providertype=ec2- By service typeservice=rds- By extracted serviceinstanceType=t3.micro- By resource propertyid=i-123- By resource ID
Zero-Click Cost Estimation
Configure in Pulumi.yaml for automatic cost estimation during pulumi preview:
plugins:
analyzers:
- path: ./bin/finfocus
args: ["analyzer", "serve"]
The analyzer runs as a gRPC server, receives resources from Pulumi, and returns ADVISORY diagnostics (never blocks deployments).
Debug Mode
# Enable verbose logging
finfocus cost projected --debug --pulumi-json plan.json
# Or via environment
export FINFOCUS_LOG_LEVEL=debug
export FINFOCUS_LOG_FORMAT=json