# bhanutej10/mtrp architecture

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

- Interactive diagram: https://gitdiagram.com/bhanutej10/mtrp
- Repository: https://github.com/bhanutej10/mtrp

## Overview

MTRP is a Kotlin Multiplatform mesh-messaging protocol and reference SDK, with Android and desktop user interfaces. The principal workflow is composing a message, preparing its identity and encrypted packet, selecting and sending over an available channel, then relaying packets toward their destination; the SDK also supports discovery, adaptive channel scoring, fragmentation, and store-and-forward. Core routing and channel-selection calls are visible in sampled source, while several security, transport, and relay details are documented capabilities whose implementation wiring was not sampled.

Main entry points: [`sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt`](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt) (Messaging API), [`app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt`](https://github.com/bhanutej10/mtrp/blob/master/app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt) (Desktop SDK setup), [`sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/ChannelManager.kt`](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/ChannelManager.kt) (Channel manager), [`sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/MeshRouter.kt`](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/MeshRouter.kt) (Mesh router)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client applications"]
  node_android_ui["Android messaging UI"]
  node_desktop_ui["Desktop UI"]
  node_desktop_entry["Desktop startup<br/>[Main.kt]"]
  node_desktop_sdk["Desktop SDK setup<br/>[DesktopMtrpSdk.kt]"]
end

subgraph group_protocol["Messaging and security"]
  node_api["Messaging API<br/>[MtrpApi.kt]"]
  node_identity_crypto["Identity and cryptography"]
  node_packet["Packet format<br/>[MtrpPacket.kt]"]
  node_fragmentation["Fragment assembly"]
end

subgraph group_routing["Routing and channel management"]
  node_router["Mesh router<br/>[MeshRouter.kt]"]
  node_neighbours_routes[("Neighbour and route tables<br/>[NeighbourTable.kt]")]
  node_channel_manager["Channel manager<br/>[ChannelManager.kt]"]
  node_scorer["Adaptive channel scorer<br/>[ChannelScorer.kt]"]
end

subgraph group_connectivity["Transports and delivery"]
  node_queue[("Store-forward queue")]
  node_retry["Retry scheduler<br/>[RetryScheduler.kt]"]
  node_wifi_nostr["WiFi and Nostr"]
  node_wired_lora["Ethernet and LoRa"]
  node_mobile_transports["Mobile transports"]
  node_silent_relay["Silent relay service"]
end

node_android_user(("Android user"))
node_desktop_user(("Desktop user"))

node_android_user -->|"uses"| node_android_ui
node_desktop_user -.->|"uses"| node_desktop_ui
node_desktop_entry -->|"initializes"| node_desktop_sdk
node_desktop_entry -->|"opens"| node_desktop_ui
node_android_ui -->|"calls"| node_api
node_desktop_ui -->|"calls"| node_api
node_desktop_sdk -->|"configures"| node_api
node_api -->|"encrypts"| node_identity_crypto
node_api -->|"builds"| node_packet
node_api -->|"selects channel"| node_channel_manager
node_channel_manager -->|"registers transports"| node_router
node_channel_manager -->|"ranks channels"| node_scorer
node_router -->|"updates tables"| node_neighbours_routes
node_api -.->|"queues delivery"| node_queue
node_retry -.->|"retries queued"| node_queue
node_desktop_sdk -->|"starts"| node_retry
node_desktop_sdk -->|"registers"| node_wifi_nostr
node_desktop_sdk -->|"registers"| node_wired_lora
node_channel_manager -.->|"dispatches"| node_mobile_transports
node_channel_manager -->|"fragments packets"| node_fragmentation
node_fragmentation -->|"reassembles"| node_packet
node_router -.->|"handles relay"| node_silent_relay
node_router -->|"processes incoming"| node_packet

click node_android_ui "https://github.com/bhanutej10/mtrp/tree/master/app/src/androidMain/kotlin/dev/mtrp/app/ui"
click node_desktop_ui "https://github.com/bhanutej10/mtrp/tree/master/app/desktopMain/kotlin/dev/mtrp/desktop"
click node_desktop_entry "https://github.com/bhanutej10/mtrp/blob/master/app/desktopMain/kotlin/dev/mtrp/desktop/Main.kt"
click node_desktop_sdk "https://github.com/bhanutej10/mtrp/blob/master/app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt"
click node_api "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt"
click node_identity_crypto "https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/crypto"
click node_packet "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/packet/MtrpPacket.kt"
click node_fragmentation "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/packet/FragmentAssembler.kt"
click node_router "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/MeshRouter.kt"
click node_neighbours_routes "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/NeighbourTable.kt"
click node_channel_manager "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/ChannelManager.kt"
click node_scorer "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/ChannelScorer.kt"
click node_queue "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/queue/StoreForwardQueue.kt"
click node_retry "https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/queue/RetryScheduler.kt"
click node_wifi_nostr "https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/transport/internet"
click node_wired_lora "https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/transport"
click node_mobile_transports "https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/androidMain/kotlin/dev/mtrp/core/transport"
click node_silent_relay "https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing"

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_android_ui,node_desktop_ui,node_desktop_entry,node_desktop_sdk,node_android_user,node_desktop_user toneBlue
class node_api,node_identity_crypto,node_packet,node_fragmentation toneAmber
class node_router,node_neighbours_routes,node_channel_manager,node_scorer toneMint
class node_queue,node_retry,node_wifi_nostr,node_wired_lora,node_mobile_transports,node_silent_relay toneRose
```

## Components

### Client applications

- [Android messaging UI](https://github.com/bhanutej10/mtrp/tree/master/app/src/androidMain/kotlin/dev/mtrp/app/ui): `app/src/androidMain/kotlin/dev/mtrp/app/ui`
- [Desktop UI](https://github.com/bhanutej10/mtrp/tree/master/app/desktopMain/kotlin/dev/mtrp/desktop): `app/desktopMain/kotlin/dev/mtrp/desktop`
- [Desktop startup](https://github.com/bhanutej10/mtrp/blob/master/app/desktopMain/kotlin/dev/mtrp/desktop/Main.kt): `app/desktopMain/kotlin/dev/mtrp/desktop/Main.kt`
- [Desktop SDK setup](https://github.com/bhanutej10/mtrp/blob/master/app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt): `app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt`

### Messaging and security

- [Messaging API](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt`
- [Identity and cryptography](https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/crypto): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/crypto`
- [Packet format](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/packet/MtrpPacket.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/packet/MtrpPacket.kt`
- [Fragment assembly](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/packet/FragmentAssembler.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/packet/FragmentAssembler.kt`

### Routing and channel management

- [Mesh router](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/MeshRouter.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/MeshRouter.kt`
- [Neighbour and route tables](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/NeighbourTable.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/NeighbourTable.kt`
- [Channel manager](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/ChannelManager.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/ChannelManager.kt`
- [Adaptive channel scorer](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/ChannelScorer.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/ChannelScorer.kt`

### Transports and delivery

- [Store-forward queue](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/queue/StoreForwardQueue.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/queue/StoreForwardQueue.kt`
- [Retry scheduler](https://github.com/bhanutej10/mtrp/blob/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/queue/RetryScheduler.kt): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/queue/RetryScheduler.kt`
- [WiFi and Nostr](https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/transport/internet): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/transport/internet`
- [Ethernet and LoRa](https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/transport): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/transport`
- [Mobile transports](https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/androidMain/kotlin/dev/mtrp/core/transport): `sdk/core/src/androidMain/kotlin/dev/mtrp/core/transport`
- [Silent relay service](https://github.com/bhanutej10/mtrp/tree/master/sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing): `sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing`

### Other components

- **Android user**
- **Desktop user**

## Connections

- Android user → Android messaging UI: uses (evidence: `app/src/androidMain/kotlin/dev/mtrp/app/ui/MtrpNavHost.kt`)
- Desktop user → Desktop UI: uses
- Desktop startup → Desktop SDK setup: initializes (evidence: `app/desktopMain/kotlin/dev/mtrp/desktop/Main.kt`)
- Desktop startup → Desktop UI: opens (evidence: `app/desktopMain/kotlin/dev/mtrp/desktop/Main.kt`)
- Android messaging UI → Messaging API: calls (evidence: `app/src/androidMain/kotlin/dev/mtrp/app/ui/chat/ChatScreen.kt`)
- Desktop UI → Messaging API: calls (evidence: `app/desktopMain/kotlin/dev/mtrp/desktop/ui/MessagesPanel.kt`)
- Desktop SDK setup → Messaging API: configures (evidence: `app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt`)
- Messaging API → Identity and cryptography: encrypts (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt`)
- Messaging API → Packet format: builds (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt`)
- Messaging API → Channel manager: selects channel (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt`)
- Channel manager → Mesh router: registers transports (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/ChannelManager.kt`)
- Channel manager → Adaptive channel scorer: ranks channels (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/ChannelManager.kt`)
- Mesh router → Neighbour and route tables: updates tables (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/MeshRouter.kt`)
- Messaging API → Store-forward queue: queues delivery (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/api/MtrpApi.kt`)
- Retry scheduler → Store-forward queue: retries queued
- Desktop SDK setup → Retry scheduler: starts (evidence: `app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt`)
- Desktop SDK setup → WiFi and Nostr: registers (evidence: `app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt`)
- Desktop SDK setup → Ethernet and LoRa: registers (evidence: `app/desktopMain/kotlin/dev/mtrp/desktop/DesktopMtrpSdk.kt`)
- Channel manager → Mobile transports: dispatches
- Channel manager → Fragment assembly: fragments packets (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/FragmentingChannelManager.kt`)
- Fragment assembly → Packet format: reassembles (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/channel/FragmentingChannelManager.kt`)
- Mesh router → Silent relay service: handles relay (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/MeshRouter.kt`)
- Mesh router → Packet format: processes incoming (evidence: `sdk/core/src/commonMain/kotlin/dev/mtrp/core/routing/MeshRouter.kt`)
