Deploying

Push your app to inference.sh.


Deploy

bash
1infsh app deploy

Useful flags

FlagDescription
--dry-runRun validation, packaging, and upload checks without registering a new version
--metaUpdate description, category, and store images from inf.yml only (no new version)
--stageDeploy 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

  1. Validation — Checks required files and runs belt app doctor diagnostics (errors block deploy; warnings are shown but do not stop the build)
  2. Dependencies — Installs packages locally
  3. Packaging — Bundles everything
  4. Upload — Sends to inference.sh
  5. Registration — Makes it available

Run diagnostics manually before deploy:

bash
1infsh app doctor          # list issues2infsh app doctor fix      # auto-fix what it can (relative imports, missing __init__.py, GPU deps, ESM config, …)

CLI setup


Output

code
12         deployment summary           34                                      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:

bash
1infsh app deploy

New 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):
bash
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:

typescript
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

bash
1infsh app my2infsh app my -l  # Detailed list

Next

If you want programmatic access:

API Authentication

we use cookies

we use cookies to ensure you get the best experience on our website. for more information on how we use cookies, please see our cookie policy.

by clicking "accept", you agree to our use of cookies.
learn more.