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

# Deploy Migration

> Move from praisonai.deploy to the standalone praisonai-deploy package

`praisonai-deploy` is a standalone tier-2 package. Existing `praisonai.deploy` imports keep working through compatibility shims.

```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
# New code
from praisonai_deploy import Deploy

# Still works (compatibility shim)
from praisonai.deploy import Deploy
```

```mermaid theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
graph LR
    OLD[praisonai.deploy] -->|shim| NEW[praisonai_deploy]

    classDef old fill:#F59E0B,stroke:#7C90A0,color:#fff
    classDef new fill:#10B981,stroke:#7C90A0,color:#fff

    class OLD old
    class NEW new
```

## Quick Start

<Steps>
  <Step title="Update your import">
    ```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
    from praisonai_deploy import Deploy
    ```
  </Step>

  <Step title="Everything else stays the same">
    ```python theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
    deploy = Deploy.from_yaml("agents.yaml")
    result = deploy.deploy()
    ```
  </Step>
</Steps>

***

## Import Mapping

| Old path                                    | New path                                    |
| ------------------------------------------- | ------------------------------------------- |
| `from praisonai.deploy import Deploy`       | `from praisonai_deploy import Deploy`       |
| `from praisonai.deploy import DeployConfig` | `from praisonai_deploy import DeployConfig` |
| `praisonai.cli.commands.deploy`             | forwarded to the new Typer subcommands      |

<Info>
  No breaking changes. You may keep using `from praisonai.deploy import ...`, but new code should prefer `praisonai_deploy`.
</Info>

***

## Compatibility Coverage

The extraction preserves existing imports through alias shims:

* `praisonai.deploy` forwards to `praisonai_deploy`.
* `praisonai.cli.commands.deploy` forwards to the new Typer subcommands.
* Legacy scheduler imports continue to resolve.
* `praisonai-code` calls into deploy through a bridge, without a hard dependency.

These are verified by regression gates:

* `scripts/check_c14_deploy_imports.sh`
* `test_c14_deploy_backward_compat.py` (18 passing)
* `praisonai-deploy` unit tests (115 passing)

***

## Install

<CodeGroup>
  ```bash Standalone theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  pip install praisonai-deploy
  ```

  ```bash Full umbrella theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
  pip install "praisonai[deploy]"
  ```
</CodeGroup>

The full `praisonai` umbrella keeps the wrapper shims installed, so existing scripts run unchanged.

***

## Best Practices

<AccordionGroup>
  <Accordion title="Migrate imports gradually">
    The shims mean you can update imports file by file without breaking anything in between.
  </Accordion>

  <Accordion title="Install the standalone package for slim deploys">
    `pip install praisonai-deploy` gives you the deploy surface without pulling the full wrapper.
  </Accordion>
</AccordionGroup>

***

## Related

<CardGroup cols={2}>
  <Card title="Python API" icon="code" href="/docs/docs/features/deploy/python-api">
    The Deploy class and result models
  </Card>

  <Card title="Architecture Tiers" icon="layer-group" href="/docs/docs/features/architecture-tiers">
    How packages layer on each other
  </Card>
</CardGroup>
