Versions: runpod-flash 1.19.0, runpod 1.12.0, runpodctl 2.9.0-c094cac, Python 3.13.
What happens. An Endpoint declared in client mode — image= with no decorated functions — produces a build manifest with an empty resources map. flash deploy uploads the artifact, creates the app and the environment, prints ✓ deployed to production, and exits 0. No serverless endpoint is created.
Reproduce.
- Write an app with a single client-mode endpoint and nothing else:
# app.py
import os
from runpod_flash import Endpoint, GpuType, PodTemplate
imagegen = Endpoint(
name="scriptorium-imagegen",
image="ghcr.io/<owner>/<image>:<tag>",
gpu=GpuType.NVIDIA_GEFORCE_RTX_4090,
workers=(0, 1),
idle_timeout=60,
template=PodTemplate(containerDiskInGb=64,
containerRegistryAuthId=os.environ["RUNPOD_REGISTRY_AUTH_ID"]),
flashboot=True,
)
- Deploy it:
$ flash deploy
✓ built flash-imagegen 8 files, 0 deps, 0.2 MB
No app 'flash-imagegen' found. Creating app and 'production' environment...
✓ uploaded 0.2 MB 1.5s
✓ deployed to production 1.5s
- Ask what was deployed:
$ flash env get production
app flash-imagegen
build cmsy0a16j000
no resources. run flash deploy --env production
The remedy it suggests is the command that just ran.
- Confirm nothing exists:
$ runpodctl serverless list
No endpoint. The generated manifest (.flash/flash_manifest.json) shows why:
{
"version": "1.0",
"python_version": "3.12",
"generated_at": "2026-08-18T01:50:30.695000Z",
"project_name": "flash-imagegen",
"resources": {},
"function_registry": {},
"source_fingerprint": "e0fa327a4ce42225c134a14d02dd3246f9ad42a1c4d728def119df2b53099458"
}
resources and function_registry are both empty, so the deploy has nothing to provision and reports success anyway.
Expected. Either the endpoint is provisioned, or the command says it did not provision one.
What actually provisions it. Client-mode endpoints are created lazily, inside Endpoint._ensure_endpoint_ready(), on first use. That is a reasonable design — but it is not what flash deploy reports, and a user following the deploy output has no way to learn it. Working around this needed a script that imports the app module and awaits that private method directly, which is not something a deploy path should require.
Suggestion. Either register the client-mode Endpoint as a resource so flash deploy provisions it, or detect the empty-resource case and say so — for example no deployable resources found; client-mode endpoints provision on first run() — instead of reporting a successful deployment.
Versions:
runpod-flash1.19.0,runpod1.12.0,runpodctl2.9.0-c094cac, Python 3.13.What happens. An
Endpointdeclared in client mode —image=with no decorated functions — produces a build manifest with an emptyresourcesmap.flash deployuploads the artifact, creates the app and the environment, prints✓ deployed to production, and exits 0. No serverless endpoint is created.Reproduce.
The remedy it suggests is the command that just ran.
$ runpodctl serverless listNo endpoint. The generated manifest (
.flash/flash_manifest.json) shows why:{ "version": "1.0", "python_version": "3.12", "generated_at": "2026-08-18T01:50:30.695000Z", "project_name": "flash-imagegen", "resources": {}, "function_registry": {}, "source_fingerprint": "e0fa327a4ce42225c134a14d02dd3246f9ad42a1c4d728def119df2b53099458" }resourcesandfunction_registryare both empty, so the deploy has nothing to provision and reports success anyway.Expected. Either the endpoint is provisioned, or the command says it did not provision one.
What actually provisions it. Client-mode endpoints are created lazily, inside
Endpoint._ensure_endpoint_ready(), on first use. That is a reasonable design — but it is not whatflash deployreports, and a user following the deploy output has no way to learn it. Working around this needed a script that imports the app module and awaits that private method directly, which is not something a deploy path should require.Suggestion. Either register the client-mode
Endpointas a resource soflash deployprovisions it, or detect the empty-resource case and say so — for exampleno deployable resources found; client-mode endpoints provision on first run()— instead of reporting a successful deployment.