<a id="reference"></a>

# Reference

Technical specifications, APIs, and comprehensive details of all Juju components.

## Platform

Juju is an orchestration platform that includes the CLI client, agent binaries, and supporting infrastructure for managing cloud deployments.

- [Juju](https://documentation.ubuntu.com/juju/4.0/reference/juju.md#juju)

## Cloud and Charmhub

In Juju, deployments draw from two external sources. Clouds provide compute resources for your infrastructure. Charmhub provides charms – operators for deploying and managing applications.

- [Cloud](https://documentation.ubuntu.com/juju/4.0/reference/cloud.md#cloud)
- [Credential](https://documentation.ubuntu.com/juju/4.0/reference/credential.md#credential)
- [Simplestreams metadata](https://documentation.ubuntu.com/juju/4.0/reference/metadata.md#metadata)
- [Charmhub](https://charmhub.io/)
- [`juju-controller` charm](https://charmhub.io/juju-controller)

## Client

In Juju, you interact with these resources through clients – command-line and web interfaces for managing controllers, models, and deployments.

- [Client](https://documentation.ubuntu.com/juju/4.0/reference/client.md#client)
- [juju CLI](https://documentation.ubuntu.com/juju/4.0/reference/juju-cli.md#juju-cli)
- [juju web CLI](https://documentation.ubuntu.com/juju/4.0/reference/juju-web-cli.md#juju-web-cli)
- [juju-dashboard (The Juju dashboard)](https://documentation.ubuntu.com/juju/4.0/reference/juju-dashboard.md#juju-dashboard)
- [juju-db-repl](https://documentation.ubuntu.com/juju/4.0/reference/juju-db-repl.md#juju-db-repl)
- [juju web CLI](https://documentation.ubuntu.com/juju/4.0/reference/juju-web-cli.md#juju-web-cli)
- [jujuc](https://documentation.ubuntu.com/juju/4.0/reference/jujuc.md#jujuc)
- [jujud](https://documentation.ubuntu.com/juju/4.0/reference/jujud.md#jujud)
- [Pebble](https://documentation.ubuntu.com/juju/4.0/reference/pebble.md#pebble)

## Controller

Clients connect to a controller – the central management service that coordinates between clouds, Charmhub, and your deployed resources.

- [Action](https://documentation.ubuntu.com/juju/4.0/reference/action.md#action)
- [Agent](https://documentation.ubuntu.com/juju/4.0/reference/agent.md#agent)
- [Application](https://documentation.ubuntu.com/juju/4.0/reference/application.md#application)
- [Bundle](https://documentation.ubuntu.com/juju/4.0/reference/bundle.md#bundle)
- [Charm](https://documentation.ubuntu.com/juju/4.0/reference/charm.md#charm)
- [Client](https://documentation.ubuntu.com/juju/4.0/reference/client.md#client)
- [Cloud](https://documentation.ubuntu.com/juju/4.0/reference/cloud.md#cloud)
- [Configuration](https://documentation.ubuntu.com/juju/4.0/reference/configuration.md#configuration)
- [Constraint](https://documentation.ubuntu.com/juju/4.0/reference/constraint.md#constraint)
- [Controller](https://documentation.ubuntu.com/juju/4.0/reference/controller.md#controller)
- [Credential](https://documentation.ubuntu.com/juju/4.0/reference/credential.md#credential)
- [Database](https://documentation.ubuntu.com/juju/4.0/reference/database.md#database)
- [Log](https://documentation.ubuntu.com/juju/4.0/reference/log.md#log)
- [Telemetry](https://documentation.ubuntu.com/juju/4.0/reference/telemetry.md#telemetry)
- [High availability (HA)](https://documentation.ubuntu.com/juju/4.0/reference/high-availability.md#high-availability)
- [Scaling](https://documentation.ubuntu.com/juju/4.0/reference/scaling.md#scaling)

## Users

Controller access requires user authentication. User accounts provide authentication and authorization for managing Juju resources.

- [User](https://documentation.ubuntu.com/juju/4.0/reference/user.md#user)

## Infrastructure and applications

Once authenticated, users work with deployments. Within a controller, deployments are organized into models – logical containers for applications, infrastructure, and their supporting components. Each model draws resources from a single cloud.

- [Model](https://documentation.ubuntu.com/juju/4.0/reference/model.md#model)

Models contain applications deployed from charms and composed of units (individual instances).

- [Charm](https://documentation.ubuntu.com/juju/4.0/reference/charm.md#charm)
- [Application](https://documentation.ubuntu.com/juju/4.0/reference/application.md#application)
- [Unit](https://documentation.ubuntu.com/juju/4.0/reference/unit.md#unit)

Applications connect to each other through relations endpoints – integration points between compatible interfaces. Offers enable cross-model relations.

- [Relation (integration)](https://documentation.ubuntu.com/juju/4.0/reference/relation.md#relation)
- [Offer](https://documentation.ubuntu.com/juju/4.0/reference/offer.md#offer)

Applications are managed through configuration, secrets, actions, and scripts, and support scaling and high availability. Charms may require resources.

- [Configuration](https://documentation.ubuntu.com/juju/4.0/reference/configuration.md#configuration)
- [Resource (charm)](https://documentation.ubuntu.com/juju/4.0/reference/resource-charm.md#charm-resource)
- [Secret](https://documentation.ubuntu.com/juju/4.0/reference/secret.md#secret)
- [Action](https://documentation.ubuntu.com/juju/4.0/reference/action.md#action)
- [Script](https://documentation.ubuntu.com/juju/4.0/reference/script.md#script)
- [High availability (HA)](https://documentation.ubuntu.com/juju/4.0/reference/high-availability.md#high-availability)
- [Scaling](https://documentation.ubuntu.com/juju/4.0/reference/scaling.md#scaling)

Supporting infrastructure – machines, storage volumes, network spaces and subnets, and availability zones – is provisioned from the cloud. Constraints and placement directives control how resources are selected and allocated. SSH keys provide access.

- [Machine](https://documentation.ubuntu.com/juju/4.0/reference/machine.md#machine)
- [Storage](https://documentation.ubuntu.com/juju/4.0/reference/storage.md#storage)
- [Constraint](https://documentation.ubuntu.com/juju/4.0/reference/constraint.md#constraint)
- [Placement directive](https://documentation.ubuntu.com/juju/4.0/reference/placement-directive.md#placement-directive)
- [Space](https://documentation.ubuntu.com/juju/4.0/reference/space.md#space)
- [Subnet](https://documentation.ubuntu.com/juju/4.0/reference/subnet.md#subnet)
- [Zone](https://documentation.ubuntu.com/juju/4.0/reference/zone.md#zone)
- [SSH key](https://documentation.ubuntu.com/juju/4.0/reference/ssh-key.md#ssh-key)

On each machine, agents (`jujud` on machines, `containeragent` on Kubernetes) execute charm code through hooks. Charms use hook commands (provided by `jujuc`) to interact with Juju. On Kubernetes, `containeragent` also orchestrates workload containers using Pebble.

- [Agent](https://documentation.ubuntu.com/juju/4.0/reference/agent.md#agent)
- [jujud](https://documentation.ubuntu.com/juju/4.0/reference/jujud.md#jujud)
- [Hook](https://documentation.ubuntu.com/juju/4.0/reference/hook.md#hook)
- [Hook command](https://documentation.ubuntu.com/juju/4.0/reference/hook-command.md#hook-command)
- [jujuc](https://documentation.ubuntu.com/juju/4.0/reference/jujuc.md#jujuc)
- [containeragent](https://documentation.ubuntu.com/juju/4.0/reference/containeragent.md#containeragent)
- [Pebble](https://documentation.ubuntu.com/juju/4.0/reference/pebble.md#pebble)
  Lifecycle management

Removing and upgrading are cross-cutting operations that apply across multiple resource types – from individual units and applications to entire models and controllers.

- [Telemetry](https://documentation.ubuntu.com/juju/4.0/reference/telemetry.md#telemetry)
- [Removing things](https://documentation.ubuntu.com/juju/4.0/reference/removing-things.md#removing-things)
- [Upgrading things](https://documentation.ubuntu.com/juju/4.0/reference/upgrading-things.md#upgrading-things)
