# darkflippers/unleashed-firmware architecture

> Architecture diagram of the GitHub repository darkflippers/unleashed-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/darkflippers/unleashed-firmware
- Repository: https://github.com/darkflippers/unleashed-firmware

## Overview

Unleashed is custom Flipper Zero firmware: it extends the device’s built-in applications and libraries while aiming to remain compatible with the original firmware’s API and applications. A principal user workflow is to launch a device app, choose an operation, interact with a radio or tag, and—for workflows that support it—save or replay captured data. The tree shows substantial app and protocol areas, plus shared storage and plugin services. README capability statements preserve major product branches; several runtime connections are not evidenced by the excerpts, so they are omitted rather than inferred.

Main entry points: [`applications/services/storage/storage_external_api.c`](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/storage/storage_external_api.c) (Storage API), [`applications/main/subghz`](https://github.com/darkflippers/unleashed-firmware/tree/dev/applications/main/subghz) (Sub-GHz app), [`applications/main/infrared/infrared_app.c`](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/infrared/infrared_app.c) (Infrared app), [`applications/main/lfrfid/lfrfid.c`](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/lfrfid/lfrfid.c) (LF RFID app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_device_apps["Device applications"]
  node_archive["File archive<br/>[archive.c]"]
  node_badusb["Bad USB<br/>[bad_usb_app.c]"]
  node_gpio["GPIO and UART<br/>[gpio_app.c]"]
end

subgraph group_radio_apps["Radio applications"]
  node_subghz["Sub-GHz app"]
  node_subghz_worker["Sub-GHz workers"]
  node_frequency_analyzer["Frequency analyzer"]
  node_infrared["Infrared app<br/>[infrared_app.c]"]
  node_ir_worker["Infrared worker<br/>[infrared_worker.c]"]
end

subgraph group_tag_apps["Tag applications"]
  node_nfc["NFC app"]
  node_lfrfid["LF RFID app<br/>[lfrfid.c]"]
  node_lfrfid_worker["LF RFID worker"]
  node_ibutton["iButton worker<br/>[ibutton_worker.c]"]
end

subgraph group_shared_services["Shared services"]
  node_storage_api["Storage API"]
  node_sd_storage[("SD storage<br/>[storage_ext.c]")]
  node_storage_settings["Storage settings<br/>[storage_settings.c]"]
  node_scene_manager["Scene manager<br/>[scene_manager.c]"]
end

subgraph group_extensibility["Extensions and tools"]
  node_plugin_manager["Plugin manager<br/>[plugin_manager.c]"]
  node_js_storage["JavaScript storage<br/>[js_storage.c]"]
  node_usb_mass_storage["USB mass storage<br/>[mass_storage_usb.c]"]
  node_bt_keys[("Bluetooth keys<br/>[bt_keys_storage.c]")]
end

node_user(("Device user"))

node_user -->|"uses"| node_subghz
node_user -->|"uses"| node_infrared
node_user -->|"uses"| node_nfc
node_user -->|"uses"| node_lfrfid
node_user -.->|"uses"| node_ibutton
node_user -.->|"uses"| node_badusb
node_user -.->|"uses"| node_archive
node_user -.->|"uses"| node_gpio
node_subghz -->|"includes"| node_frequency_analyzer
node_subghz -.->|"uses"| node_subghz_worker
node_infrared -.->|"uses"| node_ir_worker
node_lfrfid -->|"uses"| node_lfrfid_worker
node_storage_settings -->|"benchmarks"| node_storage_api
node_storage_api -.->|"dispatches"| node_sd_storage
node_js_storage -->|"uses"| node_storage_api
node_plugin_manager -->|"reads plugins"| node_storage_api
node_usb_mass_storage -.->|"exposes USB disk"| node_user

click node_archive "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/archive/archive.c"
click node_badusb "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/bad_usb/bad_usb_app.c"
click node_gpio "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/gpio/gpio_app.c"
click node_subghz "https://github.com/darkflippers/unleashed-firmware/tree/dev/applications/main/subghz"
click node_subghz_worker "https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/subghz/subghz_tx_rx_worker.c"
click node_frequency_analyzer "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/subghz/plugins/frequency_analyzer/subghz_frequency_analyzer_worker.c"
click node_infrared "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/infrared/infrared_app.c"
click node_ir_worker "https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/infrared/worker/infrared_worker.c"
click node_nfc "https://github.com/darkflippers/unleashed-firmware/tree/dev/applications/main/nfc"
click node_lfrfid "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/lfrfid/lfrfid.c"
click node_lfrfid_worker "https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/lfrfid/lfrfid_worker_modes.c"
click node_ibutton "https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/ibutton/ibutton_worker.c"
click node_storage_api "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/storage/storage_external_api.c"
click node_sd_storage "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/storage/storages/storage_ext.c"
click node_storage_settings "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/settings/storage_settings/storage_settings.c"
click node_scene_manager "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/gui/scene_manager.c"
click node_plugin_manager "https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/flipper_application/plugins/plugin_manager.c"
click node_js_storage "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/system/js_app/modules/js_storage.c"
click node_usb_mass_storage "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/system/js_app/modules/js_usbdisk/mass_storage_usb.c"
click node_bt_keys "https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/bt/bt_service/bt_keys_storage.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_archive,node_badusb,node_gpio,node_user toneBlue
class node_subghz,node_subghz_worker,node_frequency_analyzer,node_infrared,node_ir_worker toneAmber
class node_nfc,node_lfrfid,node_lfrfid_worker,node_ibutton toneMint
class node_storage_api,node_sd_storage,node_storage_settings,node_scene_manager toneRose
class node_plugin_manager,node_js_storage,node_usb_mass_storage,node_bt_keys toneIndigo
```

## Components

### Device applications

- [File archive](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/archive/archive.c): `applications/main/archive/archive.c`
- [Bad USB](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/bad_usb/bad_usb_app.c): `applications/main/bad_usb/bad_usb_app.c`
- [GPIO and UART](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/gpio/gpio_app.c): `applications/main/gpio/gpio_app.c`

### Radio applications

- [Sub-GHz app](https://github.com/darkflippers/unleashed-firmware/tree/dev/applications/main/subghz): `applications/main/subghz`
- [Sub-GHz workers](https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/subghz/subghz_tx_rx_worker.c): `lib/subghz/subghz_tx_rx_worker.c`
- [Frequency analyzer](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/subghz/plugins/frequency_analyzer/subghz_frequency_analyzer_worker.c): `applications/main/subghz/plugins/frequency_analyzer/subghz_frequency_analyzer_worker.c`
- [Infrared app](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/infrared/infrared_app.c): `applications/main/infrared/infrared_app.c`
- [Infrared worker](https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/infrared/worker/infrared_worker.c): `lib/infrared/worker/infrared_worker.c`

### Tag applications

- [NFC app](https://github.com/darkflippers/unleashed-firmware/tree/dev/applications/main/nfc): `applications/main/nfc`
- [LF RFID app](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/main/lfrfid/lfrfid.c): `applications/main/lfrfid/lfrfid.c`
- [LF RFID worker](https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/lfrfid/lfrfid_worker_modes.c): `lib/lfrfid/lfrfid_worker_modes.c`
- [iButton worker](https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/ibutton/ibutton_worker.c): `lib/ibutton/ibutton_worker.c`

### Shared services

- [Storage API](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/storage/storage_external_api.c): `applications/services/storage/storage_external_api.c`
- [SD storage](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/storage/storages/storage_ext.c): `applications/services/storage/storages/storage_ext.c`
- [Storage settings](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/settings/storage_settings/storage_settings.c): `applications/settings/storage_settings/storage_settings.c`
- [Scene manager](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/gui/scene_manager.c): `applications/services/gui/scene_manager.c`

### Extensions and tools

- [Plugin manager](https://github.com/darkflippers/unleashed-firmware/blob/dev/lib/flipper_application/plugins/plugin_manager.c): `lib/flipper_application/plugins/plugin_manager.c`
- [JavaScript storage](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/system/js_app/modules/js_storage.c): `applications/system/js_app/modules/js_storage.c`
- [USB mass storage](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/system/js_app/modules/js_usbdisk/mass_storage_usb.c): `applications/system/js_app/modules/js_usbdisk/mass_storage_usb.c`
- [Bluetooth keys](https://github.com/darkflippers/unleashed-firmware/blob/dev/applications/services/bt/bt_service/bt_keys_storage.c): `applications/services/bt/bt_service/bt_keys_storage.c`

### Other components

- **Device user**

## Connections

- Device user → Sub-GHz app: uses
- Device user → Infrared app: uses
- Device user → NFC app: uses
- Device user → LF RFID app: uses
- Device user → iButton worker: uses
- Device user → Bad USB: uses
- Device user → File archive: uses
- Device user → GPIO and UART: uses
- Sub-GHz app → Frequency analyzer: includes
- Sub-GHz app → Sub-GHz workers: uses
- Infrared app → Infrared worker: uses
- LF RFID app → LF RFID worker: uses (evidence: `lib/lfrfid/lfrfid_worker_modes.c`)
- Storage settings → Storage API: benchmarks
- Storage API → SD storage: dispatches
- JavaScript storage → Storage API: uses (evidence: `applications/system/js_app/modules/js_storage.c`)
- Plugin manager → Storage API: reads plugins (evidence: `lib/flipper_application/plugins/plugin_manager.c`)
- USB mass storage → Device user: exposes USB disk
