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 matchpraisonai_deploy/providers/base.py.
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.deploy doctor-style tooling.
DeployStatus.provider on a result from a plugin.
Best Practices
Return the built-in shapes
Return the built-in shapes
Return the same
DeployResult, DeployStatus, and DestroyResult models the built-ins return, so any tool that parses DeployStatus keeps working.Fail closed in doctor()
Fail closed in doctor()
No credentials means a
DoctorCheckResult(passed=False, ...). A report where every check passes should guarantee a deploy can start.Prefix the entry-point name with your vendor
Prefix the entry-point name with your vendor
Use a vendor-prefixed name like
acme-hetzner to avoid collisions with other plugins.Related
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

