# drklo/telegram architecture

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

- Interactive diagram: https://gitdiagram.com/drklo/telegram
- Repository: https://github.com/drklo/telegram

## Overview

Telegram for Android is a mobile messaging client. The broad user workflow is starting the app, accessing messaging features, and exchanging content through Telegram’s service; the README establishes the product but does not document that runtime wiring in detail. Sampled sources show concrete group-call messaging, native wallet bridging, and WebRTC video-stream handling. The graph preserves major runtime modules named by the SOURCE INDEX, but many are not present in the supplied tree excerpt; relationships are limited to those explicitly visible in excerpts or documented in the README.

Main entry points: [`TMessagesProj/src/main/java/org/telegram/messenger/voip/GroupCallMessagesController.java`](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/voip/GroupCallMessagesController.java) (Group-call messages), [`TMessagesProj/jni/voip/webrtc/media/engine/webrtc_video_engine.cc`](https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/voip/webrtc/media/engine/webrtc_video_engine.cc) (WebRTC video engine), [`TMessagesProj/jni/wallet/WalletEngineBridge.cpp`](https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/wallet/WalletEngineBridge.cpp) (Wallet native bridge), [`TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java`](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java) (App launch)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App runtime"]
  node_app_entry["App launch"]
  node_app_init["Application startup"]
  node_app_config["App configuration<br/>[SharedConfig.java]"]
  node_user_config["Account state<br/>[UserConfig.java]"]
  node_localization["Localization"]
  node_utilities["App utilities<br/>[Utilities.java]"]
  node_search_engine["Web search<br/>[SearchEngine.java]"]
end

subgraph group_messaging["Messaging"]
  node_messages_controller["Messages controller"]
  node_protocol["Telegram protocol<br/>[TLRPC.java]"]
  node_connections["Network connections"]
end

subgraph group_calls["Calls and media"]
  node_group_messages["Group-call messages"]
  node_voip_service["VoIP service<br/>[VoIPService.java]"]
  node_voip_instance["VoIP engine interface<br/>[Instance.java]"]
  node_video_engine["WebRTC video engine"]
end

subgraph group_wallet["Wallet"]
  node_wallet_ui["Wallet UI<br/>[WalletEngine2.java]"]
  node_wallet_auth["Wallet storage auth"]
end

subgraph group_native["Native services"]
  node_wallet_bridge["Wallet native bridge"]
  node_wallet_engine["Wallet engine<br/>[wallet_engine.cpp]"]
  node_native_buffers["Native buffer storage<br/>[BuffersStorage.cpp]"]
  node_prisma_engine["Prisma engine<br/>[PrismaEngine.cpp]"]
end

node_user(("Telegram user"))

node_user -->|"opens app"| node_app_entry
node_group_messages -->|"references service"| node_voip_service
node_group_messages -->|"references engine"| node_voip_instance
node_group_messages -->|"serializes messages"| node_protocol
node_wallet_bridge -->|"uses engine"| node_wallet_engine
node_video_engine -.-> node_user

