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
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.
- 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
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.
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)
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.
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"]