Skip to main content

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 19 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
sp_coverage_pct Cost Explorer (Savings Plans) All (account-level)
sp_utilization_pct Cost Explorer (Savings Plans) All (account-level)
ri_utilization_pct Cost Explorer (RI) All (account-level)
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 derives an Architecture Graph v0.4 (BYaML v2) — nodos con tipos canónicos (aws.ec2, aws.s3, …) y aristas tipadas. Es el mismo estándar del registry schema.byaml.org y de byaml-mcp (agentes). /evaluations/:id/graph expone el grafo derivado.

Ecosystem

Project Description
sofe-server REST API server (FastAPI)
sofe-cli Go CLI (19 commands, TUI)
sofe-action GitHub Action
byaml-spec Estándar Architecture Graph v0.4 (schema/catalog/relationships)
byaml-mcp MCP tools para agentes (graph + insights + remediation)
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.

Metadata

Release files for sofe 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sofe 0.4.2
File Size Uploaded
sofe-0.4.2.tar.gz 38.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sofe 0.4.2
File Interpreter ABI Platform
sofe-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 83.3 kB

Release files / sofe-0.4.2.tar.gz

Download URL sofe-0.4.2.tar.gz
Size 38.9 kB
Tags Source
SHA-256 checksum
How to use checksums
92ad802cdff1b107dd84f8d64c6dee6bd291a09995e8be7cf0c7f1b2111760c3
BLAKE2b-256 checksum
How to use checksums
cdceeb2f5712c95196eec50e50f0e6dce32d59d784fb866b4f3a9db81697b0ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release files / sofe-0.4.2-py3-none-any.whl

Download URL sofe-0.4.2-py3-none-any.whl
Size 44.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9cd297bf77f44df82532283355989fb43b77bd0eb7023f863e1d2c09abb221c2
BLAKE2b-256 checksum
How to use checksums
cb3e09fa543cf6cc11cfeda633f1c7b5444e4a87fe9134651262c017f72cb3e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.13

Release history Release notifications | RSS feed

0.4.4

2 release files

0.4.3

2 release files

This release

0.4.2 This release

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page