Push your app to inference.sh.
Deploy
1infsh app deployUseful flags
| Flag | Description |
|---|---|
--dry-run | Run validation, packaging, and upload checks without registering a new version |
--meta | Update description, category, and store images from inf.yml only (no new version) |
--stage | Deploy as a staged version (not current) |
Use --meta after editing store listing fields such as images in Configuration. The app must already be deployed once.
What happens
- Validation — Checks required files and runs
belt app doctordiagnostics (errors block deploy; warnings are shown but do not stop the build) - Dependencies — Installs packages locally
- Packaging — Bundles everything
- Upload — Sends to inference.sh
- Registration — Makes it available
Run diagnostics manually before deploy:
1infsh app doctor # list issues2infsh app doctor fix # auto-fix what it can (relative imports, missing __init__.py, GPU deps, ESM config, …)Output
1┌──────────────────────────────────────┐2│ deployment summary │3├──────────────────────────────────────┤4│ │5│ final status: success │6│ duration: 45s │7│ app: my-app │8│ link: https://app.inference.sh/... │9│ │10└──────────────────────────────────────┘View your app
After deploy:
- Find it in the Grid
- Run it from the workspace
- Add it to agents
Update
Make changes, then deploy again:
1infsh app deployNew version is created and becomes the active version unless you used --stage.
Staged deploys and promotion
infsh app deploy --stage uploads a new version without making it current. Tasks and the store listing keep using the previous current version until you promote the staged one.
When you are ready to go live:
- Workspace — open the app and set the active version under Versions
- REST API (requires
apps:write):
1curl -X PUT "https://api.inference.sh/apps/{appId}/versions/{versionId}/current" \2 -H "Authorization: Bearer inf_your_api_key" \3 -H "X-API-Version: 2"Returns the updated app object. appId and versionId are server IDs (from infsh app my -l or the deploy response), not namespace/name refs.
JavaScript SDK:
1await client.apps.setCurrentVersion('app_xyz', 'ver_abc');The Python SDK does not yet expose this helper; use the REST call above.
Runs and agent tools resolve namespace/name without a version pin to the current version.
List your apps
1infsh app my2infsh app my -l # Detailed listNext
If you want programmatic access: