Skip to content

Releases: ROCm/spur-cloud

Spur Cloud v0.3.0

Choose a tag to compare

@github-actions github-actions released this 28 Apr 20:40
be5909c

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

Full Changelog: v0.1.3...v0.3.0

Spur Cloud v0.1.3

Choose a tag to compare

@powderluv powderluv released this 24 Apr 23:28
758cd7d

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_gpus column, 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

Choose a tag to compare

@powderluv powderluv released this 19 Apr 18:30

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

Choose a tag to compare

@powderluv powderluv released this 19 Apr 01:23
6c2ba4b

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

Choose a tag to compare

@powderluv powderluv released this 18 Apr 21:37
6c2ba4b

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 binary
  • spur-cloud-frontend.tar.gz — Static frontend assets (serve via nginx)