Source: https://seerepo.com/r/ansible/awx/built
Markdown source: https://seerepo.com/r/ansible/awx/built.md
Description: awx is a Python repo built with Django, asgiref, twisted, djangorestframework, and AIOHTTP. It stores its data in Postgres.

# What is awx built with?

awx is a Python repo built with Django, asgiref, twisted, djangorestframework, and AIOHTTP. It stores its data in Postgres, signs people in with adal, azure-identity, azure-keyvault-secrets, msal, msal-extensions, and 4 more, makes its content with markdown, markupsafe, nh3, and jinja2, validates its data with jsonschema-specifications, openapi-spec-validator, referencing, and jsonschema, is tested with pytest-asyncio, pytest-cov, pytest-timeout, pytest-xdist, Pytest, and 1 more, deploys with azure-core, msrestazure, opentelemetry-api, opentelemetry-instrumentation, opentelemetry-instrumentation-logging, and 11 more, and uses hiredis, psycopg, s3transfer, Redis, channels-redis, and 1 more. It has 159,435 written lines, with 357 test files.

Read on November 8, 2026, at commit fe6cd9d.

Repository: https://github.com/ansible/awx

## Backend

### The base

- **[Django](https://seerepo.com/uses/django)**: 235 files

### Data

- **hiredis**
- **[psycopg](https://seerepo.com/uses/psycopg)**
- **s3transfer**
- **[Redis](https://seerepo.com/uses/redis)**: 11 files · [awx/main/analytics/subsystem_metrics.py, line 2](https://github.com/ansible/awx/blob/fe6cd9d45a7e977e2b78c8e8e5e69cc24d7eeaaa/awx/main/analytics/subsystem_metrics.py#L2)
- **[Postgres](https://seerepo.com/uses/postgres)**: 8 files · [awx/conf/settings.py, line 4](https://github.com/ansible/awx/blob/fe6cd9d45a7e977e2b78c8e8e5e69cc24d7eeaaa/awx/conf/settings.py#L4)
- **channels-redis**: 1 file
- **gitdb**: 1 file

### Sign-in

- **adal**
- **[azure-identity](https://seerepo.com/uses/azure-identity)**
- **azure-keyvault-secrets**
- **msal**
- **msal-extensions**
- **[oauthlib](https://seerepo.com/uses/oauthlib)**
- **requests-oauthlib**
- **[cryptography](https://seerepo.com/uses/cryptography)**: 6 files
- **[pyjwt](https://seerepo.com/uses/pyjwt)**: 1 file

## Support

### The base

- **[asgiref](https://seerepo.com/uses/asgiref)**
- **twisted**
- **djangorestframework**: 50 files
- **[AIOHTTP](https://seerepo.com/uses/aiohttp)**: 1 file

### Content

- **[markdown](https://seerepo.com/uses/markdown)**
- **[markupsafe](https://seerepo.com/uses/markupsafe)**
- **[nh3](https://seerepo.com/uses/nh3)**
- **[jinja2](https://seerepo.com/uses/jinja2)**: 4 files

### Validation

- **[jsonschema-specifications](https://seerepo.com/uses/jsonschema-specifications)**
- **openapi-spec-validator**
- **[referencing](https://seerepo.com/uses/referencing)**
- **[jsonschema](https://seerepo.com/uses/jsonschema)**: 1 file

### Testing

- **pytest-asyncio**
- **pytest-cov**
- **pytest-timeout**
- **pytest-xdist**
- **Pytest**: 284 files
- **pytest-mock**: 1 file

### Deploy

- **[azure-core](https://seerepo.com/uses/azure-core)**
- **msrestazure**
- **[opentelemetry-api](https://seerepo.com/uses/opentelemetry-api)**
- **opentelemetry-instrumentation**
- **opentelemetry-instrumentation-logging**
- **[opentelemetry-semantic-conventions](https://seerepo.com/uses/opentelemetry-semantic-conventions)**
- **python-daemon**
- **ansible-runner**: 5 files
- **[prometheus-client](https://seerepo.com/uses/prometheus-client)**: 4 files
- **[boto3](https://seerepo.com/uses/boto3)**: 1 file
- **[botocore](https://seerepo.com/uses/botocore)**: 1 file
- **[kubernetes](https://seerepo.com/uses/kubernetes)**: 1 file
- **[OpenTelemetry](https://seerepo.com/uses/opentelemetry)**: 1 file
- **[opentelemetry-exporter-otlp-proto-grpc](https://seerepo.com/uses/opentelemetry-exporter-otlp-proto-grpc)**: 1 file
- **[opentelemetry-sdk](https://seerepo.com/uses/opentelemetry-sdk)**: 1 file
- **[psutil](https://seerepo.com/uses/psutil)**: 1 file

### Tools

- **build**
- **click**
- **cython**
- **debugpy**
- **django-extensions**
- **ipython**
- **Jupyter**
- **maturin**
- **pkgconfig**
- **pycparser**
- **Ruff**
- **Setuptools**
- **setuptools-rust**
- **tox**
- **typing-extensions**
- **wheel**
- **yamllint**
- **packaging**: 4 files
- **drf-spectacular**: 2 files
- **jq**: 2 files
- **pip**: 2 files
- **django-debug-toolbar**: 1 file
- **gitpython**: 1 file
- **gprof2dot**: 1 file
- **setuptools-scm**: 1 file

### Other

- **.**
- **aiodns**
- **aiofiles**
- **aiohappyeyeballs**
- **aiohttp-retry**
- **aiosignal**
- **atomicwrites**
- **attrs**
- **autobahn**
- **automat**
- **backports-zstd**
- **brotli**
- **certifi**
- **cffi**
- **charset-normalizer**
- **django-cors-headers**
- **django-crum**
- **durationpy**
- **enum-compat**
- **frozenlist**
- **googleapis-common-protos**
- **grpcio**
- **idna**
- **importlib-metadata**
- **inflection**
- **isodate**
- **jaraco-context**
- **jaraco-functools**
- **jmespath**
- **more-itertools**
- **msgpack**
- **msrest**
- **multidict**
- **opentelemetry-exporter-otlp-proto-common**
- **pexpect**
- **propcache**
- **protobuf**
- **ptyprocess**
- **pyasn1**
- **pyasn1-modules**
- **pycares**
- **pygithub**
- **pynacl**
- **pyopenssl**
- **pyzstd**
- **regex**
- **rpds-py**
- **rsa**
- **semantic-version**
- **service-identity**
- **six**
- **smmap**
- **sqlparse**
- **uritemplate**
- **wrapt**
- **yarl**
- **zipp**
- **zope-interface**
- **pyyaml**: 19 files
- **requests**: 19 files
- **python-dateutil**: 11 files
- **channels**: 4 files
- **pytz**: 2 files
- **urllib3**: 2 files
- **cachetools**: 1 file
- **distro**: 1 file
- **filelock**: 1 file
- **pyparsing**: 1 file
- **slack-sdk**: 1 file
- **twilio**: 1 file
- **websocket-client**: 1 file

## Other repos with a similar stack

- [ray-project/ray](https://seerepo.com/r/ray-project/ray/built): Redis, gitdb, asgiref, AIOHTTP, azure-identity, msal, msal-extensions, oauthlib, requests-oauthlib, cryptography, pyjwt, markdown, markupsafe, nh3, jinja2, jsonschema-specifications, referencing, jsonschema, opentelemetry-api, opentelemetry-instrumentation, opentelemetry-semantic-conventions, prometheus-client, boto3, botocore, kubernetes, OpenTelemetry, opentelemetry-exporter-otlp-proto-grpc, psutil · [Compare](https://seerepo.com/compare/ansible/awx/vs/ray-project/ray)
- [agno-agi/agno](https://seerepo.com/r/agno-agi/agno/built): psycopg, Postgres, gitdb, AIOHTTP, oauthlib, requests-oauthlib, cryptography, pyjwt, markupsafe, jinja2, jsonschema-specifications, referencing, jsonschema, opentelemetry-api, opentelemetry-instrumentation, opentelemetry-semantic-conventions, kubernetes, OpenTelemetry, opentelemetry-exporter-otlp-proto-grpc · [Compare](https://seerepo.com/compare/agno-agi/agno/vs/ansible/awx)
- [apache/superset](https://seerepo.com/r/apache/superset/built): Redis, Postgres, AIOHTTP, oauthlib, cryptography, pyjwt, markdown, markupsafe, nh3, jinja2, jsonschema-specifications, referencing, jsonschema, prometheus-client, boto3, botocore, OpenTelemetry, psutil · [Compare](https://seerepo.com/compare/ansible/awx/vs/apache/superset)
- [run-llama/llama_index](https://seerepo.com/r/run-llama/llama_index/built): psycopg, Redis, AIOHTTP, azure-identity, msal, cryptography, pyjwt, markupsafe, jinja2, jsonschema-specifications, referencing, jsonschema, opentelemetry-api, opentelemetry-semantic-conventions, prometheus-client, boto3, OpenTelemetry, psutil · [Compare](https://seerepo.com/compare/ansible/awx/vs/run-llama/llama_index)
- [makeplane/plane](https://seerepo.com/r/makeplane/plane/built): Django, psycopg, Redis, Postgres, djangorestframework, cryptography, pyjwt, nh3, opentelemetry-api, boto3, OpenTelemetry, opentelemetry-exporter-otlp-proto-grpc, opentelemetry-sdk · [Compare](https://seerepo.com/compare/ansible/awx/vs/makeplane/plane)
- [apache/airflow](https://seerepo.com/r/apache/airflow/built): psycopg, Redis, asgiref, AIOHTTP, azure-identity, cryptography, pyjwt, jinja2, jsonschema, boto3, kubernetes, OpenTelemetry, psutil · [Compare](https://seerepo.com/compare/ansible/awx/vs/apache/airflow)

## Frequently asked questions

### What language is awx written in?

awx is written in Python, with 159,435 written lines.

### What framework does awx use?

awx is built with Django, asgiref, twisted, djangorestframework, and AIOHTTP.

### What database does awx use?

awx stores its data in Postgres.

The proof: [awx/conf/settings.py, line 4](https://github.com/ansible/awx/blob/fe6cd9d45a7e977e2b78c8e8e5e69cc24d7eeaaa/awx/conf/settings.py#L4)

### What does awx sign people in with?

awx signs people in with adal, azure-identity, azure-keyvault-secrets, msal, msal-extensions, oauthlib, requests-oauthlib, cryptography, and pyjwt.

### What services does awx use?

awx uses hiredis, psycopg, s3transfer, Redis, channels-redis, and gitdb.

### Does awx have tests?

Yes. awx has 357 test files and is tested with pytest-asyncio, pytest-cov, pytest-timeout, pytest-xdist, Pytest, and pytest-mock.

### Which repos have a stack like awx's?

The ones that share most of its stack: ray-project/ray, agno-agi/agno, and apache/superset.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
