Baileys Compatibility Matrix¶
Target reference: local Node Baileys 7.0.0-rc13.
Legend:
Done: implemented inBaileys-pythonand covered by tests or proven spikeSeeded: copied from proven spike, needs production API hardeningPartial: some capability exists, parity incompleteTodo: not implemented in product package yet
| Area | Capability | Status | Notes |
|---|---|---|---|
| Core | WAProto generated Python classes | Done | Generated artifact is package data and checked by scripts/generate_proto.py --check when proto tooling is installed. |
| Core | Tokenized WABinary encode/decode | Done | Includes dictionary tokens, packed nibbles/hex, AD/FB/interop JIDs, and compressed frame vectors. |
| Core | JID utilities | Done | Shared parser/encoder/classifiers cover PN, LID, hosted, group, broadcast, newsletter, bot/meta, integrator, same-user, transfer-device, and Baileys-compatible aliases. |
| Core | Defaults/version constants | Done | Central defaults feed registration, socket, Noise, prekey, media, and key derivation layers. |
| Core | Crypto/key primitives | Done | AES/HKDF/HMAC/hash/X25519, pairing-code key derivation, media keys, app-state keys, Noise helpers, Signal sessions, and group sender keys have offline vectors. |
| Core | WAM telemetry encoder | Partial | WAM packet/header and scalar field encoding are ported with encode_wam / encodeWAM, generated constants cover 313 event specs and 48 globals, and send_wam / sendWAM uploads through w:stats. Todo: live ACK proof on an account/server path that responds to WAM stats. |
| Core | WAUSync protocol builders | Partial | Public device discovery, status fetch, disappearing-duration fetch, and generic execute_usync_query / executeUSyncQuery wrappers exist. Generic parsing preserves devices, LID, contact, status, disappearing mode, username, bot profiles, side-list values, and unknown protocol children; typed parsers now cover contact, status, disappearing mode, username, and bot profile results. Bot-list fetch is live-proven. Todo: broader live proof for account-gated protocols. |
| Auth | Credential models | Done | Typed wrappers round-trip existing auth dicts and preserve unknown future fields. |
| Auth | Credential generation | Done | Registration payload, key material, QR pairing, and pair-success credential persistence are wired through product auth state and covered by tests/live QR proof. |
| Auth | QR pairing | Done | Product WhatsAppClient.connect_for_qr_pairing() live-proven: QR refs, scan, pair-success, device signature, and saved creds. |
| Auth | Pairing-code flow | Done | Request, callback finish, pair-success, credential persistence, and saved reconnect are live-proven through the product pairing-code probe. |
| Auth | Saved auth login/reconnect | Done | Product QR probe live-proved saved reconnect through WhatsAppClient.connect_and_wait() after QR pairing. |
| Auth | Multi-file auth state | Partial | Storage interfaces, JSON credential store, directory signal-key store, useMultiFileAuthState, SQLite stores, and optional Postgres stores are present. Built-in file stores use atomic writes, and AuthState.transaction() commits credential changes only on successful completion. Postgres schema setup uses versioned migrations with transaction-scoped advisory locking and opt-in live concurrent-writer proof. |
| Auth | Signal key store and transactions | Partial | JSON hydration/export exists, memory and directory signal-key stores isolate mutable values, built-in file writes are atomic, and SQLite/Postgres signal-key stores are available. Broader application-level multi-process auth coordination remains a deployment concern. |
| Auth | Prekey upload/digest/rotation | Done | Product socket methods digest_key_bundle, count_pre_keys, maintain_pre_keys, upload_pre_keys, and rotate_signed_pre_key are wired and tested; login lifecycle runs non-fatal low-count maintenance with bounded upload backoff. |
| Auth | Routing info | Seeded | WebSocket ED and Noise intro supported. |
| Auth | LID/PN mapping | Partial | USync device lookups, blocklist resolution, group metadata participant mappings, and history mappings can use credential-backed mappings plus durable SQLiteEventStore LID/PN persistence. Broader live proof across account-gated mapping surfaces remains. |
| Socket | Noise handshake | Seeded | Live server hello/login proven. |
| Socket | Query/response correlation | Done | Query manager resolves by node id, cancels timed-out waiters, and can drive receive while awaiting responses. |
| Socket | Event emitter | Done | Async event emitter supports on, once, off, emit, and wait_for; the event taxonomy covers message, receipt, notification, dirty, offline, call, reconnect, and auth surfaces. |
| Socket | Public socket API | Done | WhatsAppClient, make_socket, and makeWASocket facade includes QR pairing, saved reconnect, event emitter, query manager, receive loop, reconnect, logout, ACKs, receipts, and prekey maintenance. |
| Socket | Keepalive/reconnect | Done | Saved-auth reconnect is live-proven; receive loop handles server pings and automatic retry/backoff for retryable disconnects, keepalive failures, and exhausted reconnect attempts. |
| Socket | Logout/disconnect reasons | Done | logout() sends remove-companion-device, clears saved auth by default, and emits loggedOut; stream:error, failure, transport errors, and intentional logout map to deterministic DisconnectReason values. |
| Inbound | Binary node dispatcher | Done | Classifier plus socket dispatch covers message, receipt, notification, call, dirty, offline, failure, stream-error, server ping, IQ, ACK, and unknown-node observability. |
| Inbound | Message decrypt | Partial | 1:1 pkmsg/msg and group text are live-proven through product messages.upsert; broader message/content processors still needed. |
| Inbound | Retry receipts | Partial | Retry receipt parsing, retry count limiting, session-bundle injection, messages.retry / messages.retry_error events, and recent outbound replay are wired. A public ReplayStore interface, default InMemoryReplayStore, SQLiteReplayStore, and BinaryNode JSON helpers cover in-process and local durable replay; broader live retry proof still remains. |
| Inbound | Receipts/acks | Done | Baileys-compatible ACK builder added, socket auto-ACKs message/receipt/notification/call nodes, direct receipts emit messages.update status changes, group/status receipts emit message-receipt.update, and retry receipts route separately. |
| Inbound | Notifications/calls/offline nodes | Done | Typed notification, dirty/app-state, offline, and call dispatch emits stable events while preserving raw node observability for unknown cases. |
| Outbound | sendMessage text |
Done | Product send_message/sendMessage supports direct and USync fanout paths; direct 1:1 text, third-party USync/session assertion, and group text send are live-proven with ACK. |
| Outbound | relayMessage |
Partial | Product relay_message/relayMessage sends BinaryNode/proto/outbound payloads and caches recent messages through the replay-store interface for retry replay; broader live parity remains. |
| Outbound | Receipts/read messages | Partial | send_receipt, send_receipts, and read_messages build aggregated receipt nodes and use privacy-setting-aware read types; broader live receipt semantics still need proof. |
| Outbound | Privacy tokens/peer data operations | Partial | Trusted-contact token storage, expiry checks, issuance JID resolution, tctoken node construction, privacy-token issuance, and peer-data protocol-message send wrappers are ported with offline tests. Trusted-contact privacy-token issuance and a self peer-data operation with ACK are live-proven; broader operation-specific peer-data behavior remains. |
| Messages | Text/extended text | Done | Product content builders cover text, extended text, mentions, quote keys, and forwarded markers with offline tests; direct and group text sends are live-proven with ACK. |
| Messages | Quote/mention/forward/location/contact/reaction/pin/poll/edit/delete | Done | Quote keys, mentions, forward markers, contact lists, reactions, edit, delete, location, contact, pin, and poll builders are offline-tested. Reaction add/remove, edit, delete, location, contact, poll, pin, and unpin are live-proven with ACK. |
| Media | Image upload/send/download | Done | Product media connection, media host, encrypt/upload, raw upload, image message generation, send, and download/decrypt helpers are wired and live-proven for image. |
| Media | Video/audio/document/sticker/stream/url inputs/thumbnails/reupload | Partial | Video, audio, document, and sticker send/download/decrypt are live-proven with generated or file-backed samples. Media retry request/response crypto, messages.media-update, and updateMediaMessage are offline-tested; live probing captures inbound image media and receives an ACK for the retry receipt, but still needs a device/server response with an encrypted media update. Streams, URLs, thumbnails, waveform, duration extraction, and broader live breadth remain. |
| Chats | Presence/status/profile/privacy/blocklist/chat modify | Done | Product presence, profile name/status/picture, privacy, blocklist, block APIs, contact/quick-reply patches, and encrypted app-state patch writes are wired with offline coverage; live read-only profile/privacy/blocklist/on-whatsapp, all supported presence write states, profile name/status/picture updates, block/unblock cycle, chat archive/mute/pin/star patches, and app-state key-share delivery are proven. |
| History | History sync/app-state/LTHash/MAC validation | Done | Key derivation, app-state key-share ingestion, LT hash update, encrypted patch generation, patch MAC generation, app-state snapshot request, external app-state blob download/decrypt, snapshot metadata decode, snapshot mutation decrypt/MAC validation, sync patch application, external mutation download, history sync processing, and blocked-key persistence exist. Live history push-name sync is proven. Fresh QR live proof received key AAAAAP9V, applied all five app-state collections, emitted 311 decoded mutations, and saved reconnect re-applied the collections without blocked keys. Re-verification applied all five saved app-state collections without blocked collections, decrypt errors, or history errors. |
| Store | Event stores and buffered events | Done | Bindable InMemoryStore tracks messages, chats, contacts, message updates, per-user receipts, and reactions from inbound events. SQLiteEventStore persists the same event-backed message/chat/contact surfaces plus LID/PN mappings and app-state state for local durable bots. Optional Postgres stores cover the same credential, signal-key, replay, and event-store contract with local mocked tests, versioned migrations, live database round-trip, and live concurrent migration proof. |
| Groups | Metadata/create/participants/invites/settings | Partial | Product group metadata/fetch-all/create/leave/subject/description/participants/join-request/invite/settings APIs and parsers are wired with offline tests; Node-compatible aliases cover invite-info lookup, ephemeral toggle, member-add mode, join-approval mode, fetch-all participating groups, and membership-request list/update. Metadata, PN mapping for LID participants, invite lookup, structured group invite send, group text send, announcement setting change/revert, invite revoke, description set/revert with previous id, subject set/revert, participant remove, participant promote, and participant demote are live-proven. Raw participant add remains account-gated in the current live account with account_reachout_restricted; group_participants_update_or_invite falls back to a structured invite. Temporary group create returns no result and does not leave a created group in the participating list. |
| Communities | Community APIs | Partial | Product community metadata/fetch-all/create/linked group create/link/unlink/fetch, leave, subject/description, participants, membership-request list/update, invite fetch/revoke/accept/v4/info, ephemeral, settings, member-add, and join-approval APIs, aliases, node builders, and parsers are wired with offline tests. Todo: community live proof with a community JID or an account-safe enabled mutation flow. Current account times out on community create and leaves no participating community behind. |
| Business | Profile/catalog/products/orders | Partial | Business profile fetch/update, catalog, collections, order details, product create/update/delete nodes, product image media preparation, cover-photo update/remove, aliases, and parsers are wired with offline tests. WhatsApp Business QR pairing, read-only business profile fetch, catalog read, temporary product create/delete using existing and fresh-uploaded images, reversible product update, and cover-photo update/remove are live-proven. Todo: catalog collections and order-details live proof remain deferred until a responding business account and real order id/token are available. |
| Newsletters | MEX/newsletter APIs/events | Partial | MEX query/response helpers plus newsletter create/update/metadata/follow/unfollow/mute/subscribers/admin/owner/delete/picture/reaction/message-fetch/live-update APIs are wired with offline tests. Direct and legacy MEX newsletter notifications emit reaction, view, participant, and settings events. Read-only live proof confirms account reachout timelock MEX, and newsletter create/metadata/delete is live-proven. Todo: inbound newsletter event proof. |
| Tooling | Package install/tests/examples | Done | Product bootstrap provides baseline install, tests, generated-artifact check modes, a public API parity manifest for implemented Node socket methods, a Node-reference audit script, refreshed saved-auth/pairing-code/echo-bot examples, and design docs for storage, inbound processing, live verification, release hardening, and release checklist review. |
| Tooling | Live test harness | Done | Product scripts cover QR pairing, pairing-code linking, saved reconnect, inbound 1:1/group proof, timed soak checks, text/image/media sends, reaction/edit/delete/location/contact/poll/pin, chat/profile/privacy/group read/write probes, app-state key diagnostics, read-only advanced API probes, explicit temporary catalog create probes, temporary catalog cleanup, forced fresh catalog-image upload probes, reversible existing-product update probes, and remaining live probes for cover photo, bot list, privacy tokens, peer-data, newsletters, collections, order details, communities, and WAM stats. scripts/live_suite.py records selected live probes as redacted JSON summaries and can write a scheduled read-only command plan; scripts/soak_suite.py records timed soak summaries. |
| Docs | Migration guide/API docs | Done | docs/public-api.md covers the current Python API surface, aliases, events, send/media/store/group/profile/history/advanced API surfaces, and docs/migration-guide.md maps common Node Baileys patterns to Python. |