click node_app_entry "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java"
click node_app_init "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java"
click node_app_config "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java"
click node_user_config "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java"
click node_localization "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java"
click node_utilities "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java"
click node_messages_controller "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java"
click node_protocol "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java"
click node_connections "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java"
click node_group_messages "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/voip/GroupCallMessagesController.java"
click node_voip_service "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java"
click node_voip_instance "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java"
click node_video_engine "https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/voip/webrtc/media/engine/webrtc_video_engine.cc"
click node_wallet_ui "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/Wallet/WalletEngine2.java"
click node_wallet_auth "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/Wallet/GramWalletStorageAuth.java"
click node_wallet_bridge "https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/wallet/WalletEngineBridge.cpp"
click node_wallet_engine "https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/prebuild/include/wallet-engine/wallet_engine.cpp"
click node_native_buffers "https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/tgnet/BuffersStorage.cpp"
click node_prisma_engine "https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/prisma/bridge/PrismaEngine.cpp"
click node_search_engine "https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/web/SearchEngine.java"

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_app_entry,node_app_init,node_app_config,node_user_config,node_localization,node_utilities,node_search_engine,node_user toneBlue
class node_messages_controller,node_protocol,node_connections toneAmber
class node_group_messages,node_voip_service,node_voip_instance,node_video_engine toneMint
class node_wallet_ui,node_wallet_auth toneRose
class node_wallet_bridge,node_wallet_engine,node_native_buffers,node_prisma_engine toneIndigo
```

## Components

### App runtime

- [App launch](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java): `TMessagesProj/src/main/java/org/telegram/ui/LaunchActivity.java`
- [Application startup](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java): `TMessagesProj/src/main/java/org/telegram/messenger/ApplicationLoader.java`
- [App configuration](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java): `TMessagesProj/src/main/java/org/telegram/messenger/SharedConfig.java`
- [Account state](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java): `TMessagesProj/src/main/java/org/telegram/messenger/UserConfig.java`
- [Localization](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java): `TMessagesProj/src/main/java/org/telegram/messenger/LocaleController.java`
- [App utilities](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java): `TMessagesProj/src/main/java/org/telegram/messenger/Utilities.java`
- [Web search](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/web/SearchEngine.java): `TMessagesProj/src/main/java/org/telegram/ui/web/SearchEngine.java`

### Messaging

- [Messages controller](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java): `TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java`
- [Telegram protocol](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java): `TMessagesProj/src/main/java/org/telegram/tgnet/TLRPC.java`
- [Network connections](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java): `TMessagesProj/src/main/java/org/telegram/tgnet/ConnectionsManager.java`

### Calls and media

- [Group-call messages](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/voip/GroupCallMessagesController.java): `TMessagesProj/src/main/java/org/telegram/messenger/voip/GroupCallMessagesController.java`
- [VoIP service](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java): `TMessagesProj/src/main/java/org/telegram/messenger/voip/VoIPService.java`
- [VoIP engine interface](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java): `TMessagesProj/src/main/java/org/telegram/messenger/voip/Instance.java`
- [WebRTC video engine](https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/voip/webrtc/media/engine/webrtc_video_engine.cc): `TMessagesProj/jni/voip/webrtc/media/engine/webrtc_video_engine.cc`

### Wallet

- [Wallet UI](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/Wallet/WalletEngine2.java): `TMessagesProj/src/main/java/org/telegram/ui/Wallet/WalletEngine2.java`
- [Wallet storage auth](https://github.com/drklo/telegram/blob/master/TMessagesProj/src/main/java/org/telegram/ui/Wallet/GramWalletStorageAuth.java): `TMessagesProj/src/main/java/org/telegram/ui/Wallet/GramWalletStorageAuth.java`

### Native services

- [Wallet native bridge](https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/wallet/WalletEngineBridge.cpp): `TMessagesProj/jni/wallet/WalletEngineBridge.cpp`
- [Wallet engine](https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/prebuild/include/wallet-engine/wallet_engine.cpp): `TMessagesProj/jni/prebuild/include/wallet-engine/wallet_engine.cpp`
- [Native buffer storage](https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/tgnet/BuffersStorage.cpp): `TMessagesProj/jni/tgnet/BuffersStorage.cpp`
- [Prisma engine](https://github.com/drklo/telegram/blob/master/TMessagesProj/jni/prisma/bridge/PrismaEngine.cpp): `TMessagesProj/jni/prisma/bridge/PrismaEngine.cpp`

### Other components

- **Telegram user**

## Connections

- Telegram user → App launch: opens app (evidence: `README.md`)
- Group-call messages → VoIP service: references service (evidence: `TMessagesProj/src/main/java/org/telegram/messenger/voip/GroupCallMessagesController.java`)
- Group-call messages → VoIP engine interface: references engine (evidence: `TMessagesProj/src/main/java/org/telegram/messenger/voip/GroupCallMessagesController.java`)
- Group-call messages → Telegram protocol: serializes messages (evidence: `TMessagesProj/src/main/java/org/telegram/messenger/voip/GroupCallMessagesController.java`)
- Wallet native bridge → Wallet engine: uses engine (evidence: `TMessagesProj/jni/wallet/WalletEngineBridge.cpp`)
- WebRTC video engine → Telegram user
