Open-source project
ansible/awx avatar
ansible/awx

AWX: the Ansible control plane, paused mid-refactor

AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.

15,579 stars3,678 forksPythonNOASSERTION

At a glance

What is it?
AWX gives Ansible a web UI, a REST API and a job engine, and it is the upstream of Red Hat Ansible Automation Platform. The code moves daily, but the last tagged release was 24.6.1 on 2024-07-02 and the README says releases are paused during a large refactoring.
Who is it for?
Adopt AWX if you need a central inventory, credential store and job history for Ansible playbooks and you can run it on Kubernetes or Docker Compose, and treat the paused release cadence as a planning input rather than a surprise. Do not adopt it if you need a supported product with a release train, since the README states releases are paused during a large scale refactoring, and the last release was 24.6.1 on 2024-07-02.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What AWX adds on top of plain ansible-playbook

Running ansible-playbook from a laptop works until more than one person needs to run it. Then the questions multiply: who holds the SSH key, who holds the cloud API token, which host groups exist, what ran last night, and who can press the button that touches production. AWX answers those questions with three components the README names directly: a web-based user interface, a REST API, and a task engine, all built on top of Ansible.

The audience follows from that. It is for platform and operations teams that already write Ansible content and now need a shared place to store inventories, credentials and job templates, plus a record of what executed. It is not a replacement for Ansible itself. Playbooks, roles and collections remain the unit of work; AWX schedules them, injects credentials and keeps history. A single engineer automating one server gains little. A team of five running the same playbooks against three environments gains a control plane, and inherits the operational cost of running one.

The task engine, the API and the Django application behind them

The repository layout tells you what the runtime is. There is a Django project at the root (manage.py, pyproject.toml, pytest.ini), a Python package under awx/, a separate awxkit/ directory for the client tooling, and an awx_collection/ Ansible collection. The Makefile defines MANAGEMENT_COMMAND ?= awx-manage, which is the project's own management entry point, and it points at a Python interpreter chosen from python3.12, python3.11 or python3.

The data flow is conventional for this class of tool. The UI and the REST API are two front ends over the same Django models. A job template references an inventory, a credential and a project containing the playbook. When a job launches, the task engine dispatches it to an execution environment, and the result lands back in the database as job output and status. The awxkit package and the awx collection are the two programmatic routes into that same API: one from Python, one from Ansible itself.

The refactoring the README announces is aimed at this shape. The forum thread titles linked from the README describe moving AWX toward a pluggable, service-oriented architecture, with the UI and credential types transitioning to that new architecture. That is a structural change to how the pieces are wired, not a feature release, which is why the README frames the pause the way it does.

Installing AWX: start with INSTALL.md, then the API

The README does not carry install steps. It says: "To install AWX, please view the Install guide", and that guide is INSTALL.md in the repository root. The Makefile shows the local development path expects Docker Compose, with DOCKER_COMPOSE ?= docker compose and COMPOSE_TAG defaulting to the active git branch. Read INSTALL.md before running anything, because the supported installation method has been changing and one of the linked forum threads is specifically about upcoming changes to AWX Operator installation methods.

Once an instance is running, the fastest way to confirm it works is the API rather than the UI. The awxkit directory in the repository holds the Python client for that API, and the Makefile installs the collection into the standard collection path:

bash
COLLECTION_INSTALL = $(HOME)/.ansible/collections/ansible_collections/$(COLLECTION_NAMESPACE)/$(COLLECTION_PACKAGE)

With a token or credentials configured, awxkit exposes the same objects the UI shows: organizations, inventories, credentials, job templates and jobs. If you prefer to drive it from Ansible content, the repository ships the awx collection under awx_collection/, with COLLECTION_NAMESPACE ?= awx and COLLECTION_PACKAGE ?= awx. A first real use is a job template: create a project pointing at a git repository with a playbook, attach an inventory and a machine credential, then launch it and watch the output stream into the job view. If the job fails on host connectivity, the problem is almost always the credential or the inventory, not the engine.

Where AWX is the wrong tool

