How itsliaaa/baileys works
Baileys is a JavaScript WhatsApp Web client library. Applications create a socket, authenticate and connect, then exchange messages and manage chats, groups, newsletters, and related account data. Incoming frames are decoded and processed into events; outgoing messages are encoded and sent through the socket. Supporting layers handle WhatsApp’s binary protocol, Signal encryption, synchronization, and optional state storage. The README documents broad message and management capabilities; several feature modules are represented by their exact paths but were not sampled, so their internal call paths are not inferred.
Main entry points: messages-send.js Message sending · messages-recv.js Message receiving · socket.js Socket setup · libsignal.js Signal repository
Components 27
Client and messaging
- Public API
lib/index.js - Socket setup
lib/Socket/socket.js - WebSocket transport
lib/Socket/Client/websocket.js - Message sending
lib/Socket/messages-send.js - Message receiving
lib/Socket/messages-recv.js - Chat operations
lib/Socket/chats.js - Group operations
lib/Socket/groups.js - Communities
lib/Socket/communities.js - Newsletter operations
lib/Socket/newsletter.js - Business operations
lib/Socket/business.js - Message utilities
lib/Utils/messages.js - Media handling
lib/Utils/messages-media.js - Message processing
lib/Utils/process-message.js - Link previews
lib/Addon/link-preview.js
Wire protocol
- Binary encoding
lib/WABinary/encode.js - Binary decoding
lib/WABinary/decode.js - WhatsApp IDs
lib/WABinary/jid-utils.js - Noise handshake
lib/Utils/noise-handler.js
Identity and encryption
- Signal repository
lib/Signal/libsignal.js - Signal sessions
lib/Transport/session-cipher.js - Transport crypto
lib/Transport/crypto.js - Group encryption
lib/Signal/Group/group-cipher.js
State and sync
- Auth state
lib/Utils/use-multi-file-auth-state.js - In-memory store
lib/Store/make-in-memory-store.js - User synchronization
lib/WAUSync/USyncQuery.js - Retry management
lib/Utils/message-retry-manager.js
Other components
- Application
Connections 28
- Application → Public API: uses
README.md - Public API → Socket setup: creates socket
lib/index.js - Socket setup → WebSocket transport: configures
- Socket setup → Message sending: routes sends
- Socket setup → Message receiving: routes receives
- Message sending → Message utilities: uses
lib/Socket/messages-send.js - Message sending → Media handling: uses
lib/Socket/messages-send.js - Message sending → Link previews: uses
lib/Socket/messages-send.js - Message sending → User synchronization: queries
lib/Socket/messages-send.js - Message sending → Newsletter operations: calls
lib/Socket/messages-send.js - Message receiving → Message processing: processes messages
- Message receiving → Message sending: requests retry
lib/Socket/messages-recv.js - Message sending → Binary encoding: encodes nodes
lib/Socket/messages-send.js - Message receiving → Binary decoding: decodes nodes
lib/Socket/messages-recv.js - Noise handshake → Binary decoding: decodes frames
lib/Utils/noise-handler.js - Noise handshake → Transport crypto: encrypts frames
lib/Utils/noise-handler.js - Signal repository → Signal sessions: uses sessions
lib/Signal/libsignal.js - Signal sessions → Transport crypto: uses crypto
lib/Transport/session-cipher.js - Signal repository → Group encryption: uses group cipher
lib/Signal/libsignal.js - Signal repository → WhatsApp IDs: resolves addresses
lib/Signal/libsignal.js - Message receiving → Retry management: checks retries
- Retry management → Auth state: uses cache
- Application → Auth state: provides credentials
README.md - Application → In-memory store: may attach store
README.md - Application → Chat operations: manages chats
README.md - Application → Group operations: manages groups
README.md - Application → Communities: manages communities
README.md - Application → Business operations: manages business
README.md