Overview

Getting Started

This guide takes you from a clean clone to a verified first CLI and SDK call.

Prerequisites

  • Python >=3.11
  • uv for env/dependency management
  • Rackspace Spot refresh token
  • Organization name (or org id like org-...) and target region

1. Install Dependencies

uv sync

2. Create a Profile

uv run rsspot configure \
  --profile default \
  --org <org-name> \
  --region us-central-dfw-1 \
  --refresh-token "$SPOT_REFRESH_TOKEN"

What this writes:

  • Canonical config path: ~/.config/rsspot/config.yml (unless --config-file or env override is used)
  • Profile payload under profiles.default
  • default_profile and active_profile set to default (unless --no-activate)

Legacy note:

  • Existing ~/.spot_config is still read and will be auto-migrated.

3. Verify CLI Access

uv run rsspot organizations list --output table
uv run rsspot regions list --output table

4. Verify SDK Access

Sync usage

from rsspot import SpotClient

client = SpotClient(profile="default")
regions = client.regions.list()
print([region.name for region in regions[:3]])
client.close()

Async usage on the same unified client

import asyncio
from rsspot import SpotClient

async def main() -> None:
    client = SpotClient(profile="default")
    regions = await client.aregions.list()
    print([region.name for region in regions[:3]])
    await client.aclose()

asyncio.run(main())

5. Success Checks

uv run rsspot --version
uv run rsspot profiles list
uv run rsspot pricing list --region us-central-dfw-1 --nodes 5
uv run rsspot -o json pricing build --nodes 5 --risk med --classes gp,ch,mh --max-month 180

Next Steps