# Juju > Juju is an open source orchestration engine for deploying, integrating, and managing applications across Kubernetes, VMs, and bare metal using software operators called charms. 2026 CC-BY-SA, Canonical Ltd. ## Pages in this subsection - [Reference](https://documentation.ubuntu.com/juju/4.0/contributor/reference.md): Access technical reference documentation for Juju developers including architecture, workers, agents, and testing frameworks. - [Agent](https://documentation.ubuntu.com/juju/4.0/contributor/reference/agent.md): Learn about Juju agents, their types, dependency engines, and how they manage workers across different deployment environments. - [Binary container agent](https://documentation.ubuntu.com/juju/4.0/contributor/reference/binary-containeragent.md): Understand the containeragent binary and containerAgentCommand for spawning unit agents in Kubernetes deployments with Juju. - [Catacomb package](https://documentation.ubuntu.com/juju/4.0/contributor/reference/catacomb-package.md): Utilize the catacomb package for binding worker lifetimes and tracking errors across groups of related workers in Juju development. - [Conventional commits](https://documentation.ubuntu.com/juju/4.0/contributor/reference/conventional-commits.md): Follow conventional commit standards for Juju contributions, including commit types, scopes, and proper formatting guidelines. - [CVEs](https://documentation.ubuntu.com/juju/4.0/contributor/reference/cve.md): Navigate Juju's CVE security advisory process, from reporting vulnerabilities to private releases and embargo management. - [Dependency package](https://documentation.ubuntu.com/juju/4.0/contributor/reference/dependency-package.md): Manage worker dependencies and shared resources using the dependency package's engine and manifold constructs in Juju architecture. - [Entity lifecycle](https://documentation.ubuntu.com/juju/4.0/contributor/reference/entity-lifecycle.md): Understand entity lifecycle states (Alive, Dying, Dead) for Juju entities, including machines, units, applications, relations. - [High Availability (HA)](https://documentation.ubuntu.com/juju/4.0/contributor/reference/high-availability.md): Configure Juju high availability with multiple state machines, MongoDB replicaset mode, and voting member management strategies. - [Testing](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing.md): Understand Juju's testing requirements and frameworks, covering unit testing and integration testing strategies for contributors. - [Integration testing](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/integration-testing.md): Write integration tests for Juju using bash scripts, test suites, and includes for comprehensive end-to-end testing. - [Integration test suite](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/integration-testing/integration-test-suite.md): Build integration test suites for Juju with organized setup, teardown logic, and reusable test includes for bash-based testing. - [Test include](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/integration-testing/test-include.md): Utilize bash test includes for Juju integration testing, including check functions, cleanup utilities, and juju command helpers. - [Unit testing](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/unit-testing.md): Learn about unit testing in Juju with gocheck package, including test suites, checkers, and util suite composition patterns. - [Checker](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/unit-testing/checker.md): Use gocheck checkers for assertions in Juju unit tests, including IsNil, Equals, DeepEquals, and ErrorMatches patterns. - [Unit test suite](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/unit-testing/unit-test-suite.md): Create structured unit test suites with distinct setup and teardown logic using util suite composition for Juju testing. - [Util suite](https://documentation.ubuntu.com/juju/4.0/contributor/reference/testing/unit-testing/util-suite.md): Leverage util suites like BaseSuite and FakeHomeSuite for structured test setup, teardown, and environment isolation in Juju. - [Tomb package](https://documentation.ubuntu.com/juju/4.0/contributor/reference/tomb-package.md): Implement the tomb package's Kill and Wait methods for managing worker goroutine lifecycles in Juju development. - [Worker](https://documentation.ubuntu.com/juju/4.0/contributor/reference/worker.md): Understand Juju workers, their interface implementation, and role in the dependency engine for managing concurrent operations. - [Worker interface](https://documentation.ubuntu.com/juju/4.0/contributor/reference/worker-interface.md): Explore the Go worker interface defining Kill() and Wait() methods implemented by all Juju workers for lifecycle management. - [Worker package](https://documentation.ubuntu.com/juju/4.0/contributor/reference/worker-package.md): Learn about the Juju worker package providing utilities, interfaces, and dependency management for long-lived worker goroutines in Juju. - [Writing workers](https://documentation.ubuntu.com/juju/4.0/contributor/reference/writing-workers.md): Learn about best practices for writing Juju workers, including tomb usage, channel management, and goroutine lifecycle control patterns. ## Optional - [Top-level llms.txt](https://documentation.ubuntu.com/juju/4.0/llms.txt): Complete documentation index.