From 6d80ee9a278565f1dd85585e51ec0e6e9a7de444 Mon Sep 17 00:00:00 2001 From: Radu Swigler Date: Thu, 3 Sep 2026 03:59:46 -0400 Subject: [PATCH] fix: warn and exit early when deploy has no resources (#365) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Client-mode endpoints (image=...) produce an empty resources dict in the manifest because they have no handler code to deploy. Previously, flash deploy would upload the archive, create the environment, and print "✓ deployed to production" even though no serverless endpoint was provisioned — a misleading success for a no-op. Now detect the empty resources before uploading and print a clear warning explaining that client-mode endpoints provision on first call. Closes #365 --- src/runpod_flash/cli/commands/deploy.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/runpod_flash/cli/commands/deploy.py b/src/runpod_flash/cli/commands/deploy.py index a87db7117..a68aaad26 100644 --- a/src/runpod_flash/cli/commands/deploy.py +++ b/src/runpod_flash/cli/commands/deploy.py @@ -10,7 +10,7 @@ import typer from rich.console import Console -from runpod_flash.cli.utils.formatting import print_error +from runpod_flash.cli.utils.formatting import print_error, print_warning from runpod_flash.core.exceptions import RunpodAPIKeyError from runpod_flash.core.resources.app import FlashApp @@ -221,6 +221,15 @@ async def _resolve_and_deploy( local_manifest = validate_local_manifest() + if not local_manifest.get("resources"): + print_warning( + console, + "No deployable resources found in the manifest. " + "Client-mode endpoints (image=...) provision on first call, " + "not at deploy time. Nothing to upload.", + ) + return + from rich.progress import ( BarColumn, DownloadColumn,