# roguemaster/flipperzero-firmware-wplugins architecture

> Architecture diagram of the GitHub repository roguemaster/flipperzero-firmware-wplugins, 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/roguemaster/flipperzero-firmware-wplugins
- Repository: https://github.com/roguemaster/flipperzero-firmware-wplugins

## Overview

RogueMaster is custom Flipper Zero firmware: it combines device services with built-in and community applications. A representative user-to-result path is selecting an application and using its interface to perform a device task; the tree shows broad application domains, while the excerpts chiefly establish storage behavior. The graph therefore preserves the documented application breadth and the supported storage/API relationships without inferring calls between unsampled subsystems. Several application relationships are necessarily omitted because their wiring was not shown.

Main entry points: [`applications/services/storage/storage_external_api.c`](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storage_external_api.c) (Storage API), [`applications/settings/storage_settings/storage_settings.c`](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/settings/storage_settings/storage_settings.c) (Storage settings), [`targets/f7/src/main.c`](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/targets/f7/src/main.c) (Flipper firmware), [`applications/services/storage/storages/storage_ext.c`](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storages/storage_ext.c) (SD backend)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["Device services"]
  node_firmware["Flipper firmware<br/>[main.c]"]
  node_loader["Application loader<br/>[loader.h]"]
  node_storage_api["Storage API"]
  node_sd_backend["SD backend<br/>[storage_ext.c]"]
end

subgraph group_apps["Applications"]
  node_rfid["LF RFID<br/>[lfrfid_i.h]"]
  node_subghz["Sub-GHz"]
  node_infrared["Infrared"]
  node_debug_tools["Debug tools<br/>[accessor_event.h]"]
  node_storage_settings["Storage settings<br/>[storage_settings.c]"]
  node_settings_scenes["Storage operations"]
end

subgraph group_community["Community apps"]
  node_badusb["Bad USB Pro<br/>[script_engine.c]"]
  node_flipperpwn["FlipperPwn<br/>[payload_engine.c]"]
  node_dnd["D&amp;D persistence<br/>[dnd_storage.c]"]
  node_breachmap["BreachMap sessions<br/>[storage_manager.c]"]
  node_js_modules["JavaScript modules<br/>[js_modules.h]"]
  node_js_storage["JavaScript storage<br/>[js_storage.c]"]
end

subgraph group_storage["Storage"]
  node_filesystem["Filesystem service"]
  node_sd_card[("SD card filesystem<br/>[storage_ext.c]")]
  node_storage_header["Storage contracts<br/>[storage.h]"]
  node_storage_internal["Storage internals"]
end

node_user(("Device user"))

node_user -.->|"uses"| node_firmware
node_firmware -.->|"offers apps"| node_loader
node_user -.->|"selects"| node_rfid
node_user -.->|"selects"| node_subghz
node_user -.->|"selects"| node_infrared
node_user -.->|"selects"| node_badusb
node_user -.->|"selects"| node_flipperpwn
node_user -.->|"opens"| node_storage_settings
node_storage_settings -.->|"uses"| node_storage_api
node_storage_settings -.->|"dispatches"| node_settings_scenes
node_js_storage -->|"calls"| node_storage_api
node_storage_api -.->|"dispatches"| node_sd_backend
node_storage_api -->|"implements"| node_storage_header
node_sd_backend -->|"uses"| node_storage_internal

