Skip to content

feat!: apps SDK, decorator-native GPU compute with live dev sessions and a new rp CLI - #534

Merged
KAJdev merged 113 commits into
mainfrom
feat/apps-sdk
Oct 5, 2026
Merged

KAJdev merged 113 commits into
mainfrom
feat/apps-sdk

Conversation

@KAJdev

@KAJdev KAJdev commented Jul 9, 2026 •

Copy link
Copy Markdown
Contributor

Brings decorator-native GPU compute into the core runpod package, with queue, API, and task resources sharing one app lifecycle and a live development workflow.

Worker execution is versioned independently through runpod-sdk-runtime, allowing runtime images and SDK clients to evolve on separate release cycles. Flash lifecycle commands live under rp flash, while account, secret, registry, pod, and SSH commands stay at the root.

Completes CON-605
Completes CON-601
Completes CON-750

KAJdev added 30 commits July 1, 2026 15:09
Comment thread runpod/apps/placement.py Fixed
@KAJdev

KAJdev commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Should be ready for a re-review. Took a look at all these comments, main things were addressed.

  • rebase with the new REST wrapper API client for all supported operations
  • resource validation and GPU/datacenter/volume placement, including multi-GPU and multi-volume configurations
  • endpoint and pod cleanup across partial startup, failures, timeouts, and cancellation plus retry policies that avoid duplicating mutations
  • nested sync/async worker calls, concurrent source synchronization, result/error handling, and dependency packaging
  • independently versioned runtime images, custom-image bootstrapping, and runtime publication.
  • .remote() calls on queue based endpoints now use /runsync first, then switch to polling during longer requests

@KAJdev
KAJdev requested a review from deanq September 16, 2026 23:02

@deanq deanq left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-review after the REST-wrapper rebase — the earlier blockers all look resolved (placement datacenter enum, dev teardown orphaning, the targets.py pod leaks, etc.). A few new issues in the new/rebased code, inline below.

The tasks.py gpu="any" one is the same enum→device-name class as the placement.py fix from last round and would block task deploys; the rp_info.py get_pod change is a retry regression on the rp pod connect path. The rest are robustness/correctness.

Comment thread runpod/apps/tasks.py Resolved
Comment thread runpod/api/rest.py Resolved
Comment thread runpod/cli/utils/rp_info.py Resolved
Comment thread runpod/apps/gpu.py Resolved
Comment thread runpod/apps/api.py Resolved
Comment thread runpod/apps/serialization.py Resolved
Comment thread runpod/apps/api.py Resolved
@deanq

deanq commented Sep 21, 2026

Copy link
Copy Markdown
Member

hey @KAJdev — poking this one. the 7 threads from my last pass are still open and the code hasn't moved. couple of them are actual bugs, not nits:

  • apps/tasks.py — gpu="any" / GpuGroup.ANY collapses to a literal gpuTypeIdList=['any'], so that path just can't deploy
  • apps/api.py — current.get('type') on a maybe-None 204 body, plus the instanceIds fallback ending up [None] and deploying with instanceId=None
  • api/rest.py — session._retry_connection = False does nothing (aiohttp has no such attr), so PUT/DELETE replay isn't actually prevented
  • cli/utils/rp_info.py — the raise ValueError makes it bail on the first null response instead of retrying till timeout

the gpu.py docstring mismatch and the serialization.py nested-def thing are the minor two. ping me once these have a look and i'll re-review

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Authentication, live refresh, SSE parsing, and task secret-validation bugs remain unresolved.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 5 High severity · 1 Medium severity

Open (6)
Resolved since last review (12)

Comment thread runpod/api/graphql.py Resolved
Comment thread runpod/api/rest.py Resolved
Comment thread runpod/apps/logs.py Resolved
Comment thread runpod/apps/targets.py Resolved
Comment thread runpod/apps/tasks.py Resolved
Comment thread runpod/rp_cli/main.py Resolved
@celine-runpod
celine-runpod requested a review from deanq September 22, 2026 22:15
deanq and others added 5 commits September 29, 2026 13:31
Resolve conflicts in two files:

