Overview
Getting Started
This guide takes you from a clean clone to a verified first CLI and SDK call.
Prerequisites
- Python
>=3.11 uvfor 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-fileor env override is used) - Profile payload under
profiles.default default_profileandactive_profileset todefault(unless--no-activate)
Legacy note:
- Existing
~/.spot_configis 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
- Config precedence and env aliases: Configuration
- SDK lifecycle and singleton patterns: SDK Usage
- CLI command matrix: CLI Reference
- Runtime internals: Architecture