Self-hosted. Open source.

The broker for compute instances.

One place to ask “what’s the cheapest VM?” across multiple clouds. Send constraints — vCPU, RAM, arch, region, max price. Get cost-ranked recommendations in EUR. Optional TCO: include egress, storage, public IP, OS license. No provisioning. No lock-in.

See architecture · Read the intro

  • Broker for compute — one API, multiple clouds, cost recommendations ranked by price and fit
  • TCO-aware — when you provide data source and estimated egress, total cost includes egress, storage, public IP, OS license, and cross-AZ
  • Multiple providers — e.g. AWS, GCP, Azure, Hetzner, Scaleway, DigitalOcean, OVH (more coming)
  • You run it — your data, no lock-in
CloudBroker full scope: ingestion (providers → Connectors → Ingestion + FX → PostgreSQL); API flow (Client → CloudBroker → ranked recommendations).
Ingestion pipeline (providers → DB) and API request flow (constraints in → ranked recommendations out).

Your broker for compute instances.

Get started in minutes. Run locally or deploy yourself.

CloudBroker brokers compute instances across multiple clouds: it ingests types and prices, normalizes to EUR, and exposes one cost recommendation endpoint. Constraints in, ranked list out. No vendor lock-in — you own the stack.

What you get
A compute broker
  • Ranked by price and fit
  • TCO cost breakdown when placement context provided
  • Dual scoring: legacy (price+fit) or multi-criteria (cost, performance, reliability)
  • Constraints in, list out
  • Transparent explain block
  • Swagger at /docs
API request lifecycle: JSON constraints (min_vcpu, min_ram_gb, arch, max_price_eur_per_hour) → CloudBroker filter and score → ranked recommendations array.
API request lifecycle: constraints in, ranked recommendations out. TCO params add cost breakdown in explain.

Simple. Fast. Yours.

Simple

One endpoint. Send vCPU, RAM, arch, region, max price. Get a cost recommendation — the cheapest VM that fits. No provisioning, just the answer.

Fast & easy

make up, make migrate, make ingest-all. make ingest-egress for TCO-aware recommendations. Hit /api/recommendations for your first cost recommendation. Done.

Self-hosted

Your PostgreSQL. Your credentials. No lock-in. Cloudburst Autoscaler uses CloudBroker as its broker for compute when bursting Kubernetes nodes.

Use cases

When CloudBroker fits best.

Autoscaler & burst

Cloudburst Autoscaler calls POST /api/recommendations to pick the cheapest VM when bursting Kubernetes nodes.

Multi-cloud comparison

Compare instance prices across AWS, GCP, Azure, Hetzner, Scaleway, DigitalOcean, OVH in one query. EUR-normalised.

TCO modelling

With data source and egress estimates, get total cost including egress, storage, public IP, OS license.

Budget planning

"What's the cheapest 4 vCPU / 8 GB RAM in EU?" for capacity planning or migration decisions.

Price analytics

Track price changes and trends over time via /api/price-analytics.

Custom automation

Any script or controller can call the API; not limited to Cloudburst.

Supported providers

CloudBroker ingests compute pricing from each provider: instance types, regions, and prices. Connectors pull data, normalise to EUR, and upsert into one catalogue. Ingest once, query forever.

AWS GCP Azure Hetzner Scaleway DigitalOcean OVH

Pricing is fetched via each provider’s public or SDK APIs. Cost rates (egress, storage, public IP, OS license) — API for AWS/Azure/GCP; YAML config for Hetzner, DO, Scaleway, OVH. Run make ingest-egress or make ingest-all-costs.

  • AWS — Price List Query API (on-demand); EC2 describe_spot_price_history (spot)
  • GCP — Cloud Billing API (Cloud Catalog, Compute Engine SKUs)
  • Azure — Azure Retail Prices API (public, unauthenticated)
  • Hetzner — Hetzner Cloud API (/locations, /server_types)
  • Scaleway — Scaleway Instance API (instance/v1)
  • DigitalOcean — DigitalOcean API v2 (sizes, regions)
  • OVH — OVH Cloud API (project flavor API + public catalog)
Provider APIs flow into Connectors, then Ingestion Service (upsert and FX) into PostgreSQL — instance types and prices, normalised to EUR.
Data lifecycle: providers → Connectors → Ingestion Service → PostgreSQL. Instance types and prices, normalised to EUR.

CloudBroker vs alternatives

How CloudBroker compares to other multi-cloud pricing tools.

Aspect CloudBroker Infracost Cloud Pricing API CloudPrice AWS / GCP / Azure Price APIs
Providers 7: AWS, GCP, Azure, Hetzner, Scaleway, DigitalOcean, OVH 3: AWS, Azure, GCP 3: AWS, Azure, GCP 1 per API
Hosting Self-hosted (you run it) Hosted (SaaS, API key) Hosted (SaaS) You call provider directly
Recommendation Ranked by cost + fit, one request GraphQL query, Terraform-focused Instance recommendations, regional comparison Raw listings, no ranking
TCO Egress, storage, public IP, OS license, cross-AZ in total cost Per-provider or N/A Per-provider or N/A Per-provider or N/A
Currency Normalised to EUR (FX) Per-provider Per-provider Per-provider (USD, etc.)
Primary use Autoscaler / burst cost selection (e.g. Cloudburst) Terraform cost estimation Pricing lookup, dashboards Single-cloud billing / lookup

CloudBroker targets self-hosted multi-cloud cost selection: 7 providers (including EU-focused Hetzner, Scaleway, OVH), one recommendation endpoint, EUR-normalised. Infracost and CloudPrice are hosted and focus on the big three; provider APIs are single-cloud. Choose based on your stack and who you want to run it.

Articles

Four-part intro: problem and product, how it works, the API, scope and run.

Architecture

Ingestion pipeline, data model, and cost recommendation engine. How the broker fits together.

Examples

Start the API and PostgreSQL, then call the recommendation endpoint. Request, response, and interactive docs.

Got questions? Here’s the answers.

What is CloudBroker?

CloudBroker is a self-hosted broker for compute instances. It ingests instance types and hourly prices from multiple cloud providers, normalizes them to EUR, and exposes a cost recommendation endpoint. You ask once; it answers across all of them. Send constraints (vCPU, RAM, arch, region, max price); get a cost-ranked list. TCO-aware: include egress, storage, public IP, OS license in total cost when you provide placement context. No provisioning — it only recommends “what’s the cheapest VM that fits?”

Does it create or delete VMs?

No. It only returns cost recommendations. Used by Cloudburst Autoscaler for cost-aware Kubernetes burst; any script or controller can call it.

How much does it cost?

It’s open source. You run it. Your PostgreSQL, your credentials. No monthly fee to us.

How do I get started?

Clone the repo, make up, make migrate, make ingest-all. For TCO-aware recommendations, also run make ingest-egress. Then hit POST /api/recommendations. See the repo for provider credentials in .env.

Get running in a few steps

Yes, we kept it simple.

1 Clone
2 make up
3 make migrate
4 make ingest-all
5 make ingest-egress

For TCO: make ingest-egress or make ingest-all-costs. Then call /api/recommendations for your first cost recommendation. TCO params (data_source_provider, estimated_egress_gb_per_hour) unlock cost breakdown in explain. Swagger at /docs.

How they work together

Used by Cloudburst Autoscaler: when a Kubernetes pod can’t be scheduled, Cloudburst uses CloudBroker as its broker for compute — gets a cost recommendation, then provisions the recommended VM.

flowchart LR
    Cluster --> Cloudburst
    Cloudburst -->|"POST /api/recommendations"| CloudBroker
    CloudBroker -->|"cost recommendation"| Cloudburst
    Cloudburst -->|"provision"| ChosenProvider["Chosen provider"]
    ChosenProvider --> NodeReady["Node Ready"]
          

The broker for compute. One API.

Your infra. Your data. No lock-in.

View on GitHub