Skip to main content
Ship a package that registers under the praisonai.deploy.providers entry-point group and praisonai deploy will list, validate, and run it just like a built-in.

Quick Start

1

Write a provider class

Implement the five methods and accept a CloudConfig in __init__.
2

Register it in pyproject.toml

3

Install and verify

4

Use it in agents.yaml

5

Deploy


How It Works

praisonai deploy validates the provider name against the registry, then resolves your class and calls its hooks.

The Provider Contract

Return the same models the built-in providers return. Signatures below match praisonai_deploy/providers/base.py.
Subclass praisonai_deploy.providers.BaseProvider to inherit the abstract contract and let Python flag any method you forget to implement.

Runtime Registration

For tests or notebooks that can’t install a package, register the class directly on the shared registry.

Validation Behavior

Provider names are normalised with .strip().lower(), so HETZNER, hetzner, and " hetzner " all resolve. Unknown names raise ValueError: Invalid cloud provider: X. Must be one of: …, where the list comes from the registry. Built-ins keep their enum identity (config.provider is CloudProvider.AWS); plugin providers are normalised strings.

Common Patterns

Deploy programmatically with a plugin provider.
List every provider for deploy doctor-style tooling.
Read DeployStatus.provider on a result from a plugin.

Best Practices

Return the same DeployResult, DeployStatus, and DestroyResult models the built-ins return, so any tool that parses DeployStatus keeps working.
No credentials means a DoctorCheckResult(passed=False, ...). A report where every check passes should guarantee a deploy can start.
Use a vendor-prefixed name like acme-hetzner to avoid collisions with other plugins.

Overview

Deploy types and providers

CLI Reference

Every praisonai deploy subcommand

Python API

Deploy class and programmatic APIs

Config Reference

Every DeployConfig field and default