Releases: ROCm/spur-cloud
Releases · ROCm/spur-cloud
Release list
Spur Cloud v0.3.0
What's Changed
- Add auto-update check on startup and admin endpoint by @powderluv in #46
- Make Dockerfile.api self-contained by @shiv-tyagi in #47
- Make GPU optional — allow CPU-only sessions by @powderluv in #49
- Add release pipeline + bump workspace version to 0.3.0 by @powderluv in #50
New Contributors
- @shiv-tyagi made their first contribution in #47
Full Changelog: v0.1.3...v0.3.0
Spur Cloud v0.1.3
What's Changed
Bug Fixes
- #44: Case-insensitive email login + clear password error messages
- #41: GPU capacity counting now excludes DOWN/DRAINED nodes
- #39: WebSocket terminal stability with 30s ping/pong keepalive + agent connection retry
- #38: rocm-smi always in PATH inside sessions (
/opt/rocm/bin) - #30: K8s session sync loop now polls SpurJob CRD status
- #35: kube 0.97 upgrade, WebSocket terminal fix, pod lookup by label (by @codetap-developer)
- Fix session state mapping and GPU capacity accuracy (#43)
- Fix session UX: remove misleading CLI examples, fix rocm-smi availability (#42)
- Fix API Docker image build (#23)
- Fix RBAC permissions for SpurJob CRDs (#28)
- Fix dummy binary caching in API image (#31)
New Features
- #36: Per-user GPU quota enforcement (
max_gpuscolumn, admin API) - #113: K8s SpurJob CRD creation for session dispatch (#26)
Tests
- 14 unit tests (auth, GPU counting, WebSocket, rocm-smi profile)
- CI integration tests for case-insensitive login, password errors, GPU quota
Full Changelog: v0.1.2...v0.1.3
Spur Cloud v0.1.2
Changes since v0.1.1
- #20: Web terminal TTY fix attempted and reverted (K8s path only; bare-metal path unaffected)
- Updated spur-proto dependency to match Spur v0.2.2 (heartbeat RPC changes)
Spur Cloud v0.1.1
Bug fixes:
- #6: GPU env vars (ROCR_VISIBLE_DEVICES etc.) now readonly — prevents isolation bypass
- #10: WebSocket keepalive + send timeout — fixes terminal hangs on macOS
- #12: Failed sessions show detailed error messages in UI
- #13: Cancel uses "stopping" intermediate state for accurate GPU capacity
- #14: Server-side GPU capacity validation before session creation
Spur Cloud v0.1.0
Spur Cloud v0.1.0
Initial release of the GPU-as-a-Service platform built on Spur.
Features
- Web UI: React SPA with GPU capacity dashboard, session launcher, web terminal (xterm.js)
- Bare-metal backend: Connects to Spur scheduler via gRPC, no Kubernetes required
- K8s backend: Optional Kubernetes integration with kube exec terminal and NodePort SSH
- Authentication: Local (Argon2), GitHub OAuth, Okta OIDC — all producing platform JWT
- GPU isolation: Single-GPU sessions with ROCR/HIP/CUDA_VISIBLE_DEVICES enforcement (readonly)
- Web terminal: PTY-backed interactive shell via WebSocket + Spur AttachJob gRPC
- SSH access: Deterministic port allocation for bare-metal, NodePort for K8s
- Billing: GPU-second usage tracking with per-type aggregation
- Error diagnostics: Failed sessions show detailed error messages (#12)
- Capacity validation: Server-side GPU capacity check before session creation (#14)
- Cancel flow: "stopping" intermediate state ensures accurate GPU capacity (#13)
- macOS terminal fix: WebSocket keepalive + send timeout (#10)
Configuration
[server]
backend = "bare_metal" # or "k8s"
[bare_metal]
agent_port = 6828
[database]
url = "postgresql://spur_cloud:pass@localhost/spur_cloud"
[spur]
controller_addr = "http://localhost:6817"Binaries
spur-cloud-v0.1.0-linux-x86_64.tar.gz— API server binaryspur-cloud-frontend.tar.gz— Static frontend assets (serve via nginx)