How it works

Juju controller: the heart of Juju

Juju's controller manages all the machines in your running models, responding to the events that are triggered throughout the system.

It also manages scale out, configuration and
placement of all your models and applications.

Application modelling for every cloud


Charms are sets of scripts for deploying and managing services. With event handling built in, they can declare interfaces that fit charms for other services, so relationships can be formed.


Bundles are collections of charms that link services together, so you can deploy whole chunks of app infrastructure in one go.

What they do:

  • Install
  • Configure
  • Connect
  • Upgrade and update
  • Scale out and scale back
  • Perform health checks
  • Undertake operational actions
  • Benchmark


Specify the number of machines you want and how you want them to be deployed, or let Juju do it automatically.


Deploy your services with a few clicks of your mouse or re-deploy your entire app infrastructure to another cloud.

Monitor and manage

The Juju controller will manage:

  • Multiple models
  • All VMs in all your running models
  • Scale out, config and placement
  • User accounts and identification
  • Sharing and access

Frequently asked questions

What is Juju?

Juju is an open source application modelling tool that allows you to configure, deploy, scale, manage and maintain cloud infrastructures quickly and efficiently on public and private clouds, such as AWS, MAAS, OpenStack, and VSphere. Its store allows access to a wide range of best practice solutions which you can deploy on any cloud with a single command. You can use Juju from the command line or through its powerful graphical representation of the model in the GUI.

What are charms?

Charms are collections of scripts that contain all the operations necessary to deploy, configure, scale, and maintain cloud applications easily with Juju. Charms encapsulate a single application and all the code and know-how it takes to operate it, such us how to combine and work with other related applications or how to upgrade it.

What are bundles?

Bundles are a ready-to-run collection of applications which have been modelled to work together - this can include particular configurations and relations between the software to be deployed. For instance, Apache Hadoop and MongoDB cluster bundles allow you to repeatedly deploy or replicate a model from cloud to cloud, or from test into staging and production. Rails and Django bundles let developers spin up workloads on their laptops so they can code in an environment that matches a production deployment. Bundles are clean, declarative YAML that is easy to share with others.

What is application modelling?

Application modeling is describing your application topology in a higher level design that allows that topology to become portable across many platforms in a clean way. Juju gives you the tools to describe your model and then to turn it into reality in a repeatable fashion on any substrate. All the operational hard work is automated, connecting your services so they can work together and provisioning the appropriate machines. You can scale up, scale down, or even re-deploy the same model on another cloud.

How does it compare to Puppet and Chef?

Puppet and Chef are great tools for configuration management. Juju provides a higher level abstraction, supplying the tools to manage the full scope of operations beyond deployment and configuration management, regardless of the machine on which it runs. One of the main advantages of Juju is its dynamic configuration ability, which allows you to re-configure services on the fly, add, remove, or change relationships between services, and scale in or out with ease, sharing the operation knowledge and taking the most from the community at large.

What kind of applications can I deploy?

Charms are available for hundreds of common and popular cloud-oriented applications such as Kubernetes, Apache Hadoop, Big Data solutions, OpenStack, or even your own software, with new ones being added every day. Check out the public charm store for an up to the minute list of charms: Juju Charm Store ›

Can I write my own charms?

Yes! There are tools and documentation to help you get started.

Learn more about writing charms ›

How do I know charms are safe to use?

Charms deployed from the charm store are community vetted and open source (even though the software they encapsulate may not be).

Charms from the charm store which are 'Recommended' have also met additional criteria and have been vetted by the Juju Charmers team.

Where can I find more detailed information?

For further information, read our more detailed guidance in the Documentation. The Ubuntu website includes an overview of Canonical’s cloud products, showing how Juju fits in. For more technical detail on charms and using Juju, The Juju community pages include frequently updated documentation written by people using Juju in production environments.

New: Juju-as-a-Service is here

  • Hosted Juju controllers operate all the machines in your running models.
  • Deploy to all major public clouds — directly from your browser — or the command line.
  • Share your models and easily collaborate with other users.

Try the beta

  • AWS logo
  • Google Cloud Platform logo
  • Microsoft Azure logo