# wansky05/baileys architecture

> Architecture diagram of the GitHub repository wansky05/baileys, 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/wansky05/baileys
- Repository: https://github.com/wansky05/baileys

## Overview

Baileys is a TypeScript WebSocket client library for WhatsApp Web. An application supplies authentication and socket configuration to `makeWASocket`; layered socket modules connect to WhatsApp, exchange binary protocol frames, and expose messaging, chat, group, community, business, and newsletter operations. Incoming traffic is decoded and dispatched as events, while Signal-based encryption and authentication state support secure sessions. The tree documents media, history synchronization, calls, and USync capabilities as well. Only selected source files were sampled, so the graph omits uncertain internal call wiring and shows documented capabilities at their enclosing directories.

Main entry points: [`src/Socket/communities.ts`](https://github.com/wansky05/baileys/blob/master/src/Socket/communities.ts) (Communities socket), [`src/Socket/messages-send.ts`](https://github.com/wansky05/baileys/blob/master/src/Socket/messages-send.ts) (Message operations), [`src/Socket/index.ts`](https://github.com/wansky05/baileys/blob/master/src/Socket/index.ts) (Socket factory), [`src/Socket/Client/websocket.ts`](https://github.com/wansky05/baileys/blob/master/src/Socket/Client/websocket.ts) (WebSocket client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Public API"]
  node_public["Library exports<br/>[index.ts]"]
  node_defaults["Connection defaults<br/>[index.ts]"]
end

subgraph group_connection["Connection and protocol"]
  node_socket["Socket factory<br/>[index.ts]"]
  node_ws["WebSocket client<br/>[websocket.ts]"]
  node_noise["Noise transport<br/>[noise-handler.ts]"]
end

subgraph group_features["WhatsApp features"]
  node_communities["Communities socket<br/>[communities.ts]"]
  node_chats["Chat operations<br/>[chats.ts]"]
  node_groups["Group operations<br/>[groups.ts]"]
  node_messages["Message operations<br/>[messages-send.ts]"]
  node_receive["Incoming messages<br/>[messages-recv.ts]"]
  node_business["Business features<br/>[business.ts]"]
  node_newsletter["Newsletter features<br/>[newsletter.ts]"]
  node_media["Media handling<br/>[messages-media.ts]"]
  node_history["History processing<br/>[history.ts]"]
  node_calls["Call support<br/>[Call.ts]"]
end

subgraph group_security["Identity and security"]
  node_auth["Authentication state<br/>[Auth.ts]"]
  node_authutils["Auth state utilities<br/>[auth-utils.ts]"]
  node_signal["Signal repository<br/>[libsignal.ts]"]
  node_groupcrypto["Group encryption"]
  node_prekeys["Pre-key management<br/>[pre-key-manager.ts]"]
  node_retry["Message retry manager"]
end

subgraph group_shared["Shared protocol utilities"]
  node_binary["Binary node codec<br/>[index.ts]"]
  node_usync["USync queries<br/>[USyncQuery.ts]"]
  node_proto["Protocol messages<br/>[index.js]"]
end

node_app(("Integrating application"))
node_wa(("WhatsApp Web"))

node_app -->|"imports API"| node_public
node_public -->|"exports factory"| node_socket
node_socket -->|"merges defaults"| node_defaults
node_socket -->|"creates socket"| node_communities
node_communities -->|"uses transport"| node_ws
node_ws -->|"connects"| node_wa
node_ws -->|"processes frames"| node_noise
node_noise -->|"decodes frames"| node_binary
node_communities -->|"layers operations"| node_chats
node_communities -->|"layers operations"| node_groups
node_communities -->|"layers operations"| node_messages
node_communities -->|"layers operations"| node_receive
node_communities -->|"layers operations"| node_business
node_communities -->|"layers operations"| node_newsletter
node_messages -->|"handles media"| node_media
node_receive -->|"processes history"| node_history
node_chats -->|"queries users"| node_usync
node_messages -->|"secures messages"| node_signal
node_groups -->|"uses group keys"| node_groupcrypto
node_signal -->|"manages pre-keys"| node_prekeys
node_receive -->|"handles retries"| node_retry
node_defaults -->|"selects repository"| node_signal
node_app -->|"provides credentials"| node_auth
node_authutils -->|"persists state"| node_auth
node_communities -.->|"supports calls"| node_calls
node_messages -->|"encodes messages"| node_proto
node_binary -->|"uses message schema"| node_proto

click node_public "https://github.com/wansky05/baileys/blob/master/src/index.ts"
click node_socket "https://github.com/wansky05/baileys/blob/master/src/Socket/index.ts"
click node_communities "https://github.com/wansky05/baileys/blob/master/src/Socket/communities.ts"
click node_chats "https://github.com/wansky05/baileys/blob/master/src/Socket/chats.ts"
click node_groups "https://github.com/wansky05/baileys/blob/master/src/Socket/groups.ts"
click node_messages "https://github.com/wansky05/baileys/blob/master/src/Socket/messages-send.ts"
click node_receive "https://github.com/wansky05/baileys/blob/master/src/Socket/messages-recv.ts"
click node_business "https://github.com/wansky05/baileys/blob/master/src/Socket/business.ts"
click node_newsletter "https://github.com/wansky05/baileys/blob/master/src/Socket/newsletter.ts"
click node_media "https://github.com/wansky05/baileys/blob/master/src/Utils/messages-media.ts"
click node_history "https://github.com/wansky05/baileys/blob/master/src/Utils/history.ts"
click node_calls "https://github.com/wansky05/baileys/blob/master/src/Types/Call.ts"
click node_ws "https://github.com/wansky05/baileys/blob/master/src/Socket/Client/websocket.ts"
click node_noise "https://github.com/wansky05/baileys/blob/master/src/Utils/noise-handler.ts"
click node_binary "https://github.com/wansky05/baileys/blob/master/src/WABinary/index.ts"
click node_usync "https://github.com/wansky05/baileys/blob/master/src/WAUSync/USyncQuery.ts"
click node_proto "https://github.com/wansky05/baileys/blob/master/WAProto/index.js"
click node_defaults "https://github.com/wansky05/baileys/blob/master/src/Defaults/index.ts"
click node_auth "https://github.com/wansky05/baileys/blob/master/src/Types/Auth.ts"
click node_authutils "https://github.com/wansky05/baileys/blob/master/src/Utils/auth-utils.ts"
click node_signal "https://github.com/wansky05/baileys/blob/master/src/Signal/libsignal.ts"
click node_groupcrypto "https://github.com/wansky05/baileys/blob/master/src/Signal/Group/group-session-builder.ts"
click node_prekeys "https://github.com/wansky05/baileys/blob/master/src/Utils/pre-key-manager.ts"
click node_retry "https://github.com/wansky05/baileys/blob/master/src/Utils/message-retry-manager.ts"

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_public,node_defaults toneBlue
class node_socket,node_ws,node_noise toneAmber
class node_communities,node_chats,node_groups,node_messages,node_receive,node_business,node_newsletter,node_media,node_history,node_calls toneMint
class node_auth,node_authutils,node_signal,node_groupcrypto,node_prekeys,node_retry toneRose
class node_binary,node_usync,node_proto,node_app,node_wa toneIndigo
```

## Components

### Public API

- [Library exports](https://github.com/wansky05/baileys/blob/master/src/index.ts): `src/index.ts`
- [Connection defaults](https://github.com/wansky05/baileys/blob/master/src/Defaults/index.ts): `src/Defaults/index.ts`

### Connection and protocol

- [Socket factory](https://github.com/wansky05/baileys/blob/master/src/Socket/index.ts): `src/Socket/index.ts`
- [WebSocket client](https://github.com/wansky05/baileys/blob/master/src/Socket/Client/websocket.ts): `src/Socket/Client/websocket.ts`
- [Noise transport](https://github.com/wansky05/baileys/blob/master/src/Utils/noise-handler.ts): `src/Utils/noise-handler.ts`

### WhatsApp features

- [Communities socket](https://github.com/wansky05/baileys/blob/master/src/Socket/communities.ts): `src/Socket/communities.ts`
- [Chat operations](https://github.com/wansky05/baileys/blob/master/src/Socket/chats.ts): `src/Socket/chats.ts`
- [Group operations](https://github.com/wansky05/baileys/blob/master/src/Socket/groups.ts): `src/Socket/groups.ts`
- [Message operations](https://github.com/wansky05/baileys/blob/master/src/Socket/messages-send.ts): `src/Socket/messages-send.ts`
- [Incoming messages](https://github.com/wansky05/baileys/blob/master/src/Socket/messages-recv.ts): `src/Socket/messages-recv.ts`
- [Business features](https://github.com/wansky05/baileys/blob/master/src/Socket/business.ts): `src/Socket/business.ts`
- [Newsletter features](https://github.com/wansky05/baileys/blob/master/src/Socket/newsletter.ts): `src/Socket/newsletter.ts`
- [Media handling](https://github.com/wansky05/baileys/blob/master/src/Utils/messages-media.ts): `src/Utils/messages-media.ts`
- [History processing](https://github.com/wansky05/baileys/blob/master/src/Utils/history.ts): `src/Utils/history.ts`
- [Call support](https://github.com/wansky05/baileys/blob/master/src/Types/Call.ts): `src/Types/Call.ts`

### Identity and security

- [Authentication state](https://github.com/wansky05/baileys/blob/master/src/Types/Auth.ts): `src/Types/Auth.ts`
- [Auth state utilities](https://github.com/wansky05/baileys/blob/master/src/Utils/auth-utils.ts): `src/Utils/auth-utils.ts`
- [Signal repository](https://github.com/wansky05/baileys/blob/master/src/Signal/libsignal.ts): `src/Signal/libsignal.ts`
- [Group encryption](https://github.com/wansky05/baileys/blob/master/src/Signal/Group/group-session-builder.ts): `src/Signal/Group/group-session-builder.ts`
- [Pre-key management](https://github.com/wansky05/baileys/blob/master/src/Utils/pre-key-manager.ts): `src/Utils/pre-key-manager.ts`
- [Message retry manager](https://github.com/wansky05/baileys/blob/master/src/Utils/message-retry-manager.ts): `src/Utils/message-retry-manager.ts`

### Shared protocol utilities

- [Binary node codec](https://github.com/wansky05/baileys/blob/master/src/WABinary/index.ts): `src/WABinary/index.ts`
- [USync queries](https://github.com/wansky05/baileys/blob/master/src/WAUSync/USyncQuery.ts): `src/WAUSync/USyncQuery.ts`
- [Protocol messages](https://github.com/wansky05/baileys/blob/master/WAProto/index.js): `WAProto/index.js`

### Other components

- **Integrating application**
- **WhatsApp Web**

## Connections

- Integrating application → Library exports: imports API
- Library exports → Socket factory: exports factory
- Socket factory → Connection defaults: merges defaults
- Socket factory → Communities socket: creates socket
- Communities socket → WebSocket client: uses transport
- WebSocket client → WhatsApp Web: connects
- WebSocket client → Noise transport: processes frames
- Noise transport → Binary node codec: decodes frames
- Communities socket → Chat operations: layers operations
- Communities socket → Group operations: layers operations
- Communities socket → Message operations: layers operations
- Communities socket → Incoming messages: layers operations
- Communities socket → Business features: layers operations
- Communities socket → Newsletter features: layers operations
- Message operations → Media handling: handles media
- Incoming messages → History processing: processes history
- Chat operations → USync queries: queries users
- Message operations → Signal repository: secures messages
- Group operations → Group encryption: uses group keys
- Signal repository → Pre-key management: manages pre-keys
- Incoming messages → Message retry manager: handles retries
- Connection defaults → Signal repository: selects repository
- Integrating application → Authentication state: provides credentials
- Auth state utilities → Authentication state: persists state
- Communities socket → Call support: supports calls
- Message operations → Protocol messages: encodes messages
- Binary node codec → Protocol messages: uses message schema