click node_firmware "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/targets/f7/src/main.c"
click node_loader "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/loader/loader.h"
click node_storage_api "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storage_external_api.c"
click node_sd_backend "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storages/storage_ext.c"
click node_rfid "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/main/lfrfid/lfrfid_i.h"
click node_subghz "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c"
click node_infrared "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/main/infrared/scenes/infrared_scene_error_databases.c"
click node_debug_tools "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/debug/accessor/accessor_event.h"
click node_storage_settings "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/settings/storage_settings/storage_settings.c"
click node_badusb "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/external/bad_usb_pro/script_engine.c"
click node_flipperpwn "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/external/flipperpwn/payload_engine.c"
click node_dnd "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/external/dnd/dnd_storage.c"
click node_breachmap "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/external/breachmap/modules/storage_manager.c"
click node_js_modules "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/system/js_app/js_modules.h"
click node_js_storage "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/system/js_app/modules/js_storage.c"
click node_filesystem "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storage_external_api.c"
click node_sd_card "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storages/storage_ext.c"
click node_storage_header "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storage.h"
click node_storage_internal "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/filesystem_api_internal.h"
click node_settings_scenes "https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/settings/storage_settings/scenes/storage_settings_scene_benchmark.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_firmware,node_loader,node_storage_api,node_sd_backend,node_user toneBlue
class node_rfid,node_subghz,node_infrared,node_debug_tools,node_storage_settings,node_settings_scenes toneAmber
class node_badusb,node_flipperpwn,node_dnd,node_breachmap,node_js_modules,node_js_storage toneMint
class node_filesystem,node_sd_card,node_storage_header,node_storage_internal toneRose
```

## Components

### Device services

- [Flipper firmware](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/targets/f7/src/main.c): `targets/f7/src/main.c`
- [Application loader](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/loader/loader.h): `applications/services/loader/loader.h`
- [Storage API](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storage_external_api.c): `applications/services/storage/storage_external_api.c`
- [SD backend](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storages/storage_ext.c): `applications/services/storage/storages/storage_ext.c`

### Applications

- [LF RFID](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/main/lfrfid/lfrfid_i.h): `applications/main/lfrfid/lfrfid_i.h`
- [Sub-GHz](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c): `applications/main/subghz/helpers/subghz_frequency_analyzer_worker.c`
- [Infrared](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/main/infrared/scenes/infrared_scene_error_databases.c): `applications/main/infrared/scenes/infrared_scene_error_databases.c`
- [Debug tools](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/debug/accessor/accessor_event.h): `applications/debug/accessor/accessor_event.h`
- [Storage settings](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/settings/storage_settings/storage_settings.c): `applications/settings/storage_settings/storage_settings.c`
- [Storage operations](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/settings/storage_settings/scenes/storage_settings_scene_benchmark.c): `applications/settings/storage_settings/scenes/storage_settings_scene_benchmark.c`

### Community apps

- [Bad USB Pro](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/external/bad_usb_pro/script_engine.c): `applications/external/bad_usb_pro/script_engine.c`
- [FlipperPwn](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/external/flipperpwn/payload_engine.c): `applications/external/flipperpwn/payload_engine.c`
- [D&D persistence](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/external/dnd/dnd_storage.c): `applications/external/dnd/dnd_storage.c`
- [BreachMap sessions](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/external/breachmap/modules/storage_manager.c): `applications/external/breachmap/modules/storage_manager.c`
- [JavaScript modules](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/system/js_app/js_modules.h): `applications/system/js_app/js_modules.h`
- [JavaScript storage](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/system/js_app/modules/js_storage.c): `applications/system/js_app/modules/js_storage.c`

### Storage

- [Filesystem service](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storage_external_api.c): `applications/services/storage/storage_external_api.c`
- [SD card filesystem](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storages/storage_ext.c): `applications/services/storage/storages/storage_ext.c`
- [Storage contracts](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/storage.h): `applications/services/storage/storage.h`
- [Storage internals](https://github.com/roguemaster/flipperzero-firmware-wplugins/blob/420/applications/services/storage/filesystem_api_internal.h): `applications/services/storage/filesystem_api_internal.h`

### Other components

- **Device user**

## Connections

- Device user → Flipper firmware: uses
- Flipper firmware → Application loader: offers apps
- Device user → LF RFID: selects
- Device user → Sub-GHz: selects
- Device user → Infrared: selects
- Device user → Bad USB Pro: selects
- Device user → FlipperPwn: selects
- Device user → Storage settings: opens
- Storage settings → Storage API: uses (evidence: `applications/settings/storage_settings/storage_settings.c`)
- Storage settings → Storage operations: dispatches (evidence: `applications/settings/storage_settings/storage_settings.c`)
- JavaScript storage → Storage API: calls (evidence: `applications/system/js_app/modules/js_storage.c`)
- Storage API → SD backend: dispatches
- Storage API → Storage contracts: implements (evidence: `applications/services/storage/storage_external_api.c`)
- SD backend → Storage internals: uses (evidence: `applications/services/storage/storages/storage_ext.c`)
