(charm)= # Charm ```{toctree} :hidden: channel revision charm-taxonomy charm-development-best-practices charm-naming-guidelines charm-maturity talking-to-a-workload-control-flow-from-a-to-z charm-environment-variables ``` In Juju, a **charm** is an operator -- software that wraps an [application](https://juju.is/docs/juju/application) and that contains all of the instructions necessary for deploying, configuring, scaling, integrating, etc., the application on any [cloud](https://juju.is/docs/juju/cloud) using [Juju](https://juju.is/docs/juju). > See more: [SDK | List of files in the charm project](https://juju.is/docs/sdk/list-of-files-in-the-charm-project), [SDK | The Juju execution flow for a charm](https://juju.is/docs/sdk/the-juju-execution-flow-for-a-charm) Charms are publicly available on {ref}`charmhub`. Charms are currently of two kinds, depending on the target deployment substrate: 1. **Machine charms:** Charms made to deploy on a bare-metal server, virtual machine, or system container. - [Charmhub | Machine charms](https://charmhub.io/?base=vm&type=all) 1. **Kubernetes charms:** Charms built to deploy on Kubernetes. - [Charmhub | Kubernetes charms](https://charmhub.io/?base=kubernetes&type=all) - [Charmhub | example Kubernetes charm: PostgreSQL K8s](https://charmhub.io/postgresql-k8s) Charms are currently developed using {ref}`charmcraft` and {ref}`ops`. > See more: {ref}`charm-taxonomy`, {ref}`charms-vs-kubernetes-operators` While the quality of individual charms may vary, charms are intended to implement a general and comprehensive approach for operating applications. > See more: {ref}`charm-maturity`