Open Source • Apache 2.0

FinOps Policies as Code

Define cloud cost policies in YAML. Evaluate against real AWS accounts. Get actionable findings. No AI required — deterministic by default.

$pip install sofe
⭐ Star on GitHub
v0.1.022 collectors20+ policiesPython 3.11+

What is SOFE?

📜

Policies as YAML

Define FinOps rules in version-controlled YAML files. What to check, thresholds, severity, and actions — all declarative.

🔍

AWS Collectors

22 collectors that read real data from your AWS accounts. Costs, resources, usage, tags — everything needed to evaluate policies.

Deterministic Engine

No AI, no LLMs, no surprises. Policies evaluate to pass/fail with evidence. Reproducible, auditable, fast.

How it works

🔍
Step 1
Collect
Scan AWS accounts
⚙️
Step 2
Evaluate
Run YAML policies
📊
Step 3
Report
Get findings
🚀
Step 4
Act
Fix or automate
# policy: check for untagged resources
apiVersion: sofe/v1
kind: Policy
metadata:
  name: require-cost-center-tag
  severity: high
spec:
  collector: aws.resource-tags
  condition:
    missing_tag: "CostCenter"
  action:
    type: finding
    message: "Resource missing CostCenter tag"

Features

🔌

22 AWS Collectors

EC2, RDS, Lambda, S3, EBS, CloudWatch, Cost Explorer, and more

📋

20+ Built-in Policies

Idle resources, missing tags, oversized instances, budget thresholds

🐹

Go CLI

sofe-cli binary — evaluate policies from terminal, CI/CD, or cron

🌐

FastAPI Server

REST API for evaluations — integrate with dashboards, Slack, or custom tools

📚

Catalog UI

Browse collectors, policies, and findings visually in your browser

📦

PyPI Package

pip install sofe — use as a library in your own Python scripts

Part of the ecosystem

SOFE is the deterministic engine. Combine with FinOptix for AI reasoning, or BYaML for architecture governance.

Quick Start

1. Install
pip install sofe
2. Evaluate policies against your AWS account
from sofe import PolicyEngine

engine = PolicyEngine()
engine.load_policies("./policies/")
findings = engine.evaluate(profile="default")

for f in findings:
    print(f"{f.severity}: {f.message}")
3. Or use the CLI
# Install Go CLI
go install github.com/breakingthecloud/sofe-cli@latest

# Run evaluation
sofe eval --profile default --policies ./policies/
sofe serve --port 8080  # Start API server

Browse the catalog

Explore all 22 collectors, 20+ policies, and see what SOFE can check in your infrastructure.