# ch0pin/rdx architecture

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

- Interactive diagram: https://gitdiagram.com/ch0pin/rdx
- Repository: https://github.com/ch0pin/rdx

## Overview

RDX is a desktop Android reverse-engineering tool: users open an APK or DEX, inspect reconstructed Java or DEX, and investigate relationships, manifest data, and resources. The native Rust engine parses DEX and renders mixed Java/disassembly; GUI search, navigation, and MCP expose investigation workflows. README capabilities fill in product branches not represented in the sampled excerpts, so some subsystem links are documented capabilities rather than verified call sites.

Main entry points: [`src/ui.rs`](https://github.com/ch0pin/rdx/blob/main/src/ui.rs) (Desktop UI), [`src/engine.rs`](https://github.com/ch0pin/rdx/blob/main/src/engine.rs) (Engine facade), [`src/native_engine.rs`](https://github.com/ch0pin/rdx/blob/main/src/native_engine.rs) (Native DEX engine), [`src/search/streaming.rs`](https://github.com/ch0pin/rdx/blob/main/src/search/streaming.rs) (Streaming search)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App entry"]
  node_main["App and CLI<br/>[main.rs]"]
  node_ui["Desktop UI<br/>[ui.rs]"]
end

subgraph group_engine["DEX engine"]
  node_engine["Engine facade<br/>[engine.rs]"]
  node_native["Native DEX engine<br/>[native_engine.rs]"]
  node_dex["DEX parser<br/>[native_dex.rs]"]
  node_java["Java reconstruction<br/>[mod.rs]"]
  node_disassembly["DEX disassembly"]
end

subgraph group_investigation["Code investigation"]
  node_search["Streaming search<br/>[streaming.rs]"]
  node_search_index[("Search index<br/>[search_index.rs]")]
  node_navigation["Code navigation<br/>[navigation.rs]"]
  node_usages["Usages and calls<br/>[usages.rs]"]
  node_callgraph["Call graph<br/>[call_graph.rs]"]
end

subgraph group_inspection["APK inspection"]
  node_manifest["Manifest inspection<br/>[apk.rs]"]
  node_resources["Resource inspection"]
  node_export["File export<br/>[export.rs]"]
end

subgraph group_interfaces["User interfaces"]
  node_codeview["Code viewer<br/>[code_view.rs]"]
  node_mcp["MCP server<br/>[mcp.rs]"]
  node_plugin["Plugin protocol<br/>[plugin.rs]"]
  node_settings["Workflow settings<br/>[settings.rs]"]
end

node_user(("Engineer"))
node_assistant(("MCP assistant"))
node_input["APK / DEX"]

node_user -->|"opens project"| node_ui
node_user -->|"runs CLI"| node_main
node_input -->|"opens APK/DEX"| node_engine
node_main -->|"launches GUI"| node_ui
node_ui -->|"requests decompilation"| node_engine
node_engine -->|"delegates operations"| node_native
node_native -->|"parses DEX"| node_dex
node_native -->|"reconstructs source"| node_java
node_native -->|"renders fallback"| node_disassembly
node_ui -->|"starts searches"| node_search
node_search -->|"fetches source"| node_engine
node_search -->|"checks cached results"| node_search_index
node_ui -->|"navigates declarations"| node_navigation
node_ui -->|"finds references"| node_usages
node_ui -->|"explores calls"| node_callgraph
node_ui -->|"inspects manifest"| node_manifest
node_ui -->|"inspects resources"| node_resources
node_ui -->|"exports files"| node_export
node_ui -->|"displays code"| node_codeview
node_ui -->|"configures workflow"| node_settings
node_assistant -->|"sends requests"| node_mcp
node_mcp -->|"inspects project"| node_engine
node_ui -.->|"uses optional protocol"| node_plugin

click node_main "https://github.com/ch0pin/rdx/blob/main/src/main.rs"
click node_ui "https://github.com/ch0pin/rdx/blob/main/src/ui.rs"
click node_engine "https://github.com/ch0pin/rdx/blob/main/src/engine.rs"
click node_native "https://github.com/ch0pin/rdx/blob/main/src/native_engine.rs"
click node_dex "https://github.com/ch0pin/rdx/blob/main/src/native_dex.rs"
click node_java "https://github.com/ch0pin/rdx/blob/main/src/native_java/mod.rs"
click node_disassembly "https://github.com/ch0pin/rdx/blob/main/src/native_disassembly.rs"
click node_search "https://github.com/ch0pin/rdx/blob/main/src/search/streaming.rs"
click node_search_index "https://github.com/ch0pin/rdx/blob/main/src/search_index.rs"
click node_navigation "https://github.com/ch0pin/rdx/blob/main/src/navigation.rs"
click node_usages "https://github.com/ch0pin/rdx/blob/main/src/usages.rs"
click node_callgraph "https://github.com/ch0pin/rdx/blob/main/src/call_graph.rs"
click node_codeview "https://github.com/ch0pin/rdx/blob/main/src/code_view.rs"
click node_manifest "https://github.com/ch0pin/rdx/blob/main/src/apk.rs"
click node_resources "https://github.com/ch0pin/rdx/blob/main/src/native_resources.rs"
click node_export "https://github.com/ch0pin/rdx/blob/main/src/export.rs"
click node_mcp "https://github.com/ch0pin/rdx/blob/main/src/mcp.rs"
click node_plugin "https://github.com/ch0pin/rdx/blob/main/src/plugin.rs"
click node_settings "https://github.com/ch0pin/rdx/blob/main/src/settings.rs"

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_main,node_ui toneBlue
class node_engine,node_native,node_dex,node_java,node_disassembly toneAmber
class node_search,node_search_index,node_navigation,node_usages,node_callgraph toneMint
class node_manifest,node_resources,node_export toneRose
class node_codeview,node_mcp,node_plugin,node_settings,node_user,node_assistant,node_input toneIndigo
```

## Components

### App entry

- [App and CLI](https://github.com/ch0pin/rdx/blob/main/src/main.rs): `src/main.rs`
- [Desktop UI](https://github.com/ch0pin/rdx/blob/main/src/ui.rs): `src/ui.rs`

### DEX engine

- [Engine facade](https://github.com/ch0pin/rdx/blob/main/src/engine.rs): `src/engine.rs`
- [Native DEX engine](https://github.com/ch0pin/rdx/blob/main/src/native_engine.rs): `src/native_engine.rs`
- [DEX parser](https://github.com/ch0pin/rdx/blob/main/src/native_dex.rs): `src/native_dex.rs`
- [Java reconstruction](https://github.com/ch0pin/rdx/blob/main/src/native_java/mod.rs): `src/native_java/mod.rs`
- [DEX disassembly](https://github.com/ch0pin/rdx/blob/main/src/native_disassembly.rs): `src/native_disassembly.rs`

### Code investigation

- [Streaming search](https://github.com/ch0pin/rdx/blob/main/src/search/streaming.rs): `src/search/streaming.rs`
- [Search index](https://github.com/ch0pin/rdx/blob/main/src/search_index.rs): `src/search_index.rs`
- [Code navigation](https://github.com/ch0pin/rdx/blob/main/src/navigation.rs): `src/navigation.rs`
- [Usages and calls](https://github.com/ch0pin/rdx/blob/main/src/usages.rs): `src/usages.rs`
- [Call graph](https://github.com/ch0pin/rdx/blob/main/src/call_graph.rs): `src/call_graph.rs`

### APK inspection

- [Manifest inspection](https://github.com/ch0pin/rdx/blob/main/src/apk.rs): `src/apk.rs`
- [Resource inspection](https://github.com/ch0pin/rdx/blob/main/src/native_resources.rs): `src/native_resources.rs`
- [File export](https://github.com/ch0pin/rdx/blob/main/src/export.rs): `src/export.rs`

### User interfaces

- [Code viewer](https://github.com/ch0pin/rdx/blob/main/src/code_view.rs): `src/code_view.rs`
- [MCP server](https://github.com/ch0pin/rdx/blob/main/src/mcp.rs): `src/mcp.rs`
- [Plugin protocol](https://github.com/ch0pin/rdx/blob/main/src/plugin.rs): `src/plugin.rs`
- [Workflow settings](https://github.com/ch0pin/rdx/blob/main/src/settings.rs): `src/settings.rs`

### Other components

- **Engineer**
- **MCP assistant**
- **APK / DEX**

## Connections

- Engineer → Desktop UI: opens project
- Engineer → App and CLI: runs CLI
- APK / DEX → Engine facade: opens APK/DEX
- App and CLI → Desktop UI: launches GUI
- Desktop UI → Engine facade: requests decompilation
- Engine facade → Native DEX engine: delegates operations
- Native DEX engine → DEX parser: parses DEX
- Native DEX engine → Java reconstruction: reconstructs source
- Native DEX engine → DEX disassembly: renders fallback
- Desktop UI → Streaming search: starts searches
- Streaming search → Engine facade: fetches source
- Streaming search → Search index: checks cached results
- Desktop UI → Code navigation: navigates declarations
- Desktop UI → Usages and calls: finds references
- Desktop UI → Call graph: explores calls
- Desktop UI → Manifest inspection: inspects manifest
- Desktop UI → Resource inspection: inspects resources
- Desktop UI → File export: exports files
- Desktop UI → Code viewer: displays code
- Desktop UI → Workflow settings: configures workflow
- MCP assistant → MCP server: sends requests
- MCP server → Engine facade: inspects project
- Desktop UI → Plugin protocol: uses optional protocol
