Sandbox
@alexei-led/spotinfo

Spot price CLI for AWS, GCP, and Azure

spotinfo compares Spot VM options across AWS, GCP, and Azure and ranks machines by price, savings, and interruption risk. It works offline from embedded data, and it can also answer through an MCP server for assistants that need cloud machine recommendations.

164 stars12 forksGoUpdated 10d ago
Who it's for

Builders who want to choose a Spot machine without checking three cloud consoles by hand.

What it delivers

You can find the cheapest machine that meets your vCPU, memory, and risk needs without redoing cloud-specific research.

What it does

Cross-cloud spot comparison

Lists and recommends Spot machines across AWS, GCP, and Azure with a shared set of filters and output fields.

Offline embedded data

Ships price snapshots inside the binary so `--offline` can answer without credentials or network access.

AWS interruption awareness

Reads AWS Spot Advisor data and can filter recommendations by workload risk levels like web, ci, and batch.

MCP server

Exposes `list_spot_machines`, `recommend_spot_machines`, and `list_cloud_regions` for assistant use.

Source traceability

Reports the source URLs and SHA-256 hashes used to build each answer.

How to get it

  1. 1Run
    # macOS with Homebrew
    brew install alexei-led/tap/spotinfo
    
    # Linux and Windows
    curl -L https://github.com/alexei-led/spotinfo/releases/latest/download/spotinfo_linux_amd64.tar.gz | tar xz
    
    # Docker
    docker pull ghcr.io/alexei-led/spotinfo:latest

README

CI Docker Go Report Card MCP Compatible

spotinfo

Pick a Spot machine on AWS, GCP or Azure from one command line. No credentials. Every price ships inside the binary, so --offline answers in about a tenth of a second.

The problem

Spot capacity is far cheaper than On-Demand — between 40% and 85% off in the snapshots that ship with this tool. Finding the right machine does not scale by hand:

  • Each cloud publishes prices in a different place, in a different shape, on a different schedule. AWS has a JSON feed and an interruption Advisor. GCP has server-rendered HTML pages. Azure has a REST API and a separate documentation site for vCPU and memory.
  • The consoles rank by price. They do not rank by "cheapest machine with at least 4 vCPU and 16 GiB that my workload can survive losing".
  • A price page has no memory of yesterday, so a script that reads one is a scraper you now own.

The result is that most teams pick one instance family, hard-code it, and stop looking.

What spotinfo does

One command ranks real machines against a real requirement, and says where the number came from.

$ spotinfo recommend --cloud azure --architecture arm64 --min-vcpu 4 --min-memory-gib 16
RANK  CLOUD  REGION        MACHINE            ARCHITECTURE  vCPU  MEMORY GiB  USD/HOUR    SAVINGS  RISK          WHY
   1  azure  centralindia  Standard_D4ps_v6   arm64            4        16.0  0.017076        81%  unavailable   ARCHITECTURE_MATCH,COST_POLICY,KNOWN_POSITIVE_PRICE,RESOURCE_MINIMUMS_MET
   2  azure  centralindia  Standard_D4ps_v5   arm64            4        16.0  0.018665        81%  unavailable   ARCHITECTURE_MATCH,COST_POLICY,KNOWN_POSITIVE_PRICE,RESOURCE_MINIMUMS_MET
   3  azure  centralindia  Standard_D4pds_v5  arm64            4        16.0  0.022361        81%  unavailable   ARCHITECTURE_MATCH,COST_POLICY,KNOWN_POSITIVE_PRICE,RESOURCE_MINIMUMS_MET

Four properties make that output worth trusting:

It works with no credentials. Price snapshots ship inside the binary, and a weekly job refreshes them through a reviewed pull request. AWS and Azure additionally read live feeds when they can reach them — AWS on every run, Azure when you name one or two regions — and fall back to the snapshot when they cannot. --offline skips every price and risk request; only --with-score still reaches a cloud, because no snapshot carries a placement figure.

It says what it does not know. GCP and Azure publish no redistributable interruption data, so every candidate reports RISK: unavailable. It is never a zero and never a low bucket. A cloud that measures nothing must not outrank a cloud that measures honestly. On GCP, --live-risk fetches a per-project preemption rate for the ranked page — Google measures it differently from AWS, so it is shown and never filtered on.

It refuses questions it cannot answer, and says why. --workload web caps interruption frequency at an AWS Spot Advisor bucket boundary. Ask for it on a cloud that measures something else and the command stops before it reads a price, naming the vendor limit rather than a feature nobody built:

$ spotinfo recommend --cloud gcp --workload web --architecture x86_64 --min-vcpu 4 --min-memory-gib 16
spotinfo: gcp: unsupported capability: risk: the web workload caps interruption frequency at 5%, an AWS Spot Advisor bucket boundary, and gcp publishes no figure measured that way; workload cost applies no ceiling and answers on every cloud

Every answer carries its source. The JSON report names each source URL and the SHA-256 of the document that was read, so a reader can fetch it again and compare.

Install

# macOS with Homebrew
brew install alexei-led/tap/spotinfo

# Linux and Windows
curl -L https://github.com/alexei-led/spotinfo/releases/latest/download/spotinfo_linux_amd64.tar.gz | tar xz

# Docker
docker pull ghcr.io/alexei-led/spotinfo:latest

macOS, Linux and Windows, on AMD64 and ARM64. Full instructions: Installation.

Use it

# Cheapest Arm machine with 4 vCPU and 16 GiB, on each cloud
spotinfo recommend --cloud aws   --architecture arm64 --min-vcpu 4 --min-memory-gib 16
spotinfo recommend --cloud gcp   --architecture arm64 --min-vcpu 4 --min-memory-gib 16
spotinfo recommend --cloud azure --architecture arm64 --min-vcpu 4 --min-memory-gib 16

# A web tier that must survive interruption: AWS only, interruption capped at 5%
spotinfo recommend --architecture x86_64 --min-vcpu 2 --min-memory-gib 8 --workload web

# The five cheapest AWS regions for a machine. Every region is the default
spotinfo recommend --architecture x86_64 --min-vcpu 4 --min-memory-gib 16 --top 5

# A versioned JSON report for a pipeline
spotinfo recommend --cloud azure --architecture arm64 --min-vcpu 4 --min-memory-gib 16 \
  --output json

# Browse what a cloud publishes, with prices and a risk column
spotinfo list --machine "m5\." --region us-east-1

# Add AWS placement scores. This one needs AWS credentials
spotinfo list --machine "m5\." --region us-east-1 --with-score

Two commands, on purpose, and both answer on all three clouds. spotinfo list requires nothing and answers "what is there". spotinfo recommend requires an architecture and a size floor and answers "what should I run". They share a vocabulary, not a purpose. See Quick start and the Usage guide.

Cloud coverage

AWSGCPAzure
spotinfo listyesyesyes
spotinfo recommendyesyesyes
Interruption riskpublishedunavailable, or opt-in liveunavailable
Workloadscost, web, ci, batchcostcost
Operating systemslinux, windowslinuxlinux, windows
Architecturesx86_64, arm64x86_64, arm64x86_64, arm64
Credentialsoptionaloptionalnever used

Region lists, machine counts and the reasoning behind each limit: Cloud coverage.

MCP server

spotinfo is a Model Context Protocol server, so an assistant can ask these questions directly.

{
  "mcpServers": {
    "spotinfo": { "command": "spotinfo", "args": ["--mcp"] }
  }
}

Ask: "Cheapest arm64 Azure Spot VM with 4 vCPUs and 16 GiB", or "Compare m5.large spot prices across US regions". Three tools answer: list_spot_machines, recommend_spot_machines and list_cloud_regions.

Setup: MCP server and Claude Desktop.

Documentation

DocumentWhat is in it
Quick startThe first five minutes
InstallationEvery install method, and how to check one
Usage guideEvery flag, every output format
Cloud coverageWhat each cloud serves, and what it refuses
ExamplesPipelines, Terraform, CI, cost monitors
MCP serverTools, arguments, assistant setup
API referenceThe spotinfo.list/v1 and spotinfo.recommend/v3 contracts
AWS placement scoresWhat a score means, and does not
Data sourcesEvery feed, snapshot, cache and refresh rule
TroubleshootingErrors, causes, fixes
Migrating to v2Every renamed flag, tool, schema and field
Multi-cloud parityWhat GCP and Azure cannot do yet, and why

AWS credentials

Credentials are optional. Without them, spotinfo answers from the AWS feeds and the embedded snapshot. With them, two more features work:

FeaturePermission
Live price for machines the static feed prices at $0ec2:DescribeSpotPriceHistory
Placement scores (--with-score)ec2:GetSpotPlacementScores

Credentials load through the standard AWS SDK chain. The chain is probed once per run, so a machine without credentials skips both calls instead of waiting for each to time out.

GCP credentials are optional too. Application Default Credentials and a project — from --gcp-project or GOOGLE_CLOUD_PROJECT — are needed for --live-risk and for --with-score, and a Cloud Billing Catalog API key in --gcp-billing-key prices GCP regions beyond the committed snapshot. Azure needs no credentials at all. See Cloud coverage.

Development

Go 1.26+, make, golangci-lint.

make build            # hermetic: embeds the committed data, downloads nothing
make test             # unit and end-to-end tests, no credentials, no network
make lint
make verify-data      # manifests, source contracts, parser contracts, coverage floors

Contributions are welcome. Read CLAUDE.md for the repository rules. Make sure that every test passes before you open a pull request.

License

Apache 2.0. See LICENSE.

Files in the repo

Repository payload19 top-level entries
  • .github
  • cmd
  • docs
  • internal
  • scripts
  • skills
  • .archfit.yaml
  • .dockerignore
  • .gitignore
  • .golangci.yaml
  • .mockery.yaml
  • CLAUDE.md
  • Dockerfile
  • go.mod
  • go.sum
  • LICENSE
  • llms.txt
  • Makefile
  • README.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More tools

MemPalace/
mempalace

The best-benchmarked open-source AI memory system. And it's free.

59k

Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors

64k
headroomlabs-ai/
headroom

Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.

71k
virgiliojr94/
book-to-skill

Turn any technical book PDF into a Claude Code skill — ready to study, reference, and use while you work.

30k
iOfficeAI/
OfficeCLI

OfficeCLI is the first and best Office suite purpose-built for AI agents to read, edit, and automate Word, Excel, and PowerPoint files. Free, open-source, single binary, no Office installation required.

30k
miuuyy/
codex-chatgpt-web

Use ChatGPT Web (including Pro) as a native model in Codex — with context, tools, streaming and images, without using Codex quota.

6.2k