The README carries a caution block that is unusual to see at the top of a project page. It states that the last release was on Jul 2, 2024 and that "Releases of this project are now paused during a large scale refactoring." The repository itself is not archived and the devel branch is being pushed to, but a tagged release and a commit are different things. If your adoption criteria include a predictable upgrade path, that sentence is the whole evaluation.

The second boundary is operational weight. AWX is a Django application with a database, a task engine and a UI. That is a service you now run, patch and back up. Teams that want scheduled Ansible runs without a persistent web application are better served by a lighter scheduler or by CI runners that invoke ansible-playbook directly. The third boundary is scope: AWX executes Ansible. It does not replace configuration management design, and it will faithfully run a bad playbook at scale.

AWX compared with Ansible Tower and with Semaphore

The comparison people search for most is AWX against Ansible Tower. The README settles the relationship: AWX "is one of the upstream projects for Red Hat Ansible Automation Platform." Upstream means the code lands here first, and the supported product is downstream of it. The practical difference is not features in the abstract but support, release guarantees and packaging. If you need a vendor to answer when a job fails at 3am, upstream is not that.

Semaphore is the other name that comes up, and the difference is architectural rather than cosmetic. Semaphore is a separate project with its own scheduler and its own interface; it is not built on the AWX codebase and does not share its Django models or its API surface. Choosing between them means choosing between the AWX API and collection ecosystem that the Ansible community builds against, and a smaller independent tool. Neither choice is reversible for free, because job templates, credentials and inventories do not port cleanly between them.

Maintenance cost, licensing and what the pause means for upgrades

The README's caution block is the maintenance story. Releases are paused, the last one was 24.6.1 on 2024-07-02, and the project points readers at the Ansible Forum and a set of linked posts for the reasoning. The devel branch is active, so fixes and refactoring work are landing, but a branch is not a release artifact. Plan upgrades around what is actually tagged rather than around commit activity.

The licence situation needs care. The repository ships a LICENSE.md, and the README's badge links to it as Apache 2.0, but the licence field reported for this repository is NOASSERTION, meaning the automated classification could not confirm a standard identifier. Read LICENSE.md yourself rather than relying on a badge. Separately, the README states that the AWX logos and branding assets are covered by trademark guidelines in the awx-logos repository, which is a different grant from the code licence. Nothing here is legal advice; if you redistribute AWX or use the marks, that is a question for your own counsel.

Editorial conclusion

Adopt AWX if you need a central inventory, credential store and job history for Ansible playbooks and you can run it on Kubernetes or Docker Compose, and treat the paused release cadence as a planning input rather than a surprise. Do not adopt it if you need a supported product with a release train, since the README states releases are paused during a large scale refactoring, and the last release was 24.6.1 on 2024-07-02. Before committing, read INSTALL.md and the linked forum threads on the pluggable architecture, then check whether the packaging path you intend to use is the one the project currently documents.

Frequently asked questions

What is AWX used for?

AWX provides a web-based user interface, a REST API and a task engine built on top of Ansible. Teams use it as a shared control plane for inventories, credentials and playbook runs instead of executing ansible-playbook from individual machines.

What is the difference between AWX and Ansible Tower?

AWX is the upstream project for Red Hat Ansible Automation Platform, which is the supported downstream product. The README describes AWX as one of the upstream projects for that platform, so the code lands in AWX first.

Is AWX still being actively developed?

The repository is not archived and the devel branch receives pushes, but the README states that releases are paused during a large scale refactoring and that the last release was on Jul 2, 2024. The project directs readers to the Ansible Forum and linked posts for updates.

How do I install AWX?

The README does not list install steps; it points to the Install guide, which is INSTALL.md in the repository. The Makefile shows the local development path uses Docker Compose, and the project has posted about upcoming changes to AWX Operator installation methods.

What is the difference between Ansible and AWX?

Ansible is the automation engine that runs playbooks; AWX is a web UI, REST API and task engine built on top of it. The README describes AWX as built on top of Ansible and as one of the upstream projects for Red Hat Ansible Automation Platform.

Official sources

  1. ansible/awx on GitHub
  2. Issues
  3. README
  4. Releases
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ansible-awx.svg)](https://hysenlabs.com/projects/ansible-awx)
Community notes

Community notes