# Plugins

> Extend Cloud Management Platform (CMP) with your own Python code, running inside CMP with full access to its data model

---

Site [llms.txt](/llms.txt)

---

A plugin is Python code that runs on the CMP server. Because it runs there, it can read and write CMP data through Django's object-relational mapper, and reach out to any system the appliance can. Plugins are one of the [six action types](/docs/cmp/use/orchestration/actions/action-types/), so a plugin can be attached to a trigger point, offered as a button on a server or resource, or run as a blueprint build step.

Plugin files are stored on the CMP server's filesystem or loaded dynamically from a URL. By default, newly created plugins are saved under the appliance's uploads directory, at `static/uploads/hooks`.

<div class="alert alert-info" role="alert">


The appliance runs **Python 3.12** as of release 2026.2.10. Write plugins against that version, and check any third-party packages your code imports for compatibility.
</div>


## Where to get help

This section covers the basics of plugin authoring. The [Content Library](/docs/cmp/use/catalog/content-library/) and the [CloudBolt Forge](https://github.com/CloudBoltSoftware/cloudbolt-forge) hold working plugins you can import and adapt. If you have a more specific use case you want to discuss, [contact Support](/docs/cmp/support/).

---

Section pages:

- [Structure of a plugin](/docs/cmp/use/orchestration/plugins/structure/): What a plugin module must contain, what it is passed, and what it can return
- [Special case plugins](/docs/cmp/use/orchestration/plugins/special-cases/): Plugins that break the usual pattern, either by running outside a job or by returning something other than the standard tuple
- [Development tips for plugins](/docs/cmp/use/orchestration/plugins/development-tips/): Techniques for reaching outside Cloud Management Platform (CMP) from plugin code: remote hosts, stored credentials, HTTP calls, and child jobs
- [Plugin examples](/docs/cmp/use/orchestration/plugins/examples/): Worked examples of common use cases for Cloud Management Platform (CMP) plugins
- [Plugin parameterization](/docs/cmp/use/orchestration/plugins/parameterization/): How Cloud Management Platform (CMP) turns template variables in plugin code into action inputs
- [Resources for writing plugins](/docs/cmp/use/orchestration/plugins/resources/): How to explore the Cloud Management Platform (CMP) models interactively, learn Django's ORM, and step through a plugin as it runs
- [Use Django ORM](/docs/cmp/use/orchestration/plugins/django-orm/): Query and update the Cloud Management Platform (CMP) database from Python instead of SQL
