⚡ SpotWarp: Never Lose a Training Run to a Spot GPU Eviction
The real cost of a Spot GPU eviction was never the few minutes of downtime — it's the hours of training progress that vanish with it. SpotWarp is a lightweight, 100% local Python daemon that runs continuous automatic backups of your workspace in the background, so an eviction never costs you your work. Sub-minute cross-cloud failover (Vast.ai ⇄ RunPod) is what turns that protected workspace into a hands-off recovery, but the backup is the part that actually saves you.
Save up to 70% on GPU compute bills by safely using Spot pricing instead of on-demand — the eviction risk that normally makes that a gamble is exactly what SpotWarp removes.
🆚 Spot GPU Eviction: Standard vs. SpotWarp
| Feature | Standard Spot Instance | With SpotWarp (v3.3) |
|---|---|---|
| Your Data, on Eviction | Gone. Whatever wasn't manually saved is lost with the instance. | Continuously backed up in the background before the eviction ever happens — nothing to lose. |
| Recovery Process | Manual console log-in, search for a new GPU, manual setup. | 100% Autopilot. Parallel candidate racing rents & verifies a replacement in under a minute. |
| If your cloud is out of stock | Failover fails outright — nothing to migrate to. | Cross-Cloud Bridge. Automatically rents on RunPod as a fallback, spot pricing first, on-demand if spot isn't offered. |
| Paying bridge-cloud rates forever | N/A | Auto-Failback. Watches for your original cloud's cheaper capacity to return and migrates you back automatically — the bridge cloud is never a permanent home. |
| Workload Continuation | Restart training from epoch 0. | Auto-Resume. Script continues running via nohup over SSH, from where the backup left off. |
| Security Risk | Requires placing S3/GitHub keys on unstable rented hosts. | Zero Key Leakage. All API keys remain on your local machine. |
💎 Core Commercial Features
- 🛡️ Continuous Automatic Backup — the real safety net: Runs high-speed
rsync/scpincremental backups of your workspace to your local machine in the background, the whole time your instance is running — not just triggered after an eviction is detected. This is the feature that actually prevents loss; everything else below just makes recovering from it fast and hands-off. - 🏁 Parallel Candidate Racing: On eviction, SpotWarp rents several replacement candidates concurrently instead of trying them one at a time — a single slow or dead host no longer adds minutes to your downtime. Typical failover: well under a minute.
- 🌐 Cross-Cloud Fallback (Vast.ai ⇄ RunPod): If your primary cloud has zero matching candidates at the moment of eviction, SpotWarp automatically bridges to RunPod — spot pricing first, retrying on-demand if RunPod has no spot capacity for that GPU model — so your workload stays protected instead of failing outright.
- ↩️ Automatic Cost-Optimizing Failback: A bridge-cloud replacement is never left running indefinitely at the higher rate. SpotWarp keeps checking your original cloud in the background and migrates the workload back the instant a cheaper matching candidate reappears — verified end-to-end on a single live instance: rented on Vast.ai, evicted, bridged to RunPod, then automatically migrated back to Vast.ai once capacity returned.
- 💸 CFO-Approved GPU Savings: Safely exploit cheap Spot pricing on Vast.ai. SpotWarp gives you the reliability of a Dedicated On-Demand GPU for the price of a Spot instance.
- ✅ Real Connectivity Verification: Replacement hosts are confirmed reachable via an actual SSH handshake before they're trusted — not a proxy signal like a Jupyter API ping that can report false negatives on a perfectly healthy host.
- 🔒 Zero-Trust Security (100% Local): Your cloud provider API keys (
VAST_API_KEY,RUNPOD_API_KEY) stay on your local PC. Rented containers never see your cloud credentials. - 📦 Zero-Configuration: No need to install daemons, cron jobs, or synchronization tools inside the remote container.
- ⚡ Training Auto-Resumer: Automatically restarts your training scripts (
--resume-cmd) in the background of the new container, pointing directly to your restored, backed-up checkpoints.
🚀 Quick Start in 1 Minute
1. Installation (Local PC)
Install the official package via Pip:
pip install --upgrade spotwarp
2. One-Time Interactive Setup Wizard
Run the setup wizard once to save your keys locally to ~/.spotwarp/config.json:
spotwarp init
(Prompts for your SpotWarp License Key and Vast.ai API Key — RunPod key is optional for cross-cloud fallback.)
3. Start the Guard
# Option A: Foreground Live Console
spotwarp start
# Option B: 24/7 Background Daemon (safely close your terminal)
spotwarp start -d
4. Daemon Management
spotwarp status # Check daemon health & PID
spotwarp stop # Gracefully stop the background daemon
spotwarp config # View local configuration
⚙️ How It Works (The Warping Cycle)
[Rented GPU Host] [Local PC (Client)] [New GPU Host]
(Active Workload)
│ │ │
│ ─── (Sync: rsync/scp delta) ──────> │ (Cached Workspace) │
│ │ │
[🚨 Evicted!] │ │
❌ ─── (Detected within 5s) ────────> │ │
│ ─── (Race 4 candidates) ──────────> │
│ cheapest of the ready pool wins │
│ ─── (Restore Workspace) ──────────> │
│ ─── (Nohup Resume Command) ──────> [Run Workload]
(Continuing!)
If Vast.ai has zero candidates:
│ ─── (Bridge to RunPod) ────────────> [Temp Replacement]
│ ⋯ keeps watching Vast.ai in the background ⋯
│ ─── (Vast.ai capacity returns) ──> [Migrate back, cheaper]
- Eviction Detection: SpotWarp polls the cloud API every 5 seconds. If eviction is detected, it triggers failover immediately.
- Parallel Candidate Racing: SpotWarp rents up to 4 matching-GPU candidates concurrently and picks the cheapest one that proves SSH-reachable, instead of trying offers one at a time.
- Cross-Cloud Bridge (if needed): If no Vast.ai candidate exists at that moment, SpotWarp automatically rents on RunPod instead — spot pricing first, on-demand as a second attempt — so the workload is never left completely unprotected.
- Delta Sync Restoration: SpotWarp transfers the cached workspace folder to the new container and confirms it's reachable over a real SSH connection.
- Nohup Handover: SpotWarp connects via SSH to trigger the
--resume-cmdin the background. - Auto-Failback: If step 3 was needed, SpotWarp keeps quietly re-checking Vast.ai for that GPU model. The moment a candidate reappears, it migrates the workload back automatically and releases the bridge-cloud host — no manual intervention, no forgotten expensive instance left running.
📄 License & Security Audits
SpotWarp is distributed under the MIT License. The code executes 100% locally in user space on your local computer, ensuring full transparency and compliance.
Metadata
Release files for spotwarp 3.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| spotwarp-3.3.0.tar.gz | 29.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| spotwarp-3.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.7 kB
Release files / spotwarp-3.3.0.tar.gz
| Download URL | spotwarp-3.3.0.tar.gz |
|---|---|
| Size | 29.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b5ad072ae4417eb5c11742e80869b735745f63064f9229c9325e7d11b63d335b
|
|
BLAKE2b-256 checksum How to use checksums |
bb14a9f414db6df9274ad598cf7c805fc0490ea4ae9fb6d872d641b4f4c87e95
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.13
|
Release files / spotwarp-3.3.0-py3-none-any.whl
| Download URL | spotwarp-3.3.0-py3-none-any.whl |
|---|---|
| Size | 26.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
063186622224a17d76cd6be82224cba17ac3a73d4d3b5cdf4d22d65d84aeca51
|
|
BLAKE2b-256 checksum How to use checksums |
82d0aebb14f372cb4b242886424d42334fd031950807cb10fab9c4c2897d968a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.13
|