# flipper-xfw/xtreme-firmware architecture

> Architecture diagram of the GitHub repository flipper-xfw/xtreme-firmware, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/flipper-xfw/xtreme-firmware
- Repository: https://github.com/flipper-xfw/xtreme-firmware

## Overview

Xtreme Firmware is a Flipper Zero firmware distribution whose user-facing workflow is selecting an on-device app or setting, configuring it through the UI, then using device hardware, storage, or a host connection to produce a result. The tree and README show major capabilities including RF/NFC/infrared tools, Bad Keyboard, asset-pack customization, and file management. Several product areas are represented only by paths or README claims; relationships for those are documented or omitted rather than inferred from unsampled code.

Main entry points: [`applications/services/storage/storage_external_api.c`](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/services/storage/storage_external_api.c) (Storage API), [`applications/settings`](https://github.com/flipper-xfw/xtreme-firmware/tree/dev/applications/settings) (Xtreme Settings), [`applications/system/storage_move_to_sd/storage_move_to_sd.c`](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/system/storage_move_to_sd/storage_move_to_sd.c) (Move to SD), [`applications/settings/storage_settings/storage_settings.c`](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/settings/storage_settings/storage_settings.c) (Storage Settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customization["Customization"]
  node_settings["Xtreme Settings"]
  node_asset_packs["Asset Packs"]
end

subgraph group_file_ops["File Management"]
  node_archive["File Browser<br/>[archive.c]"]
  node_storage_move["Move to SD"]
  node_storage_settings["Storage Settings<br/>[storage_settings.c]"]
  node_mass_storage["Mass Storage<br/>[mass_storage_app.c]"]
end

subgraph group_radio_tools["Radio Tools"]
  node_bad_kb["Bad Keyboard<br/>[bad_kb_app.c]"]
  node_rfid["LF RFID<br/>[lfrfid.c]"]
  node_rfid_worker["RFID Worker"]
  node_infrared["Infrared App<br/>[infrared_app.c]"]
  node_ir_worker["Infrared Worker<br/>[infrared_worker.c]"]
  node_nfc["NFC App<br/>[nfc_app.c]"]
  node_subghz["Sub-GHz Tools"]
end

subgraph group_platform["Platform Services"]
  node_storage_api["Storage API"]
  node_sd_storage[("SD Storage<br/>[storage_ext.c]")]
end

node_user(("Device User"))
node_host(("USB Host"))

node_user -->|"configures"| node_settings
node_settings -->|"selects pack"| node_asset_packs
node_user -->|"runs payload"| node_bad_kb
node_bad_kb -->|"emulates keyboard"| node_host
node_user -->|"reads or writes"| node_rfid
node_rfid -.->|"uses worker"| node_rfid_worker
node_user -->|"learns or sends"| node_infrared
node_infrared -.->|"uses worker"| node_ir_worker
node_user -->|"scans cards"| node_nfc
node_user -->|"uses radio tools"| node_subghz
node_user -->|"manages files"| node_archive
node_user -->|"moves files"| node_storage_move
node_user -->|"checks storage"| node_storage_settings
node_storage_settings -->|"benchmarks storage"| node_storage_api
node_storage_move -->|"merges files"| node_storage_api
node_storage_api -.->|"dispatches operations"| node_sd_storage
node_user -->|"exports storage"| node_mass_storage
node_mass_storage -.->|"shares disk"| node_host

click node_settings "https://github.com/flipper-xfw/xtreme-firmware/tree/dev/applications/settings"
click node_asset_packs "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/services/desktop/animations/animation_storage.c"
click node_bad_kb "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/bad_kb/bad_kb_app.c"
click node_rfid "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/lfrfid/lfrfid.c"
click node_rfid_worker "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/lib/lfrfid/lfrfid_worker_modes.c"
click node_infrared "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/infrared/infrared_app.c"
click node_ir_worker "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/lib/infrared/worker/infrared_worker.c"
click node_nfc "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/nfc/nfc_app.c"
click node_subghz "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c"
click node_archive "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/archive/archive.c"
click node_storage_move "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/system/storage_move_to_sd/storage_move_to_sd.c"
click node_storage_settings "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/settings/storage_settings/storage_settings.c"
click node_mass_storage "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/system/mass_storage/mass_storage_app.c"
click node_storage_api "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/services/storage/storage_external_api.c"
click node_sd_storage "https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/services/storage/storages/storage_ext.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_settings,node_asset_packs,node_user toneBlue
class node_archive,node_storage_move,node_storage_settings,node_mass_storage toneAmber
class node_bad_kb,node_rfid,node_rfid_worker,node_infrared,node_ir_worker,node_nfc,node_subghz toneMint
class node_storage_api,node_sd_storage toneRose
class node_host toneIndigo
```

## Components

### Customization

- [Xtreme Settings](https://github.com/flipper-xfw/xtreme-firmware/tree/dev/applications/settings): `applications/settings`
- [Asset Packs](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/services/desktop/animations/animation_storage.c): `applications/services/desktop/animations/animation_storage.c`

### File Management

- [File Browser](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/archive/archive.c): `applications/main/archive/archive.c`
- [Move to SD](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/system/storage_move_to_sd/storage_move_to_sd.c): `applications/system/storage_move_to_sd/storage_move_to_sd.c`
- [Storage Settings](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/settings/storage_settings/storage_settings.c): `applications/settings/storage_settings/storage_settings.c`
- [Mass Storage](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/system/mass_storage/mass_storage_app.c): `applications/system/mass_storage/mass_storage_app.c`

### Radio Tools

- [Bad Keyboard](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/bad_kb/bad_kb_app.c): `applications/main/bad_kb/bad_kb_app.c`
- [LF RFID](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/lfrfid/lfrfid.c): `applications/main/lfrfid/lfrfid.c`
- [RFID Worker](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/lib/lfrfid/lfrfid_worker_modes.c): `lib/lfrfid/lfrfid_worker_modes.c`
- [Infrared App](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/infrared/infrared_app.c): `applications/main/infrared/infrared_app.c`
- [Infrared Worker](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/lib/infrared/worker/infrared_worker.c): `lib/infrared/worker/infrared_worker.c`
- [NFC App](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/nfc/nfc_app.c): `applications/main/nfc/nfc_app.c`
- [Sub-GHz Tools](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c): `applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c`

### Platform Services

- [Storage API](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/services/storage/storage_external_api.c): `applications/services/storage/storage_external_api.c`
- [SD Storage](https://github.com/flipper-xfw/xtreme-firmware/blob/dev/applications/services/storage/storages/storage_ext.c): `applications/services/storage/storages/storage_ext.c`

### Other components

- **Device User**
- **USB Host**

## Connections

- Device User → Xtreme Settings: configures
- Xtreme Settings → Asset Packs: selects pack
- Device User → Bad Keyboard: runs payload
- Bad Keyboard → USB Host: emulates keyboard
- Device User → LF RFID: reads or writes
- LF RFID → RFID Worker: uses worker
- Device User → Infrared App: learns or sends
- Infrared App → Infrared Worker: uses worker
- Device User → NFC App: scans cards
- Device User → Sub-GHz Tools: uses radio tools
- Device User → File Browser: manages files
- Device User → Move to SD: moves files (evidence: `applications/system/storage_move_to_sd/storage_move_to_sd.c`)
- Device User → Storage Settings: checks storage (evidence: `applications/settings/storage_settings/storage_settings.c`)
- Storage Settings → Storage API: benchmarks storage
- Move to SD → Storage API: merges files (evidence: `applications/system/storage_move_to_sd/storage_move_to_sd.c`)
- Storage API → SD Storage: dispatches operations
- Device User → Mass Storage: exports storage (evidence: `applications/system/mass_storage/mass_storage_app.c`)
- Mass Storage → USB Host: shares disk
