| Device Name | Codename |
|---|---|
| Google Pixel 6 | oriole |
| Google Pixel 6a | bluejay |
| Google Pixel 6 Pro | raven |
| Google Pixel 7 | panther |
| Google Pixel 7a | lynx |
| Google Pixel 7 Pro | cheetah |
| Google Pixel 8 | shiba |
| Google Pixel 8a | akita |
| Google Pixel 8 Pro | husky |
| Google Pixel 9 | tokay |
| Google Pixel 9 Pro | caiman |
| Google Pixel 9 Pro XL | komodo |
| Google Pixel 10 | frankel |
| Google Pixel 10 Pro | blazer |
| Google Pixel 10 Pro XL | mustang |
| Google Pixel Fold | felix |
| Motorola G34/45 5G | fogos |
| Motorola G54 | cancunf |
| Nothing Phone (2) | Pong |
| Oneplus 8 | instantnoodle |
| Oneplus 8 Pro | instantnoodlep |
| Oneplus 8T | kebab |
| Oneplus 9R | lemonades |
| Oneplus 13R | giulia |
| Oneplus Ace 5 | giuliac |
| Oneplus Nord | avicii |
| Oneplus Nord CE2 Lite 5G | oscaro |
| POCO F3/Mi 11X/K40 | alioth |
| POCO F4/K40S | munch |
| POCO F5 | marble |
| POCO F6 | peridot |
| POCO F7 | onyx |
| POCO M2 Pro / Redmi Note 9S / 9 Pro / 9 Pro Max / 10 Lite | miatoll |
| POCO X3 / POCO X3 NFC | surya |
| POCO X6 Pro 5G | duchamp |
| POCO X7 Pro 5G | rodin |
| Realme 5 series | r5x |
| Realme 6/7/Narzo Unified | RM6785 |
| Realme GT Neo 2 | bitra |
| Realme GT Neo 3T | spartan |
| Mi 11X Pro/Mi 11i/Redmi K40 Pro/Redmi K40 Pro+ | haydn |
| Redmi 9 | lancelot |
| Redmi K20 Pro / Mi 9T Pro | raphael |
| Redmi Note 7/7s | lavender |
| Redmi Note 7 Pro | violet |
| Redmi Note 8 Pro | begonia |
| Redmi Note 9 | merlinx |
| Redmi Note 12 Pro / Plus / Discovery 5G | rubyx |
| Redmi Note 14 4G | tanzanite |
| Xiaomi Pad 5 | nabu |
| Xiaomi Pad 6 | pipa |
| Samsung Galaxy A52s 5G | a52sxq |
| TECNO POVA 4 Pro | LG8n |
| TECNO POVA 5 | LH7n |
| Itel RS4 | S666LN |
- rmp22 (Google Pixel 6 (
oriole), Google Pixel 6a (bluejay), Google Pixel 6 Pro (raven), Google Pixel 7 (panther), Google Pixel 7a (lynx), Google Pixel 7 Pro (cheetah), Google Pixel 8 (shiba), Google Pixel 8a (akita), Google Pixel 8 Pro (husky), Google Pixel Fold (felix)) - EliteDarkKaiser (Google Pixel 10 (
frankel), Google Pixel 10 Pro (blazer), Google Pixel 10 Pro XL (mustang)) - Niv (Google Pixel 9 (
tokay), Google Pixel 9 Pro (caiman), Google Pixel 9 Pro XL (komodo)) - Byben (Motorola G34/45 5G (
fogos)) - Ayan (Motorola G54 (
cancunf)) - hiroshi. (Superuser) (Nothing Phone (2) (
Pong)) - Itachi (Oneplus 8 (
instantnoodle), Oneplus 8 Pro (instantnoodlep), Oneplus 8T (kebab), Oneplus 9R (lemonades)) - Genoxci (Oneplus 13R (
giulia), Oneplus Ace 5 (giuliac), Samsung Galaxy A52s 5G (a52sxq)) - Sreeshankar K (Oneplus Nord (
avicii)) - Chethan (Oneplus Nord CE2 Lite 5G (
oscaro)) - Yaseakun (POCO F3/Mi 11X/K40 (
alioth)) - SENX|センクス (POCO F4/K40S (
munch), POCO X7 Pro 5G (rodin)) - PabloEscobar (POCO F5 (
marble)) - zenin1504 (POCO F6 (
peridot)) - Zarathos_Ghost_Rider (POCO F7 (
onyx)) - RiteshSahany (POCO M2 Pro / Redmi Note 9S / 9 Pro / 9 Pro Max / 10 Lite (
miatoll)) - Debayan Kar (POCO X3 / POCO X3 NFC (
surya)) - Saikrishna (POCO X6 Pro 5G (
duchamp), Redmi Note 8 Pro (begonia)) - Amritorock (Realme 5 series (
r5x), Redmi Note 7/7s (lavender)) - 𝙴𝙻𝙾𝙷𝙸𝙼 (Realme 6/7/Narzo Unified (
RM6785)) - Bijoy (Realme GT Neo 2 (
bitra), Realme GT Neo 3T (spartan)) - doissM (Redmi 9 (
lancelot), Redmi Note 9 (merlinx)) - Joker-V2 (Redmi Note 7 Pro (
violet)) - Casanova. (Redmi Note 12 Pro / Plus / Discovery 5G (
rubyx)) - Muhammad Al-Arabi (Redmi K20 Pro / Mi 9T Pro (
raphael)) - Lucifer (Mi 11X Pro/Mi 11i/Redmi K40 Pro/Redmi K40 Pro+ (
haydn)) - °⊥⋊ɹ∀° (Xiaomi Pad 5 (
nabu)) - Null_Pointer (Xiaomi Pad 6 (
pipa)) - Shirayuki39 (TECNO POVA 4 Pro (
LG8n), TECNO POVA 5 (LH7n)) - KimelaZPrjkt. (Itel RS4 (
S666LN)) - Ido (Redmi Note 14 4G (
tanzanite))
infra/device_registry.json is the source of truth for maintainers, official device ownership, build-side official detection, and website download/team APIs.
Use infra/maintainer_onboarding.py to onboard a maintainer/device instead of hand-editing generated lists:
python3 infra/maintainer_onboarding.py --dry-run \
--maintainer-id ExampleMaintainer \
--maintainer-name "Example Maintainer" \
--github https://github.com/example \
--device "Example Phone (example)" \
--support-group https://t.me/example \
--image-url https://example.com/device.pngIf validation passes, run the same command without --dry-run. The script updates the registry and regenerates:
infra/official_devices.mkOTA/axion.devicesOTA/axion.maintainersapi/downloads.jsonapi/maintainers.jsonREADME.md
Important fields:
--maintainer-id: exactAXION_MAINTAINERvalue used by builds. This cannot contain whitespace.--maintainer-name: public display name.--github: GitHub username or profile URL.--device: device display name and codename inDevice Name (codename)format.--co-maintainer-id: repeat for additional existing maintainer IDs.--unofficial: show the device on the website without enabling official build detection.--hide-website: enable official detection without listing the device on website APIs.
After hand-editing the registry, run:
python3 infra/generate.pyBoth scripts validate the registry and reject duplicate codenames, unknown co-maintainers, bad GitHub usernames, invalid statuses, and formatting mistakes before writing generated outputs. Official-device outputs are sorted automatically by brand, device name, and codename. Default active, official, and website-visible fields are omitted from the registry so maintainer/device data is only entered where it is needed. Existing-device download links come directly from OTA/GMS/<codename>.json and OTA/VANILLA/<codename>.json; do not copy download URLs into API files.