# rfidresearchgroup/proxmark3 architecture

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

- Interactive diagram: https://gitdiagram.com/rfidresearchgroup/proxmark3
- Repository: https://github.com/rfidresearchgroup/proxmark3

## Overview

Proxmark is an RFID analysis and programming platform: users issue client commands or run automation, the client communicates with device firmware, and the firmware interacts with RFID tags and peripherals. The README also documents standalone modes and broad command/script functionality, reflected here as separate capabilities. Source excerpts are partial, so the graph shows only high-level documented workflow links and avoids inferring detailed module-to-module calls.

Main entry points: [`client/src/comms.c`](https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/comms.c) (Device communications), [`armsrc/appmain.c`](https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/appmain.c) (Firmware application), [`client/src/cmdparser.c`](https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdparser.c) (Command dispatch), [`armsrc/cmd.c`](https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/cmd.c) (Firmware commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client and automation"]
  node_client_commands["Command interface<br/>[cmdmain.c]"]
  node_command_dispatch["Command dispatch<br/>[cmdparser.c]"]
  node_hf_commands["HF commands<br/>[cmdhf.c]"]
  node_lf_commands["LF commands<br/>[cmdlf.c]"]
  node_scripts["Python scripts<br/>[pm3.py]"]
  node_passport_app["ePassport viewer<br/>[app.py]"]
  node_passport_client["Passport PM3 client<br/>[client.py]"]
  node_comms["Device communications<br/>[comms.c]"]
end

subgraph group_device["Device firmware"]
  node_firmware_app["Firmware application<br/>[appmain.c]"]
  node_firmware_commands["Firmware commands<br/>[cmd.c]"]
end

subgraph group_rf["RFID capabilities"]
  node_hf_protocols["HF protocols<br/>[iso14443a.c]"]
  node_lf_sampling["LF sampling<br/>[lfsampling.c]"]
  node_standalone["Standalone modes<br/>[standalone.h]"]
end

subgraph group_platform["Hardware platform"]
  node_flash_filesystem[("Flash filesystem<br/>[spiffs.c]")]
  node_bootrom["Boot ROM<br/>[bootrom.c]"]
  node_hardware_drivers["Hardware drivers"]
end

node_user(("Operator"))
node_tag(("RFID tag"))

node_user -->|"issues commands"| node_client_commands
node_client_commands -->|"dispatches"| node_command_dispatch
node_command_dispatch -->|"dispatches"| node_hf_commands
node_command_dispatch -->|"dispatches"| node_lf_commands
node_hf_commands -->|"sends commands"| node_comms
node_lf_commands -->|"sends commands"| node_comms
node_scripts -->|"automates commands"| node_comms
node_user -->|"uses viewer"| node_passport_app
node_passport_app -->|"starts reads"| node_passport_client
node_passport_client -->|"runs PM3"| node_comms
node_comms -->|"transfers commands"| node_firmware_app
node_firmware_app -->|"dispatches"| node_firmware_commands
node_firmware_commands -->|"runs HF operations"| node_hf_protocols
node_firmware_commands -->|"runs LF operations"| node_lf_sampling
node_hf_protocols -->|"communicates"| node_tag
node_lf_sampling -->|"samples"| node_tag
node_user -->|"starts mode"| node_standalone
node_standalone -->|"uses HF protocols"| node_hf_protocols
node_standalone -->|"uses LF sampling"| node_lf_sampling
node_firmware_app -->|"uses storage"| node_flash_filesystem
node_firmware_app -->|"controls hardware"| node_hardware_drivers

click node_client_commands "https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdmain.c"
click node_command_dispatch "https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdparser.c"
click node_hf_commands "https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdhf.c"
click node_lf_commands "https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdlf.c"
click node_scripts "https://github.com/rfidresearchgroup/proxmark3/blob/master/client/pyscripts/pm3.py"
click node_passport_app "https://github.com/rfidresearchgroup/proxmark3/blob/master/tools/ePassport/epassport/app.py"
click node_passport_client "https://github.com/rfidresearchgroup/proxmark3/blob/master/tools/ePassport/epassport/pm3/client.py"
click node_comms "https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/comms.c"
click node_firmware_app "https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/appmain.c"
click node_firmware_commands "https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/cmd.c"
click node_hf_protocols "https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/iso14443a.c"
click node_lf_sampling "https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/lfsampling.c"
click node_standalone "https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/Standalone/standalone.h"
click node_flash_filesystem "https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/spiffs.c"
click node_bootrom "https://github.com/rfidresearchgroup/proxmark3/blob/master/bootrom/bootrom.c"
click node_hardware_drivers "https://github.com/rfidresearchgroup/proxmark3/blob/master/armlib/at32_sys/drivers/src/at32f435_437_gpio.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_client_commands,node_command_dispatch,node_hf_commands,node_lf_commands,node_scripts,node_passport_app,node_passport_client,node_comms toneBlue
class node_firmware_app,node_firmware_commands toneAmber
class node_hf_protocols,node_lf_sampling,node_standalone toneMint
class node_flash_filesystem,node_bootrom,node_hardware_drivers toneRose
class node_user,node_tag toneIndigo
```

## Components

### Client and automation

- [Command interface](https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdmain.c): `client/src/cmdmain.c`
- [Command dispatch](https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdparser.c): `client/src/cmdparser.c`
- [HF commands](https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdhf.c): `client/src/cmdhf.c`
- [LF commands](https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/cmdlf.c): `client/src/cmdlf.c`
- [Python scripts](https://github.com/rfidresearchgroup/proxmark3/blob/master/client/pyscripts/pm3.py): `client/pyscripts/pm3.py`
- [ePassport viewer](https://github.com/rfidresearchgroup/proxmark3/blob/master/tools/ePassport/epassport/app.py): `tools/ePassport/epassport/app.py`
- [Passport PM3 client](https://github.com/rfidresearchgroup/proxmark3/blob/master/tools/ePassport/epassport/pm3/client.py): `tools/ePassport/epassport/pm3/client.py`
- [Device communications](https://github.com/rfidresearchgroup/proxmark3/blob/master/client/src/comms.c): `client/src/comms.c`

### Device firmware

- [Firmware application](https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/appmain.c): `armsrc/appmain.c`
- [Firmware commands](https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/cmd.c): `armsrc/cmd.c`

### RFID capabilities

- [HF protocols](https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/iso14443a.c): `armsrc/iso14443a.c`
- [LF sampling](https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/lfsampling.c): `armsrc/lfsampling.c`
- [Standalone modes](https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/Standalone/standalone.h): `armsrc/Standalone/standalone.h`

### Hardware platform

- [Flash filesystem](https://github.com/rfidresearchgroup/proxmark3/blob/master/armsrc/spiffs.c): `armsrc/spiffs.c`
- [Boot ROM](https://github.com/rfidresearchgroup/proxmark3/blob/master/bootrom/bootrom.c): `bootrom/bootrom.c`
- [Hardware drivers](https://github.com/rfidresearchgroup/proxmark3/blob/master/armlib/at32_sys/drivers/src/at32f435_437_gpio.c): `armlib/at32_sys/drivers/src/at32f435_437_gpio.c`

### Other components

- **Operator**
- **RFID tag**

## Connections

- Operator → Command interface: issues commands
- Command interface → Command dispatch: dispatches
- Command dispatch → HF commands: dispatches
- Command dispatch → LF commands: dispatches
- HF commands → Device communications: sends commands
- LF commands → Device communications: sends commands
- Python scripts → Device communications: automates commands
- Operator → ePassport viewer: uses viewer
- ePassport viewer → Passport PM3 client: starts reads
- Passport PM3 client → Device communications: runs PM3
- Device communications → Firmware application: transfers commands
- Firmware application → Firmware commands: dispatches
- Firmware commands → HF protocols: runs HF operations
- Firmware commands → LF sampling: runs LF operations
- HF protocols → RFID tag: communicates
- LF sampling → RFID tag: samples
- Operator → Standalone modes: starts mode
- Standalone modes → HF protocols: uses HF protocols
- Standalone modes → LF sampling: uses LF sampling
- Firmware application → Flash filesystem: uses storage
- Firmware application → Hardware drivers: controls hardware