- runpod/__init__.py: keep the branch's lazy PEP-562 import surface and
  add main's serverless startup gate (run_import_checks). main's eager
  import block is dropped as redundant -- every name it exported is
  already resolvable through _LAZY_ATTRS.
- README.md: keep the branch's apps-SDK rewrite (Installation, Example,
  Contributing) and append main's new sections (Serverless Worker,
  Worker Fitness Checks, Network-Volume Warm Cache, REST API v2, Pods,
  Directory). Dropped main's duplicate "Community and Contributing" and
  redundant Python-3.10 note already covered by the new intro.
@KAJdev
KAJdev merged commit 31d81e0 into main Oct 5, 2026
10 checks passed
@KAJdev
KAJdev deleted the feat/apps-sdk branch October 5, 2026 21:32
@promptless

promptless Bot commented Oct 5, 2026

Copy link
Copy Markdown

Promptless documentation updates

deanq added a commit that referenced this pull request Nov 10, 2026
Release PR #594 cut 2.0.0 but wrote its section as [2.1.0] with a
compare link to a v2.1.0 tag that does not exist. It also omitted the
breaking apps SDK change and everything released in the 2.0.0 rcs.

- Retitle the section to 2.0.0, compare v1.12.0...v2.0.0, dated
  2026-10-30 (the tag and GitHub release date)
- Add a BREAKING CHANGES entry for #534
- Add the feat/fix/perf commits since 1.12.0 that the section missed,
  including #654 and #658 merged after the release PR was opened
- Fold the hand-written "Unreleased" notes into 2.0.0; that code ships
  in the v2.0.0 tag, and release-please would otherwise insert future
  sections above it
deanq added a commit that referenced this pull request Nov 10, 2026
Release PR #594 cut 2.0.0 but wrote its section as [2.1.0] with a
compare link to a v2.1.0 tag that does not exist. It also omitted the
breaking apps SDK change and everything released in the 2.0.0 rcs.

- Retitle the section to 2.0.0, compare v1.12.0...v2.0.0, dated
  2026-10-30 (the tag and GitHub release date)
- Add a BREAKING CHANGES entry for #534
- Add the feat/fix/perf commits since 1.12.0 that the section missed,
  including #654 and #658 merged after the release PR was opened
- Fold the hand-written "Unreleased" notes into 2.0.0; that code ships
  in the v2.0.0 tag, and release-please would otherwise insert future
  sections above it
deanq added a commit that referenced this pull request Nov 10, 2026
Release PR #594 cut 2.0.0 but wrote its section as [2.1.0] with a
compare link to a v2.1.0 tag that does not exist. It also omitted the
breaking apps SDK change and everything released in the 2.0.0 rcs.

- Retitle the section to 2.0.0, compare v1.12.0...v2.0.0, dated
  2026-10-30 (the tag and GitHub release date)
- Add a BREAKING CHANGES entry for #534
- Add the feat/fix/perf commits since 1.12.0 that the section missed,
  including #654 and #658 merged after the release PR was opened
- Fold the hand-written "Unreleased" notes into 2.0.0; that code ships
  in the v2.0.0 tag, and release-please would otherwise insert future
  sections above it
deanq added a commit that referenced this pull request Nov 11, 2026
Release PR #594 cut 2.0.0 but wrote its section as [2.1.0] with a
compare link to a v2.1.0 tag that does not exist. It also omitted the
breaking apps SDK change and everything released in the 2.0.0 rcs.

- Retitle the section to 2.0.0, compare v1.12.0...v2.0.0, dated
  2026-10-30 (the tag and GitHub release date)
- Add a BREAKING CHANGES entry for #534
- Add the feat/fix/perf commits since 1.12.0 that the section missed,
  including #654 and #658 merged after the release PR was opened
- Fold the hand-written "Unreleased" notes into 2.0.0; that code ships
  in the v2.0.0 tag, and release-please would otherwise insert future
  sections above it
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants