Ops documentation

Ops is a Python framework for writing and testing Juju charms.

The core ops package provides an API to respond to Juju events and manage your charm’s application. Ops also includes extra packages for testing and tracing charms.

Ops promotes consistent and maintainable charm code. Its APIs help you separate different aspects of your charm, such as managing the application’s state and integrating with other charms.

Get started

Generate charm code for a web app

Use our CLI tools to turn your 12-factor app into a charm that’s ready to deploy. We support Django, FastAPI, Go, and more!

Write your first 12-factor app charm

Write your first charm from scratch

For a hands-on introduction to charm development with Ops, try our tutorials:

In this documentation

How this documentation is organised

This documentation uses the Diátaxis documentation structure.

Demo charms

The Ops repository has several demo charms that you can experiment with.

Ops releases

Read the release notes

Ops releases are tracked in GitHub. To get notified when there’s a new release, watch the Ops repository.

The ops package is published on PyPI.

Project and community

Ops is a member of the Ubuntu family. It’s an open source project that warmly welcomes community contributions, suggestions, fixes and constructive feedback.

For support, join Charm Development on Matrix. You’ll be able to chat with the maintainers of Ops (the Canonical Charm Tech team) and a friendly community of charm developers!

To follow along with updates and tips about charm development, join our Discourse forum.