Source for the Ansible web UI. The supported development path is the Platform UI—the unified application in platform/—which talks to Ansible Jewel. Product-specific workspaces (AWX, Hub, EDA, and shared libraries) live under frontend/ and are composed into that application.
Day-to-day integration happens on the devel branch. Open pull requests against devel.
- Getting started
- Repository layout
- Environment variables
- NPM scripts
- Documentation
- Standalone product UIs
- AI-assisted contributions
- Code of Conduct
-
Prerequisites
- Node.js 24.x or newer (see
enginesinpackage.json) - npm (bundled with Node)
- Node.js 24.x or newer (see
-
Clone the repository
git clone git@github.com:ansible/ansible-ui.git cd ansible-ui -
Install dependencies
npm ci
-
Run Ansible Jewel
The UI expects a running Jewel instance that serves the unified APIs. Follow the ansible/jewel documentation to stand up a local development environment.
-
Configure and start the Ansible UI
export PLATFORM_SERVER='https://localhost:443' # Jewel API URL (protocol://host:port) npm start
npm startruns the dev server inplatform/(default https://localhost:4100). Seeplatform/README.mdfor build and container options.
This repository is an npm workspaces monorepo. See WORKSPACES.md for how packages relate to each other.
| Path | Role |
|---|---|
platform/ |
Platform UI (unified Ansible UI; primary application) |
frontend/awx, frontend/hub, frontend/eda |
Product UI workspaces used by the platform build |
frontend/common |
Shared UI utilities and access components across product workspaces |
frontend/chatbot |
Lightspeed chatbot UI workspace (and other frontend/* workspaces) |
packages/* |
Optional shared npm packages (workspace glob; may be empty) |
framework/ |
Shared PatternFly-based UI framework |
playwright/ |
End-to-end and integration tests |
Common variables when running the Ansible UI against a remote or local Jewel instance:
| Environment variable | Description |
|---|---|
PLATFORM_SERVER |
Jewel API base URL (protocol://host:port, no trailing slash). |
PLATFORM_USERNAME |
Login username for live E2E tests (optional for local dev). |
PLATFORM_PASSWORD |
Login password for live E2E tests (optional for local dev). |
AWX_API_PREFIX |
AWX API prefix when required by Jewel (often /api/controller/v2). |
EDA_API_PREFIX |
EDA API prefix when required by Jewel (often /api/eda/v1). |
HUB_API_PREFIX |
Hub API prefix when required by Jewel (often /api/galaxy). |
export PLATFORM_SERVER='https://localhost:443'
export AWX_API_PREFIX='/api/controller/v2'
export EDA_API_PREFIX='/api/eda/v1'Playwright tests use additional variables; see playwright/Playwright.md.
| Script | Description |
|---|---|
npm start |
Start the Platform UI dev server (platform/) |
npm test |
Run eslint, TypeScript, Prettier, and Vitest across workspaces |
npm run tsc |
TypeScript checks |
npm run eslint / npm run eslint:fix |
Lint (all workspaces via nx) |
npm run build |
Production builds |
| Script | Description |
|---|---|
npm run start |
Platform UI dev server on port 4100 |
npm run build |
Production build (output under platform/dist) |
npm run test |
Workspace-level checks |
- Docs index
- Contributing
- Platform UI
- Framework
- Testing strategy
- Test server setup
- Playwright tests
- Handling errors in forms
The root README no longer links to legacy deployment-type notes that were removed during the upstream documentation refresh; use architecture and the docs index for supported development and test workflows.
package.json scripts still exist to run individual product workspaces in isolation (for example npm --prefix frontend/awx start on port 4101). These standalone dev servers are not supported in this repository: they are unmaintained, are not validated in CI, and often do not work with Ansible Jewel authentication and RBAC (the unified API layer used by the supported platform/ workflow). Use the Ansible UI workflow above unless you are explicitly working on a dedicated standalone effort.
| Script | Dev URL (if it starts) |
|---|---|
npm --prefix frontend/awx start |
http://localhost:4101 |
npm --prefix frontend/hub start |
http://localhost:4102 |
npm --prefix frontend/eda start |
http://localhost:4103 |
Legacy environment variables such as AWX_SERVER, EDA_SERVER, and HUB_SERVER applied to those flows only.
This project is primarily human-created. Contributors may use AI-assisted
development tools and remain responsible for their work. See
AI_POLICY.md and the Ansible community AI policy.
The attribution below describes how AI may appear in contributions to this repository (not that the codebase as a whole was AI-generated):
- AI Attribution: AIA Ph SeCeNc Hin R Claude Code, Cursor, and similar AI-assisted development tools v1.0 (interpret this statement)
We follow the Ansible Code of Conduct in all our interactions within this project.
If you encounter abusive behavior, please refer to the policy violations section of the Code for information on how to raise a complaint.
- Join the Ansible forum:
- Posts tagged with 'ui': subscribe to participate in UI related conversations.
- Social Spaces: gather and interact with fellow enthusiasts.
- News & Announcements: track project-wide announcements including social events. The Bullhorn newsletter, which is used to announce releases and important changes, can also be found here.
For more information about communication, see the Ansible communication guide.