> ## Documentation Index
> Fetch the complete documentation index at: https://anaconda.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# outerbounds app deploy

Packages your code, builds the container image, provisions the workers, and exposes the service as an endpoint. When a deployment with the same name exists in the same project and branch, the command updates it and rolls out a new version. If a rollout is already in progress, the command fails. Wait for the rollout to finish, or pass `--force-upgrade` to update anyway.

All configuration fields documented in [Deploying models and services](https://anaconda.com/docs/platform/guides/inference/deployments-deep-dive.md) can be set in the config file or passed as options. Values passed as options override the config file.

## Usage

```bash theme={null}
outerbounds app deploy [OPTIONS] [COMMAND]...
```

## Arguments

Argument

Description

`COMMAND`

The startup command for the service when no config file is used, for example `"python app.py"`.

## Options

Option

Default

Description

`--config-file`

The config file to use for the App (YAML or JSON).

`--readiness-condition`

`at_least_one_running`

What the deploy command waits for before reporting success: `at_least_one_running` (one worker of the new version is running), `all_running` (the minimum number of workers are running), `fully_finished` (all workers of the new version are running and no workers from previous versions remain), or `async` (return as soon as the platform registers the deployment). Useful for CI/CD pipelines that trigger on deployment completion.

`--status-file`

The path to the file where the final status of the deployment will be written.

`--readiness-wait-time`

`15`

The time (in seconds) to monitor the deployment for readiness after the readiness condition is met.

`--deployment-timeout`

`600`

The maximum time (in seconds) to wait for the deployment to reach readiness before timing out.

`--no-loader`

`false`

Do not use the loading spinner for the deployment.

`--name`

The name of the app to deploy.

`--port`

Port where the app is hosted.

`--description`

The description of the app to deploy.

`--app-type`

The user-defined type of app to deploy. It's only used for bookkeeping purposes.

`--image`

The Docker image to deploy with the app.

`--tag`

The tags of the app to deploy. Repeatable.

`--secret`

Anaconda integrations to attach to the app. You can use the value you set in the `@secrets` decorator in your code without the outerbounds prefix. Repeatable.

`--compute-pools`

A list of compute pools to deploy the app to. Repeatable.

`--env`

Environment variables to deploy with the app. Repeatable.

`--cpu`

CPU requests.

`--memory`

Memory requests.

`--gpu`

GPU requests.

`--disk`

Storage disk size.

`--shared-memory`

Shared memory.

`--auth-type`

The type of authentication to use for the app. Choices: `Browser`, `API`, `BrowserAndApi`.

`--public-access`\
`--private-access`

`--public-access`

Whether the app is publicly accessible.

`--fixed-replicas`

The fixed number of replicas to deploy the app with. Cannot be used with `--min-replicas` or `--max-replicas`.

`--min-replicas`

The minimum number of replicas to deploy the app with.

`--max-replicas`

The maximum number of replicas to deploy the app with.

`--scaling-rpm`

Scale up replicas when requests per minute exceed this threshold. If not set and `--min-replicas` and `--max-replicas` are set, the default threshold is 60 requests per minute.

`--dep-from-requirements`

The path to the `requirements.txt` file to attach to the app.

`--dep-from-pyproject`

The path to the `pyproject.toml` file to attach to the app.

`--python`

The Python version to use for the app.

`--package-src-path`

The path to the source code to deploy with the App. Repeatable.

`--package-suffixes`

A list of suffixes to add to the source code to deploy with the app. Repeatable.

`--no-deps`

`false`

Do not install any dependencies. Use the provided image as-is.

`--force-upgrade`

`false`

Force upgrade the app even if it is currently being upgraded.

`--skip-code-package`

`false`

Skip packaging your code and rely on the container image's embedded source code. Requires `--no-deps`.

`--project`

The project the deployment belongs to.

`--branch`

The branch of the project the deployment belongs to.

`--generate-static-url`

`false`

Generate a stable URL for the deployment from its perimeter, project, branch, and name.

`--url-slug`

Name the deployment's URL yourself instead of having one generated, such as `api-my-model.<YOUR_PLATFORM_DOMAIN>`. Cannot be combined with `--generate-static-url`.

`--proxy-namespace`

The namespace where the pods being proxied live. Required unless `--proxy-service-url` is set.

`--proxy-selector-label`

The labels of the pods being proxied. They become the selector of the service that fronts those pods. Repeatable. Required unless `--proxy-service-url` is set.

`--proxy-service-url`

The address of an existing service to proxy to, such as `my-svc.my-ns.svc.cluster.local:8080`.

`--capsule-type`

`Standard`

What the platform runs for this deployment. `Standard` runs the image and commands configured here. `Proxy` fronts a workload that is already running in the cluster.

`--persistence`

`none`

The persistence mode to deploy the app with. Choices: `none`, `postgres`. Experimental.

## Examples

**Deploy with a config file**

```bash theme={null}
outerbounds app deploy --config-file config.yaml
```

**Deploy without a config file**

```bash theme={null}
outerbounds app deploy --name prediction-service --port 8000 --auth-type API "python app.py"
```

**Update during an active rollout**

```bash theme={null}
outerbounds app deploy --config-file config.yaml --force-upgrade
```
