Free & open source
CostGoblin mascot

Know every dollar
in your cloud, for free.

CostGoblin syncs your AWS billing data locally and queries it with DuckDB. No servers. No SaaS fees. Your data never leaves your machine.

Download for macOS View on GitHub
macOS Apple SiliconAll platforms · Setup guide
CostGoblin dashboard filtered by environment with AWS Service filter open, showing cost breakdown with stacked bar chart and pie charts

A new kind of developer tool:
cloud cost, on your laptop.

Cloud cost visibility shouldn't be a finance-only perk. CostGoblin is a desktop app for anyone curious about their AWS bill — and especially the engineers, architects, and small teams who can act on what they see.

Delete the orphaned RDS instance. Right-size the cluster. Kill the forgotten NAT gateway.

No sales call. No cross-account IAM role. No annual contract.

FinOps SaaS CloudHealth, Vantage, Cloudability…
CostGoblin Open source · runs on your laptop
Built for
FinOps analysts & procurement
Engineers, architects & small teams
Pricing
% of cloud spend, annual contract
Free & open source
Onboarding
Sales call, MSA, cross-account IAM role
Download the app, point at your S3 prefix
Your billing data
Stored in the vendor's cloud
Stays on your laptop, always
Data pipeline
Proprietary collector & schema
Native AWS CUR & Cost Optimization Hub
Time to first answer
Days to weeks
Minutes
Under the hood DuckDB analytical engine · Apache Parquet storage · Native AWS CUR · Offline-capable

Cloud cost visibility
without the cloud

Seven views, one local DuckDB. From raw line items to AI-driven Q&A — every dollar accounted for, every query in milliseconds.

Plus
  • S3 billing sync to local Parquet
  • Multi-account AWS org tree
  • CSV export & YAML dashboard sharing
  • Offline-first, zero servers
Get CostGoblin
All builds are unsigned. macOS users: right-click > Open on first launch.
View all assets on GitHub Releases.
Next
Set up your AWS data exports
5-minute walkthrough — cost allocation tags, CUR exports, Cost Optimization Hub.
Set up your AWS data exports
0

Activate your cost allocation tags

Before setting up any exports, make sure the tags you want to slice costs by are activated in the AWS Billing Console → Cost Allocation Tags.

Activate any user-defined tag you plan to use as a dimension in CostGoblin (e.g. team, environment, service). Tags that aren't activated here won't appear in the CUR exports, no matter how they're configured.

Newly activated tags only appear in data generated after activation — they are not backfilled. Activate them as early as possible.
1

Create your S3 bucket

Pick a dedicated bucket (or prefix) for all CostGoblin data. We recommend this structure so each export lands in its own namespace:

s3://your-company-billing/ ├── cur_daily/ # Daily Cost & Usage Report ├── cur_hourly/ # Hourly Cost & Usage Report └── cost_optimization/ # Cost Optimization Hub export
Use any bucket name. The three prefixes are what matters.
2

Create the CUR exports

In the AWS Billing Console → Data Exports, create two exports. Select Cost and usage report (CUR) as the data table and configure each one as follows:

Data table content settings ───────────────────────────────────── Time granularity: Daily (or Hourly for the second export) Additional export content: Include resource IDs on by default Split cost allocation data ECS/EKS shared costs Include caller identity (IAM principal) not needed Include capacity reservation columns not needed Data export delivery options ───────────────────────────────────── Compression & format: Parquet (not gzip/CSV) Data export overwriting: Overwrite existing data export file Data export storage settings ───────────────────────────────────── S3 bucket: your-company-billing S3 path prefix: cur_daily (or cur_hourly for the second export)

Under Column selection, enable these and disable the rest to keep file sizes small:

# Identity & timeline_item_usage_start_date usage timestampline_item_usage_account_id AWS account IDline_item_usage_account_name account display name # What was usedproduct_servicecode service (EC2, RDS, S3…)product_product_family family (Compute, Storage…)product_region_code regionline_item_resource_id resource ARNline_item_operation API operationline_item_usage_type usage typeline_item_usage_amount usage quantityline_item_line_item_type Usage, Tax, Credit…line_item_line_item_description line item description # Cost columnsline_item_unblended_cost raw costline_item_blended_cost blended across accountsline_item_net_unblended_cost cost after discountspricing_public_on_demand_cost on-demand list price # RI & Savings Plan amortizationreservation_effective_cost RI amortized costreservation_net_effective_cost RI net amortized costsavings_plan_savings_plan_effective_cost SP amortized costsavings_plan_net_savings_plan_effective_cost SP net amortized cost # Tagsresource_tags your cost allocation tags
CostGoblin auto-detects available columns — missing optional ones are silently skipped. But including them all unlocks amortized views, net cost perspectives, and resource-level drill-down.
Pro tip: New CUR exports only include data from the day they're created. To get historical data, open an AWS Support case requesting a backfill for your export — AWS can typically reload up to 12 months of past billing data into your S3 bucket.
3

Enable Cost Optimization Hub export

In the AWS Billing Console → Cost Optimization Hub → Preferences, enable the S3 data export:

# Cost Optimization Hub export S3 path: s3://your-company-billing/cost_optimization/ Format: Parquet
This feeds the Cost Optimization view with rightsizing, RI, and deletion recommendations.
4

Connect and configure dimensions

Open CostGoblin, go to Sync and point each data source to its S3 prefix. Once the first sync completes, head to Dimensions to map your tags to cost allocation dimensions. This is where CostGoblin shines — for each dimension you can:

  • Normalize — merge inconsistent casing and spelling (prod, Prod, production → one value)
  • Define aliases — group multiple tag values under a single label across all views
  • Define fallbacks — fill missing resource tags with the account-level tag
  • No data reprocessing — changes take effect instantly across all views.
First sync takes a few minutes depending on billing history size. Subsequent syncs only re-download the current month (AWS regenerates the full month's data with each export refresh).
What's next
Planned

Anomaly detection

Automatic alerts when spending deviates from historical patterns. Catch surprises before the bill lands.

Planned

Team budgets

Set spending targets per team, product, or environment. Track burn rate against budget in real time.

Planned

Collaboration

Share dashboards and cost reports with your team. Collaborative triage for cost spikes.

Maybe

Multi-cloud

GCP and Azure billing support alongside AWS. One interface for all your cloud spend.

Get a ping when these ship.

New features, releases, and cloud cost insights. Low volume, high signal.