Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

32 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SOFE

FinOps Policies as Code for AWS
Declarative YAML policies β†’ live infrastructure evaluation β†’ findings with dollar savings.

Quick Start Β· Why SOFE? Β· Comparison Β· Policies Β· CI/CD

PyPI Python License 10 policies 18 collectors PRs


SOFE evaluates declarative YAML policies against live AWS infrastructure and produces actionable findings β€” idle resources, missing tags, governance violations, and cost savings opportunities.

sofe evaluate --policies ./policies/ --profile production
────────────────────────────────────────────────────────────────────────────────
Severity   Policy                    Resource             Message
────────────────────────────────────────────────────────────────────────────────
🟠 high    no-idle-ec2               i-0abc123def         avg_cpu = 2.1% (threshold: <5%)
🟑 medium  require-cost-tags         i-0def456ghi         missing: costCenter, owner
🟑 medium  no-unattached-ebs         vol-789abc           180 days old, 500GB
────────────────────────────────────────────────────────────────────────────────
Summary: 3 findings | Potential savings: $365.00/mo

Why SOFE?

The Problem

Teams today manage cloud costs reactively β€” they see the bill spike, panic, then scramble to find what changed. Existing tools either alert on total spend (no root cause), scan for security (not cost-focused), or lock you into a vendor.

No tool does: declarative cost + governance policies that evaluate against live infrastructure and produce findings with dollar-amount savings.

The Solution

# policies/no-idle-production.yaml
apiVersion: sofe/v1
kind: Policy
metadata:
  name: no-idle-production
  description: "Flag idle EC2 in production (< 5% CPU for 30 days)"
spec:
  scope:
    environments: [production]
    resource_types: [aws.ec2]
  rule:
    metric: avg_cpu_utilization
    period: 30d
    operator: "<"
    threshold: 5
  severity: high
  actions:
    - type: recommend
      suggestion: "Rightsize or terminate"
      estimated_savings: calc

Write a policy once. Run it daily. Get findings with savings.

Who Should Use SOFE?

Role Why SOFE matters
Cloud/DevOps Engineers Automate governance checks in CI/CD. sofe evaluate --fail-on high blocks deploys that violate cost policies.
FinOps Practitioners Define cost optimization rules as code. Track compliance across accounts. Quantify waste.
Platform Engineers Enforce tagging standards, idle resource cleanup, and architecture best practices at scale.
CTOs / Engineering Managers Visibility into cloud waste without manual audits.
AWS Partners / Consultants Deliver FinOps assessments faster with repeatable, auditable policy evaluations.

Quick Start

# Install
pip install sofe

# Write your first policy
cat > policies/require-tags.yaml << 'EOF'
apiVersion: sofe/v1
kind: Policy
metadata:
  name: require-cost-tags
  description: "All resources must have owner and costCenter tags"
spec:
  scope:
    resource_types: [aws.ec2, aws.rds, aws.s3]
  rule:
    metric: has_tag:owner
    operator: "=="
    threshold: 0
  severity: medium
  actions:
    - type: finding
EOF

# Validate
sofe validate --policies ./policies/

# Evaluate against live AWS
sofe evaluate --policies ./policies/ --profile production

# CI/CD mode (exit code 1 if high/critical found)
sofe evaluate --policies ./policies/ --fail-on high

# JSON output for automation
sofe evaluate --policies ./policies/ --format json > findings.json

How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Policy Loader   β”‚     β”‚  Collectors  β”‚     β”‚  Evaluation Engine   β”‚
β”‚                 β”‚     β”‚              β”‚     β”‚                      β”‚
β”‚ Reads YAML      │────▢│ AWS APIs:    │────▢│ For each policy:     β”‚
β”‚ Validates       β”‚     β”‚ EC2, RDS     β”‚     β”‚ match scope β†’        β”‚
β”‚ schema          β”‚     β”‚ S3, Lambda   β”‚     β”‚ evaluate condition β†’ β”‚
β”‚                 β”‚     β”‚ CloudWatch   β”‚     β”‚ if violated β†’        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚   generate finding   β”‚
                                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                         β”‚
                                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                               β”‚  Output            β”‚
                                               β”‚  β€’ Table (CLI)     β”‚
                                               β”‚  β€’ JSON (CI/CD)    β”‚
                                               β”‚  β€’ Markdown (PRs)  β”‚
                                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Pre-Built Policies

Policy Type Severity
no-idle-ec2 Cost Optimization high
no-idle-rds Cost Optimization high
require-cost-tags Governance medium
no-oversized-staging Cost Optimization high
s3-lifecycle-required Storage medium
s3-encryption-required Security/Cost high
no-unattached-ebs Storage medium
no-old-snapshots Storage low
budget-exceeded Budget critical
no-public-without-waf Security/Cost high

Supported Metrics

Metric Source Resources
avg_cpu_utilization CloudWatch (30d avg) EC2, RDS
monthly_cost Cost Explorer All
running_days LaunchTime EC2, RDS
has_tag:{key} Tags API All
storage_used_gb CloudWatch S3, EBS
connections CloudWatch RDS
invocations CloudWatch Lambda

CI/CD

- name: FinOps Policy Check
  run: |
    pip install sofe
    sofe evaluate --policies ./policies/ --fail-on high --format json > findings.json
Exit Code Meaning
0 No violations (or below --fail-on threshold)
1 Violations found at or above --fail-on severity

Comparison

Tool Cost Policies Live Eval Savings Calc CI/CD Open Source
SOFE βœ… βœ… βœ… βœ… βœ…
AWS Budgets ❌ (alerts only) ❌ ❌ ❌ ❌
Infracost 🟑 (pre-deploy) ❌ βœ… βœ… βœ…
OPA/Rego βœ… (security) ❌ ❌ βœ… βœ…
Prowler ❌ (security only) βœ… ❌ βœ… βœ…
Cloud Custodian 🟑 (not FinOps-first) βœ… ❌ 🟑 βœ…

The SOFE Position

SOFE lives in the RUN phase: evaluate live infrastructure against declarative FinOps policies. Produce findings with dollar savings.

PLAN           DEPLOY       RUN               OPTIMIZE
Infracost      OPA/Rego     β˜… SOFE β˜…          Spot.io
Checkov        Sentinel     Cloud Custodian   CAST AI
                            AWS Config

BYaML Integration

SOFE uses BYaML component types (aws.ec2, aws.s3, etc.) β€” the same type system used for architecture governance. Policies reference the same types as your architecture definitions, and findings map directly to BYaML components.

Ecosystem

Project Description
sofe-server REST API server (FastAPI)
sofe-cli Go CLI (19 commands, TUI)
sofe-action GitHub Action
byaml-finops-mcp MCP tools for AI FinOps
FinOptix AI model for FinOps reasoning

License

Apache 2.0 β€” free to use, modify, and distribute.


Built by engineers who got tired of surprise AWS bills.
sofe.dev Β· GitHub Β· finoptix.dev

Write a policy once. Run it daily. Save money.

About

FinOps governance engine. Cloud + AI cost evaluation. Policy-as-code across 36 policies and 18 collectors.

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages