spotinfo now answers the same question the same way on AWS, GCP and Azure.
Before this release, the same question gave two different documents. The CLI and the MCP server used different defaults, different schemas and different flag names. This release removes that difference.
This release has breaking changes. Read docs/migration-v2.md before you upgrade.
Statistics
| Item | Count |
|---|---|
| Commits | 49 |
| Files changed | 147 |
| Lines added | 26,316 |
| Lines removed | 9,193 |
| Feature commits | 10 |
| Fix commits | 15 |
| Documentation commits | 18 |
| Fixes from adversarial review | 20 |
| Test functions | 675 |
| End-to-end test functions | 27 |
| Published schema contracts | 5 |
Breaking changes
CAUTION: The old flag names, the old command name and the old MCP tool names all stop working. A script that uses them will fail.
Two commands replace the root query command. Use spotinfo list to see every machine that matches a filter. Use spotinfo recommend to rank machines against a requirement. Both commands answer on all three clouds.
Eight flags have new names. Each old name prints a hint that gives the new name, then exits with code 1.
| Old flag | New flag |
|---|---|
--type, --instance
| --machine
|
--cpu, --vcpu
| --min-vcpu
|
--memory, --memory-gib
| --min-memory-gib
|
--price, --budget
| --max-price
|
The three MCP tools have new names. An MCP client configuration that names an old tool will fail.
| Old tool | New tool |
|---|---|
find_spot_instances
| list_spot_machines
|
recommend_spot_instances
| recommend_spot_machines
|
list_spot_regions
| list_cloud_regions
|
One schema family replaces spotinfo.recommend/v1. The new schemas are spotinfo.list/v1 and spotinfo.recommend/v3. They share the same candidate, risk, price and source blocks.
The defaults are the same on both surfaces. The new defaults are --region all, --workload cost, --os linux and --output table. The AWS defaults us-east-1 and web are gone. Those two defaults were the reason that one question gave two answers.
NOTE: --region all reads every region. On AWS this is slower than one region. Use --offline or one explicit --region when you want speed.
The info block is removed, with the info.emr field in it. EMR compatibility is a property of the AWS Spot Advisor. The neutral candidate does not carry it. 731 of 1,192 instance types published this field as true. A value of false for all of them is wrong, so the field is removed.
New features
Azure prices Windows machines. The catalogue holds 21,656 priced rows across 55 regions. 10,452 rows are Windows and 11,204 rows are Linux.
Azure prices come from the live API. The Retail Prices API is anonymous, so this needs no Azure credentials. The flags --offline and --refresh now act on Azure.
GCP publishes an obtainability figure. Use --with-score to read it. This figure comes from a beta Google API and needs Application Default Credentials.
GCP can price regions other than us-central1. Use --gcp-billing-key with a Cloud Billing Catalog API key. A price from this API never enters the committed snapshot.
Changes
A cloud that publishes no figure reports that fact. The risk column prints a status, and never a zero or an empty cell. A zero reads as "no risk", which is a different statement.
A flag that a cloud cannot act on is refused. The message names the flag, the cloud and the limit of the vendor. Before this release, six flags were accepted and then ignored.
Placement figures keep their kind. AWS publishes an integer from 1 to 10. GCP publishes a probability from 0.0 to 1.0. spotinfo does not put them on one scale, because no vendor published one.
Not built
Azure eviction rate and Azure Spot Placement Score are not built. Both need an Azure subscription. The credential library for them adds 4.83 MB, which is 11.7% of the binary. The shipped binary links no Azure credential library.
Known errors
make update-gcp-data fails. Google renamed the on-demand column header for the N4D series. The GCP snapshot cannot refresh until a reviewer approves this change against the source contract.
--gcp-billing-key has tests against a stub transport only. No live call was made with a real key.
Install
Download a binary below, or use Docker:
docker run --rm ghcr.io/alexei-led/spotinfo:v3.0.0 list --cloud azure --machine 'Standard_D2s'