diff --git a/research/INDEX.md b/research/INDEX.md index 00525d4..4144660 100644 --- a/research/INDEX.md +++ b/research/INDEX.md @@ -6,13 +6,13 @@ | Metric | Value | |---|---| -| Subjects | 15 | -| Total source documents | 967 | -| — Tier 1 (Source Dossier, independently analyzed) | 282 | -| — Tier 2 (Source Citation Card, listed only) | 685 | -| Total conclusion documents | 38 | +| Subjects | 16 | +| Total source documents | 1037 | +| — Tier 1 (Source Dossier, independently analyzed) | 291 | +| — Tier 2 (Source Citation Card, listed only) | 746 | +| Total conclusion documents | 41 | | Archive opened | 2026-10-09 | -| Last updated | 2026-10-25 | +| Last updated | 2026-10-27 | ## Subjects @@ -33,6 +33,7 @@ | [`cap-protocol`](cap-protocol/) | 83 (34 / 49) | 4 | 2026-10-18 | 2026-10-25 | Supporting CAP (CLI Agent Protocol) as agent and orchestrator: full read of core + coding profile, quickstart, STATUS, all 5 manifests; selective A2A/ACP wire reads; decided phased rollout without gRPC plus dual A2A spelling; extended 2026-10-25 with model handling, model-as-tool and skill-management research (ACP config options, MCP sampling, agents-as-tools, advisor tools, subagent and skill docs, RouteLLM), 2 recommendation-only conclusions, nothing built | | [`mcp-client-support`](mcp-client-support/) | 106 (38 / 68) | 3 | 2026-10-18 | 2026-10-18 | Designing tai's MCP client: wire spec (stdio + Streamable HTTP on the 2025-11-25 baseline), pasted-config/GitHub-URL resolver, and the trust/approval model; decided minimal stdlib client, normalizer plus resolver agent, untrusted-until-consent with description pinning, no OAuth in v1, nothing built yet | | [`fuzzy-matching-selectors`](fuzzy-matching-selectors/) | 65 (12 / 53) | 2 | 2026-10-25 | 2026-10-25 | Making `@agent` / `@model` mentions pick the most related candidate: fzf/fzy/Sublime/clangd subsequence scoring, Damerau-Levenshtein, pg_trgm, RapidFuzz WRatio, difflib, CPython suggestions surveyed; decided one generic `FuzzyMatcher` (four signals, deterministic ties, floor 0.3 across agents and models) and implemented it the same day | +| [`whatsapp-automation`](whatsapp-automation/) | 70 (9 / 61) | 3 | 2026-10-27 | 2026-10-27 | Making detz send WhatsApp messages from C++ on a personal number: no native Python library exists (neonize is whatsmeow over ctypes, yowsup is dead), no browser needed, decided a native C++ transpile from wa-go (MIT, golden vectors) with whatsmeow as referee, GPL libsignal avoided, plus a whatsapp-mcp shortcut; specified in taicpp/docs/whatsapp.md, nothing built | ## Recent activity log @@ -65,6 +66,7 @@ | 2026-10-25 | `fuzzy-matching-selectors` | New subject: 65 sources (12 Tier 1 / 53 Tier 2) + 2 conclusions, from 10 searches and 14 fetches on fuzzy string matching (fzf algo.go and man page, fzy ALGORITHM.md and match.c, Sublime fuzzy match via an AsciiDoc copy because the original blog returned 403, clangd FuzzyMatch, pg_trgm docs, RapidFuzz WRatio source, Jaro-Winkler and Damerau-Levenshtein articles, difflib docs, CPython traceback suggestions). Decisions: one generic `detz::FuzzyMatcher` (subsequence DP with fzf constants + restricted Damerau-Levenshtein + per-token typo + trigram Jaccard, deterministic shorter-then-earlier ties) and a fuzzy catalog resolution order with floor 0.3. Implemented the same session in taicpp (src/util/fuzzy.*, src/cap/cap_model_catalog.cpp, tests/fuzzy_test.cpp). Carried gaps: VS Code fuzzyScorer.ts never retrieved; fzy constants not retrieved (fzf's used); no measurement on a real model-id corpus; the Jaro-Winkler prefix-inflation claim rests on a search listing only. | | 2026-10-25 | `cap-protocol` | Extended with 59 sources (11 Tier 1 / 48 Tier 2) + 2 conclusions (`cap-model-handling-practice`, `agent-delegation-tool-plus-skill`), from 10 searches and 15 fetches on how CAP and neighboring protocols treat models and cost, and whether delegation should be a tool plus a skill. Both conclusions are recommendations pending retoor, not decisions (their Decided by field says so). Two existing dossiers (`cap-core-v1`, `cap-profile-coding-v1`) were forward-corrected with model-handling findings. Carried gaps: Claude Code sub-agent and skills pages read only to character 100000; advisor benefit rests on one unverified transcript; the A2A searches found no model metadata field; CAP STATUS and the OpenAI handoffs page were not re-read. Nothing built. | | 2026-10-25 | `background-work-limits` | Extended with 46 sources (5 Tier 1 / 41 Tier 2) + 2 conclusions (`sub-agent-panels-on-the-multiplexer`, `sub-agent-supervision-and-collection`), from 8 searches and 6 fetches on how parallel agents are shown, scheduled, timed out, monitored and how their results are collected (Claude Code agent teams, Temporal activity timeouts, the claim-check pattern, Celery worker limits, tmux layouts, Kubernetes termination, terminal streaming, parallel-agent dashboards). Implemented the same session in taicpp (feed panes, `src/orch/`, supervision, CAP collection) and verified live. Carried gaps: the Kubernetes pod lifecycle page was opened but its termination and probe sections were not returned, so it is a Tier 2 card and its numbers are unverified; the tmux manual was read to character 100000 of 278260 (options unread); the 60 s and 300 s idle limits are static judgments, not measurements. | +| 2026-10-27 | `whatsapp-automation` | New subject: 70 sources (9 Tier 1 / 61 Tier 2) + 3 conclusions, from 12 searches, 9 repositories shallow-cloned and read (whatsmeow, libsignal-protocol-go, wa-go, Baileys, neonize, whatsapp-rust, whatsapp-mcp, yowsup, libsignal-protocol-c), line counts and GitHub API activity measured, and one live check (libcurl got 101 from wss://web.whatsapp.com/ws/chat). Mirror and language copies of one page are logged as one card each, with every URL named in the card. Decisions: no native Python library exists and no browser is needed; native C++ `detz::wa` transpiled from wa-go (MIT) with whatsmeow (MPL-2.0) as referee and GPL-3.0 libsignal avoided; whatsapp-mcp through detz's MCP client as the two-day shortcut. Specified in taicpp/docs/whatsapp.md, nothing built. Carried gaps: an unpaired whatsmeow QR probe was refused by the session permission classifier, so the full handshake is unverified here; XEdDSA implementation, LID addressing, client-version policy and ban behaviour are open deep-research items. | ## How to use this index diff --git a/research/whatsapp-automation/360dialog-waba-integration.md b/research/whatsapp-automation/360dialog-waba-integration.md new file mode 100644 index 0000000..d118a5c --- /dev/null +++ b/research/whatsapp-automation/360dialog-waba-integration.md @@ -0,0 +1,28 @@ +# 360dialog Messaging API (2 URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | 360dialog Messaging API (2 URLs) | +| Source URL | https://docs.360dialog.com/partner/integration/waba-integration | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Cloud API search; 10 registration requests per 72 hours per number. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/algolia-docsearch-baileys.md b/research/whatsapp-automation/algolia-docsearch-baileys.md new file mode 100644 index 0000000..05fd0e4 --- /dev/null +++ b/research/whatsapp-automation/algolia-docsearch-baileys.md @@ -0,0 +1,28 @@ +# docsearch MCP Baileys docs + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | docsearch MCP Baileys docs | +| Source URL | https://docsearch.algolia.com/mcp/docs/repo/whiskeysockets/baileys | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Baileys search; docs index. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/algolia-docsearch-whatsapp-rust.md b/research/whatsapp-automation/algolia-docsearch-whatsapp-rust.md new file mode 100644 index 0000000..987efd3 --- /dev/null +++ b/research/whatsapp-automation/algolia-docsearch-whatsapp-rust.md @@ -0,0 +1,28 @@ +# docsearch MCP whatsapp-rust docs + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | docsearch MCP whatsapp-rust docs | +| Source URL | https://docsearch.algolia.com/mcp/docs/repo/oxidezap/whatsapp-rust | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; docs index. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/altlinux-whatsapp-for-linux.md b/research/whatsapp-automation/altlinux-whatsapp-for-linux.md new file mode 100644 index 0000000..16dd510 --- /dev/null +++ b/research/whatsapp-automation/altlinux-whatsapp-for-linux.md @@ -0,0 +1,28 @@ +# whatsapp-for-linux on ALT Linux + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | whatsapp-for-linux on ALT Linux | +| Source URL | https://packages.altlinux.org/en/sisyphus/srpms/whatsapp-for-linux/ | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +C++ WhatsApp search; old name of WasIstLos. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/astra-engine-readthedocs.md b/research/whatsapp-automation/astra-engine-readthedocs.md new file mode 100644 index 0000000..6c2f5d0 --- /dev/null +++ b/research/whatsapp-automation/astra-engine-readthedocs.md @@ -0,0 +1,28 @@ +# Astra Engine + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Astra Engine | +| Source URL | https://astra-engine.readthedocs.io | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; wraps Playwright, so it needs a browser. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/bishopg-automate-whatsapp-python-guide.md b/research/whatsapp-automation/bishopg-automate-whatsapp-python-guide.md new file mode 100644 index 0000000..6dd67d4 --- /dev/null +++ b/research/whatsapp-automation/bishopg-automate-whatsapp-python-guide.md @@ -0,0 +1,28 @@ +# Automate WhatsApp with Python: your complete guide + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Automate WhatsApp with Python: your complete guide | +| Source URL | https://inspire.bishopg.ac.uk/secure-data/automate-whatsapp-with-python-your-complete-guide-1767649052 | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; looks like a content-farm page. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/boostspace-whatsapp-business-cloud.md b/research/whatsapp-automation/boostspace-whatsapp-business-cloud.md new file mode 100644 index 0000000..0d2f82f --- /dev/null +++ b/research/whatsapp-automation/boostspace-whatsapp-business-cloud.md @@ -0,0 +1,28 @@ +# WhatsApp Business Cloud on Boost.space + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | WhatsApp Business Cloud on Boost.space | +| Source URL | https://legacy-api.boost.space/applications/communication/whatsapp-business-cloud | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Cloud API search; number must not be tied to a personal WhatsApp account. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/checkleaked-best-open-source-libraries.md b/research/whatsapp-automation/checkleaked-best-open-source-libraries.md new file mode 100644 index 0000000..52eb2f7 --- /dev/null +++ b/research/whatsapp-automation/checkleaked-best-open-source-libraries.md @@ -0,0 +1,28 @@ +# Best Open-Source WhatsApp Libraries in 2026 (9 language URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Best Open-Source WhatsApp Libraries in 2026 (9 language URLs) | +| Source URL | https://whatsapp.checkleaked.cc/blog/best-open-source-whatsapp-libraries | +| Source type | blog post | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Ban-risk search; vendor article: all unofficial clients risk bans, behaviour (age, rate, similarity, reports) drives most bans; whatsmeow MPL-2.0. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/checkleaked-multi-device-protocol.md b/research/whatsapp-automation/checkleaked-multi-device-protocol.md new file mode 100644 index 0000000..2f4dcb2 --- /dev/null +++ b/research/whatsapp-automation/checkleaked-multi-device-protocol.md @@ -0,0 +1,28 @@ +# Understanding WhatsApp's Multi-Device Protocol (10 language URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Understanding WhatsApp's Multi-Device Protocol (10 language URLs) | +| Source URL | https://whatsapp.checkleaked.cc/blog/whatsapp-multi-device-protocol | +| Source type | blog post | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +protocol search; vendor blog, Noise over WebSocket summary; one source in ten languages. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/conclusions/mcp-bridge-shortcut.md b/research/whatsapp-automation/conclusions/mcp-bridge-shortcut.md new file mode 100644 index 0000000..4bcd30c --- /dev/null +++ b/research/whatsapp-automation/conclusions/mcp-bridge-shortcut.md @@ -0,0 +1,45 @@ +# Conclusion: For the two-day promise, use whatsapp-mcp through detz's MCP client + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Conclusion | +| Tier | N/A | +| Date decided | 2026-10-27 | +| Decided by | recommendation by tai (agent, Claude Opus 5.5), pending retoor | +| Status | Active | +| Confidence | Low | + +## Question / problem statement + +Can the sentence 'create screenshot, explain, send to X on WhatsApp' work in detz within two days, before the native module exists? + +## Conclusion + +Yes, probably: run lharries/whatsapp-mcp's Go bridge with its whatsmeow bumped to current (the pin is 2025-03-18), link once by QR, and add its Python MCP server to detz with mcp_add over stdio. detz's existing shell and describe_image tools plus the server's send_file complete the sentence. Remove it when phase 4 of the native module passes. + +## Supporting sources + +- [github-lharries-whatsapp-mcp](../github-lharries-whatsapp-mcp.md): tool list and the stale whatsmeow pin. +- [github-tulir-whatsmeow](../github-tulir-whatsmeow.md): 405 client-outdated behaviour, version constant. + +## Alternatives considered and rejected + +Wait for the native module: does not meet two days. neonize script as an MCP server: more code to write than the existing server. + +## Risks / open questions + +Not run end to end (needs a linked phone). The pinned whatsmeow may fail with 405 until bumped; the bump may need small code changes in main.go. Adds Go, Python and uv at runtime. + +## Action taken + +Steps written in taicpp/docs/whatsapp.md section 10. Not executed. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial conclusion recorded. | diff --git a/research/whatsapp-automation/conclusions/native-cpp-transpile-plan.md b/research/whatsapp-automation/conclusions/native-cpp-transpile-plan.md new file mode 100644 index 0000000..a40c460 --- /dev/null +++ b/research/whatsapp-automation/conclusions/native-cpp-transpile-plan.md @@ -0,0 +1,50 @@ +# Conclusion: Build detz::wa natively in C++, transpiled from wa-go with whatsmeow as referee + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Conclusion | +| Tier | N/A | +| Date decided | 2026-10-27 | +| Decided by | recommendation by tai (agent, Claude Opus 5.5), pending retoor | +| Status | Active | +| Confidence | Medium | + +## Question / problem statement + +How should detz (C++) talk to WhatsApp: which source to transpile, which libraries to use, and which parts need deep research before code? + +## Conclusion + +Build a native module `detz::wa` with no new dependencies: libcurl WebSocket (proven: 101 Switching Protocols from wss://web.whatsapp.com/ws/chat on this machine), OpenSSL 3.5 for X25519, AES-GCM/CTR/CBC, HKDF, HMAC, PBKDF2, SHA, and a hand-written protobuf reader/writer. Transpile code from wa-go (MIT, small, layered, ships Baileys-captured golden vectors usable as C++ fixtures); use whatsmeow (MPL-2.0, most maintained) as the behaviour referee for constants, node shapes, LID and the send path. Do not transpile libsignal-go or libsignal-protocol-c (both GPL-3.0). Deep research before code: XEdDSA signing (OpenSSL lacks Edwards25519 scalar/point ops), the client-version and 405 policy, LID addressing, and ban behaviour (only with a sacrificial number). v1 scope: link, login, 1:1 text and image send, 1:1 text receive, contact aliases; no groups, app-state, history, calls. + +## Supporting sources + +- [github-jfelipesjc-wa-go](../github-jfelipesjc-wa-go.md): MIT code source and golden vectors. +- [github-tulir-whatsmeow](../github-tulir-whatsmeow.md): constants, protocol behaviour, activity 78 commits in 90 days. +- [github-tulir-libsignal-protocol-go](../github-tulir-libsignal-protocol-go.md): XEdDSA algorithm; GPL-3.0 makes it a non-source. +- [github-signalapp-libsignal-protocol-c](../github-signalapp-libsignal-protocol-c.md): C XEdDSA exists but GPL-3.0. +- [github-oxidezap-whatsapp-rust](../github-oxidezap-whatsapp-rust.md): too large to transpile, tie-breaker only. +- [github-whiskeysockets-baileys](../github-whiskeysockets-baileys.md): origin of the vectors. +- [checkleaked-best-open-source-libraries](../checkleaked-best-open-source-libraries.md): ban risk statement (vendor, weak). + +## Alternatives considered and rejected + +Link whatsmeow as a cgo c-archive into detz (neonize style): works, about 200 Go lines, but adds the Go toolchain to the build, ships GPL-3.0 libsignal inside the binary, and is not C++. Kept as a fallback, not chosen. Go sidecar process over HTTP: same licensing issue plus a second process to supervise; used only as the deadline shortcut. Transpile Baileys: MIT but TypeScript async style and low recent activity. Transpile whatsapp-rust: about 650,000 lines. + +## Risks / open questions + +wa-go is four months old with one author; if its vectors or logic prove wrong, more of whatsmeow's design has to be reimplemented without copying. Protocol drift (405 client outdated) needs continuous upkeep. XEdDSA may need more code than expected. Ban risk is unmeasured. The full handshake was not executed here: the QR probe was refused by the session's permission classifier. + +## Action taken + +Specified in taicpp/docs/whatsapp.md (classes, crypto mapping, build vs research table, caps, tests, phases). Nothing built. Recommendation by tai pending retoor's go. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial conclusion recorded. | diff --git a/research/whatsapp-automation/conclusions/no-native-python-library-no-browser.md b/research/whatsapp-automation/conclusions/no-native-python-library-no-browser.md new file mode 100644 index 0000000..e2cae32 --- /dev/null +++ b/research/whatsapp-automation/conclusions/no-native-python-library-no-browser.md @@ -0,0 +1,49 @@ +# Conclusion: There is no native Python WhatsApp library, and no browser is needed + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Conclusion | +| Tier | N/A | +| Date decided | 2026-10-27 | +| Decided by | recommendation by tai (agent, Claude Opus 5.5), pending retoor | +| Status | Active | +| Confidence | High | + +## Question / problem statement + +Which Python libraries can automate WhatsApp on a normal personal phone number, could they be transpiled to C++, and is browser automation required? + +## Conclusion + +No Python library implements the current multi-device protocol. The best one, neonize, is whatsmeow (Go) behind ctypes; whatsfly is the same idea and immature; yowsup is pure Python but targets the dead phone-registration protocol and gets numbers banned; everything else drives WhatsApp Web in a browser or the Android app. Transpiling Python is therefore pointless; the transpile sources are Go (whatsmeow, wa-go). A browser is not required: all real implementations speak Noise over one WebSocket, and the phone is needed only once to link the device by QR or 8-character pairing code. + +## Supporting sources + +- [github-krypton-byte-neonize](../github-krypton-byte-neonize.md): 93 exported Go functions under a ctypes layer: no Python protocol code. +- [github-tgalal-yowsup](../github-tgalal-yowsup.md): old e1.whatsapp.net protocol, inactive since 2021. +- [github-tulir-whatsmeow](../github-tulir-whatsmeow.md): WebSocket plus Noise, QR and pairing-code linking, no browser. +- [github-jfelipesjc-wa-go](../github-jfelipesjc-wa-go.md): independent proof that the stack is implementable from scratch without a browser. +- [pypi-whatsfly](../pypi-whatsfly.md): whatsmeow wrapper, early. +- [astra-engine-readthedocs](../astra-engine-readthedocs.md): example of the browser-based class that was rejected. + +## Alternatives considered and rejected + +Browser automation (pywhatkit, Astra, WPPConnect-style): rejected because it needs a browser and about half a gigabyte more RAM (Baileys docs listing). Android automation (Supbot2): needs a phone or emulator. Official Business Cloud API: requires a business number that cannot stay on the normal app. + +## Risks / open questions + +A new pure Python implementation could appear; neonize could grow native code. Neither changes the C++ plan. + +## Action taken + +Recorded in taicpp/docs/whatsapp.md section 2. Nothing built. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial conclusion recorded. | diff --git a/research/whatsapp-automation/debian-python-yowsup.md b/research/whatsapp-automation/debian-python-yowsup.md new file mode 100644 index 0000000..dd5952b --- /dev/null +++ b/research/whatsapp-automation/debian-python-yowsup.md @@ -0,0 +1,28 @@ +# python-yowsup 2.5.7-4 on Debian (3 language URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | python-yowsup 2.5.7-4 on Debian (3 language URLs) | +| Source URL | https://packages-picconi.debian.org/ru/buster/python-yowsup | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +yowsup search; legacy package. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/deuill-slidge-whatsapp-pair-phone.md b/research/whatsapp-automation/deuill-slidge-whatsapp-pair-phone.md new file mode 100644 index 0000000..e151b39 --- /dev/null +++ b/research/whatsapp-automation/deuill-slidge-whatsapp-pair-phone.md @@ -0,0 +1,28 @@ +# slidge-whatsapp commit d01c37a: pair-phone (3 URLs, plus gateway.py at 9e54542) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | slidge-whatsapp commit d01c37a: pair-phone (3 URLs, plus gateway.py at 9e54542) | +| Source URL | https://git.deuill.org/deuill/slidge-whatsapp/commit/d01c37af5188fd0a1e4d492656a7ab9d810c8cf5 | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Pairing search; phone-number pairing code flow on whatsmeow PairPhone. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/devco-whatsapp-mcp.md b/research/whatsapp-automation/devco-whatsapp-mcp.md new file mode 100644 index 0000000..fe39b0e --- /dev/null +++ b/research/whatsapp-automation/devco-whatsapp-mcp.md @@ -0,0 +1,28 @@ +# dev.co whatsapp mcp + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | dev.co whatsapp mcp | +| Source URL | https://dev.co/ai/mcp/whatsapp-mcp | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +MCP search; directory page for lharries/whatsapp-mcp. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/docsrs-wa-rs.md b/research/whatsapp-automation/docsrs-wa-rs.md new file mode 100644 index 0000000..32a34c5 --- /dev/null +++ b/research/whatsapp-automation/docsrs-wa-rs.md @@ -0,0 +1,28 @@ +# wa-rs 0.2.0 on docs.rs + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | wa-rs 0.2.0 on docs.rs | +| Source URL | https://docs.rs/crate/wa-rs/latest | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; stable-Rust fork of whatsapp-rust, MIT. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/docsrs-whatsmeow.md b/research/whatsapp-automation/docsrs-whatsmeow.md new file mode 100644 index 0000000..e1693c9 --- /dev/null +++ b/research/whatsapp-automation/docsrs-whatsmeow.md @@ -0,0 +1,28 @@ +# whatsmeow 0.1.4 on docs.rs + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | whatsmeow 0.1.4 on docs.rs | +| Source URL | https://docs.rs/whatsmeow | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; same Go-bridge crate, build failed for 0.1.4. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/facebook-about-the-platform.md b/research/whatsapp-automation/facebook-about-the-platform.md new file mode 100644 index 0000000..f5fdd92 --- /dev/null +++ b/research/whatsapp-automation/facebook-about-the-platform.md @@ -0,0 +1,28 @@ +# WhatsApp Business Platform: about the platform + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | WhatsApp Business Platform: about the platform | +| Source URL | https://developers.facebook.com/documentation/business-messaging/whatsapp/about-the-platform | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Cloud API search; test WABA and test number created automatically. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/facebook-cloud-api-calling.md b/research/whatsapp-automation/facebook-cloud-api-calling.md new file mode 100644 index 0000000..75446b1 --- /dev/null +++ b/research/whatsapp-automation/facebook-cloud-api-calling.md @@ -0,0 +1,28 @@ +# Cloud API Calling + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Cloud API Calling | +| Source URL | https://developers.facebook.com/documentation/business-messaging/whatsapp/calling.md | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Cloud API search; official calling docs. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/facebook-community-thread-outage.md b/research/whatsapp-automation/facebook-community-thread-outage.md new file mode 100644 index 0000000..1c4cb39 --- /dev/null +++ b/research/whatsapp-automation/facebook-community-thread-outage.md @@ -0,0 +1,28 @@ +# Meta developer community thread 849020947139819 + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Meta developer community thread 849020947139819 | +| Source URL | https://developers.secure.facebook.com/community/threads/849020947139819 | +| Source type | forum thread | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Cloud API search; outage thread. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/freebsd-forum-whatsapp-client.md b/research/whatsapp-automation/freebsd-forum-whatsapp-client.md new file mode 100644 index 0000000..26175c3 --- /dev/null +++ b/research/whatsapp-automation/freebsd-forum-whatsapp-client.md @@ -0,0 +1,28 @@ +# FreeBSD forums post on a WhatsApp client + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | FreeBSD forums post on a WhatsApp client | +| Source URL | https://forums.freebsd.org/posts/699346 | +| Source type | forum thread | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +C++ WhatsApp search; forum question. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/geeksforgeeks-automate-whatsapp-python-video.md b/research/whatsapp-automation/geeksforgeeks-automate-whatsapp-python-video.md new file mode 100644 index 0000000..0b5588c --- /dev/null +++ b/research/whatsapp-automation/geeksforgeeks-automate-whatsapp-python-video.md @@ -0,0 +1,28 @@ +# automate whatsapp messages with python + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | automate whatsapp messages with python | +| Source URL | https://ui.geeksforgeeks.org/videos/automate-whatsapp-messages-with-python | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; tutorial, likely browser based. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/github-andrusgerman-whatsmeow.md b/research/whatsapp-automation/github-andrusgerman-whatsmeow.md new file mode 100644 index 0000000..d558fe6 --- /dev/null +++ b/research/whatsapp-automation/github-andrusgerman-whatsmeow.md @@ -0,0 +1,28 @@ +# AndrusGerman/whatsmeow + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | AndrusGerman/whatsmeow | +| Source URL | https://github.com/AndrusGerman/whatsmeow | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +whatsmeow search; fork. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/github-endroemily-yowsup.md b/research/whatsapp-automation/github-endroemily-yowsup.md new file mode 100644 index 0000000..2844520 --- /dev/null +++ b/research/whatsapp-automation/github-endroemily-yowsup.md @@ -0,0 +1,28 @@ +# endroemily/yowsup mirror + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | endroemily/yowsup mirror | +| Source URL | https://github.com/endroemily/yowsup | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +yowsup search; mirror carrying the instant-ban registration warning. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/github-iacup-yowsup.md b/research/whatsapp-automation/github-iacup-yowsup.md new file mode 100644 index 0000000..989fa6d --- /dev/null +++ b/research/whatsapp-automation/github-iacup-yowsup.md @@ -0,0 +1,28 @@ +# iacup/yowsup + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | iacup/yowsup | +| Source URL | https://www.github.com/iacup/yowsup | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +yowsup search; mirror. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/github-jfelipesjc-wa-go.md b/research/whatsapp-automation/github-jfelipesjc-wa-go.md new file mode 100644 index 0000000..105f103 --- /dev/null +++ b/research/whatsapp-automation/github-jfelipesjc-wa-go.md @@ -0,0 +1,53 @@ +# jfelipesjc/wa-go: WhatsApp Web multi-device protocol stack written from scratch in Go + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | jfelipesjc/wa-go: WhatsApp Web multi-device protocol stack written from scratch in Go | +| Source URL | https://github.com/jfelipesjc/wa-go | +| Source publisher / author | Jose Felipe Leal (jfelipesjc) | +| Source type | repository | +| Source date (published) | Unknown — not stated (repository created 2026-06-26; HEAD 47eccfc, 2026-09-22) | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | Medium | +| Status | Active | + +## Summary + +An MIT-licensed reimplementation of the whole stack (framing, Noise, binary codec, pairing, Signal X3DH and Double Ratchet, sender keys, LTHash app state, media) that does not use whatsmeow or Baileys. Cloned and read: README status table, package layout, keys, x3dh, media API, decisions.md, testdata. Validated against golden traces captured from real Baileys. + +## Key findings + +- README status: pairing by QR and pairing code, 1:1 send and receive (text, image, reaction), group create and sender-key send are marked proven live; group participant management, pin/mute, profile writes, media receive are offline-tested only. +- Package sizes (non-blank non-test Go): client 14379, wire 2778, signal 1625, manager 636, appstate 689, store 568, media 517, control 468, keys 311, waproto 241 (+11676 generated), ws 130. +- testdata (788 KB): traces/connect_pair (noise.json, frames_raw.jsonl, nodes.jsonl, client_payload.json, qr.json), codec_battery/nodes.jsonl, signal/session_ab.json and group_ab.json, media/media_vectors.json, paircode/vectors.json, appstate patch. +- harness/ contains Node scripts that generate those vectors from real Baileys. +- decisions.md ADR-001: attribute order in binary nodes is not significant (whatsmeow emits Go map order); byte exactness required only for the Noise handshake and protobuf payloads. +- keys.go mirrors Baileys initAuthCreds; registration id is 14 bits; uses filippo.io/edwards25519 for signatures. +- Dependencies: x/crypto, protobuf, filippo.io/edwards25519, coder/websocket, qrterminal, modernc sqlite. License MIT. +- Activity: 17 commits in the last 90 days; 1 star (GitHub API, 2026-10-27). + +## Pros / strengths + +MIT, small, layered the way detz wants, and it ships golden vectors usable as C++ test fixtures unchanged. Honest proven-live versus offline table. + +## Cons / limitations / caveats + +Very young (four months), one author, one star: not battle tested. Its claims of live proof were not re-verified here. Its docs are partly Portuguese. Follows Baileys, which can lag whatsmeow on protocol changes. + +## Relevance to tai + +Chosen as the code source for the native C++ transpile (wire, keys, Signal, media, pairing) and the source of test fixtures. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/github-kbiits-whiskey-baileys.md b/research/whatsapp-automation/github-kbiits-whiskey-baileys.md new file mode 100644 index 0000000..af48037 --- /dev/null +++ b/research/whatsapp-automation/github-kbiits-whiskey-baileys.md @@ -0,0 +1,28 @@ +# Whiskey Baileys + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Whiskey Baileys | +| Source URL | https://github.com/kbiits/Whiskey-Baileys | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Baileys search; fork. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/github-krypton-byte-neonize.md b/research/whatsapp-automation/github-krypton-byte-neonize.md new file mode 100644 index 0000000..6daf849 --- /dev/null +++ b/research/whatsapp-automation/github-krypton-byte-neonize.md @@ -0,0 +1,49 @@ +# krypton-byte/neonize: whatsmeow binder for Python + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | krypton-byte/neonize: whatsmeow binder for Python | +| Source URL | https://github.com/krypton-byte/neonize | +| Source publisher / author | krypton-byte | +| Source type | repository | +| Source date (published) | Unknown — not stated (HEAD ce08270, 2026-10-15) | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | High | +| Status | Active | + +## Summary + +The most capable 'Python WhatsApp library' is a ctypes binding over whatsmeow compiled as a C shared library. Cloned and the binding mechanism read. + +## Key findings + +- goneonize/main.go imports "C" and has 93 `//export` functions; 4,362 Go lines in total. +- neonize/_binder.py loads the shared library with ctypes and defines CFUNCTYPE callbacks (QR, events). +- 14,918 Python lines; data crosses the boundary as protobuf (goneonize/Neonize.proto). +- License Apache-2.0; 759 stars; 62 commits in the last 90 days (GitHub API). + +## Pros / strengths + +Proves whatsmeow works fine behind a C ABI; the same shared library could be called from C++ directly. + +## Cons / limitations / caveats + +No protocol code in Python at all, so nothing to transpile from Python. Ships a Go binary per platform. + +## Relevance to tai + +Settles the 'best Python library' question: the answer is whatsmeow, and transpiling Python is pointless. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/github-lharries-whatsapp-mcp.md b/research/whatsapp-automation/github-lharries-whatsapp-mcp.md new file mode 100644 index 0000000..0247c32 --- /dev/null +++ b/research/whatsapp-automation/github-lharries-whatsapp-mcp.md @@ -0,0 +1,49 @@ +# lharries/whatsapp-mcp: WhatsApp MCP server + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | lharries/whatsapp-mcp: WhatsApp MCP server | +| Source URL | https://github.com/lharries/whatsapp-mcp | +| Source publisher / author | Luke Harries (lharries) | +| Source type | repository | +| Source date (published) | Unknown — not stated (HEAD 7d6a06d, 2025-07-13) | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | High | +| Status | Active | + +## Summary + +A Go bridge on whatsmeow plus a Python MCP server that gives an LLM tools to read and send WhatsApp messages. Cloned and read. + +## Key findings + +- whatsapp-bridge/main.go: HTTP handlers `/api/send` and `/api/download`, QR printed with qrterminal; 1,144 Go lines. +- whatsapp-mcp-server/main.py tools: search_contacts, list_messages, list_chats, get_chat, get_direct_chat_by_contact, get_contact_chats, get_last_interaction, get_message_context, send_message, send_file (and more after line 187); 948 Python lines. +- go.mod pins whatsmeow v0.0.0-20250318233852-06705625cf82 (19 months old on 2026-10-27). +- Directory listings report about 20 days until re-authentication (not verified). + +## Pros / strengths + +Exactly the agent shape needed, small, and detz already has an MCP stdio client. + +## Cons / limitations / caveats + +Last commit 2025-07-13; the pinned whatsmeow is stale and may hit the 405 client-outdated failure; needs Go plus Python plus uv. Not run here. + +## Relevance to tai + +The zero-C++ shortcut for the user's two-day promise (conclusion mcp-bridge-shortcut). + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/github-lucklrj-whatsmeow.md b/research/whatsapp-automation/github-lucklrj-whatsmeow.md new file mode 100644 index 0000000..9b0bb31 --- /dev/null +++ b/research/whatsapp-automation/github-lucklrj-whatsmeow.md @@ -0,0 +1,28 @@ +# lucklrj/whatsmeow + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | lucklrj/whatsmeow | +| Source URL | https://github.com/lucklrj/whatsmeow | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +whatsmeow search; fork. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/github-mangadul-whatsappy.md b/research/whatsapp-automation/github-mangadul-whatsappy.md new file mode 100644 index 0000000..d0b1fd7 --- /dev/null +++ b/research/whatsapp-automation/github-mangadul-whatsappy.md @@ -0,0 +1,28 @@ +# mangadul/WhatsAppy + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | mangadul/WhatsAppy | +| Source URL | https://github.com/mangadul/WhatsAppy | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +yowsup search; derivative. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/github-oxidezap-whatsapp-rust.md b/research/whatsapp-automation/github-oxidezap-whatsapp-rust.md new file mode 100644 index 0000000..f04cf28 --- /dev/null +++ b/research/whatsapp-automation/github-oxidezap-whatsapp-rust.md @@ -0,0 +1,48 @@ +# oxidezap/whatsapp-rust: WhatsApp client written in Rust based on whatsmeow and Baileys + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | oxidezap/whatsapp-rust: WhatsApp client written in Rust based on whatsmeow and Baileys | +| Source URL | https://github.com/oxidezap/whatsapp-rust | +| Source publisher / author | oxidezap (jlucaso1) | +| Source type | repository | +| Source date (published) | Unknown — not stated (HEAD 950bbe0, 2026-10-27; created 2025-07-01) | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | Medium | +| Status | Active | + +## Summary + +A Rust reimplementation, inspired by whatsmeow and Baileys, now including VoIP. Cloned and sized; not read in depth. + +## Key findings + +- Measured Rust lines by top directory: wacore 258,521, src 242,697, plugins 136,546, tools 43,830, tests 24,579, storages 16,872, waproto 3,615 (about 650,000 total). +- License MIT; 941 stars; at least 100 commits in the last 90 days (API page limit reached on 2026-10-07). +- Search listing: QR and pair-code login, Signal E2E, media, groups, calls; pluggable storage with SQLite default. + +## Pros / strengths + +Very active, MIT, broad feature set; a second independent implementation to cross-check behaviour. + +## Cons / limitations / caveats + +Far too large to transpile; the size is dominated by VoIP and plugins that detz does not need. + +## Relevance to tai + +Rejected as a transpile source; useful only as a tie-breaker reference. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/github-signalapp-libsignal-protocol-c.md b/research/whatsapp-automation/github-signalapp-libsignal-protocol-c.md new file mode 100644 index 0000000..ac37c66 --- /dev/null +++ b/research/whatsapp-automation/github-signalapp-libsignal-protocol-c.md @@ -0,0 +1,48 @@ +# signalapp/libsignal-protocol-c + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | signalapp/libsignal-protocol-c | +| Source URL | https://github.com/signalapp/libsignal-protocol-c | +| Source publisher / author | Signal (signalapp) | +| Source type | repository | +| Source date (published) | Unknown — not stated (last commit 2020-03-27) | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | Medium | +| Status | Active | + +## Summary + +The deprecated C implementation of the Signal protocol. Cloned to see whether its XEdDSA C code could be vendored. + +## Key findings + +- LICENSE: GPL-3.0. +- src/curve25519/ed25519/additions/xeddsa.c implements `xed25519_sign`; the ed25519 tree has 4,653 non-blank C lines. +- src/ totals 21,079 C plus 8,377 header lines; last commit 2020-03-27. + +## Pros / strengths + +Ready-made C XEdDSA. + +## Cons / limitations / caveats + +GPL-3.0 repository license; the license of the curve25519 subtree on its own was not established. Unmaintained. + +## Relevance to tai + +Not vendored; XEdDSA stays a deep-research item (permissive implementation or port of filippo.io/edwards25519). + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/github-tgalal-yowsup.md b/research/whatsapp-automation/github-tgalal-yowsup.md new file mode 100644 index 0000000..7476a46 --- /dev/null +++ b/research/whatsapp-automation/github-tgalal-yowsup.md @@ -0,0 +1,48 @@ +# tgalal/yowsup: the Python WhatsApp library + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | tgalal/yowsup: the Python WhatsApp library | +| Source URL | https://github.com/tgalal/yowsup | +| Source publisher / author | Tarek Galal (tgalal) | +| Source type | repository | +| Source date (published) | Unknown — not stated (last commit 2021-12-14) | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | High | +| Status | Active | + +## Summary + +The only pure Python protocol implementation. Cloned: it targets the old phone-registration protocol, not multi-device linking, and has been inactive since 2021. + +## Key findings + +- yowsup/common/constants.py endpoint `e1.whatsapp.net:443` (primary device protocol). +- Last commit 2021-12-14; 13,153 Python lines. +- Mirrored README (search listing) warns that registration through yowsup is detected and gives an instant ban. + +## Pros / strengths + +Pure Python, readable. + +## Cons / limitations / caveats + +Dead and registers as a primary device; not usable for a companion device on a personal phone. + +## Relevance to tai + +Rejected; recorded so nobody tries to transpile it. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/github-thinkter-rust-meow.md b/research/whatsapp-automation/github-thinkter-rust-meow.md new file mode 100644 index 0000000..052c348 --- /dev/null +++ b/research/whatsapp-automation/github-thinkter-rust-meow.md @@ -0,0 +1,28 @@ +# thinkter/rust-meow + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | thinkter/rust-meow | +| Source URL | https://github.com/thinkter/rust-meow | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; another Rust attempt. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/github-tulir-libsignal-protocol-go.md b/research/whatsapp-automation/github-tulir-libsignal-protocol-go.md new file mode 100644 index 0000000..ad1d50a --- /dev/null +++ b/research/whatsapp-automation/github-tulir-libsignal-protocol-go.md @@ -0,0 +1,49 @@ +# tulir/libsignal-protocol-go (go.mau.fi/libsignal) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | tulir/libsignal-protocol-go (go.mau.fi/libsignal) | +| Source URL | https://github.com/tulir/libsignal-protocol-go | +| Source publisher / author | Tulir Asokan, fork of RadicalApp libsignal-protocol-go | +| Source type | repository | +| Source date (published) | Unknown — not stated | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | High | +| Status | Active | + +## Summary + +The Signal protocol implementation whatsmeow uses. Cloned and its ecc package read. It implements XEdDSA signing over Curve25519 keys on top of filippo.io/edwards25519. + +## Key findings + +- ecc/SignCurve25519.go computes XEdDSA: clamped scalar, A = aB, r from SHA-512 over a prefix, the key, the message and random bytes, R = rB, s = h*a + r with `MultiplyAdd`, using filippo.io/edwards25519 and its field package. +- License GPL-3.0 (LICENSE file). +- Measured package sizes (non-blank non-comment Go): state 924, session 531, groups 520, protocol 515, serialize 421, keys 332, ratchet 282, ecc 202, cipher 159, util 159; 5,416 total non-test. +- The 1:1 subset (no groups, fingerprint, logger, provision) is about 3,585 lines. + +## Pros / strengths + +Shows exactly how XEdDSA is done for WhatsApp in about 60 lines of logic. + +## Cons / limitations / caveats + +GPL-3.0, so not a transpile source for a commercial product. Only the ecc package was read closely. + +## Relevance to tai + +Explains the one primitive OpenSSL lacks (XEdDSA signing) and why the Signal layer must come from elsewhere (wa-go, MIT). + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/github-tulir-whatsmeow.md b/research/whatsapp-automation/github-tulir-whatsmeow.md new file mode 100644 index 0000000..ef2d3c4 --- /dev/null +++ b/research/whatsapp-automation/github-tulir-whatsmeow.md @@ -0,0 +1,60 @@ +# tulir/whatsmeow: Go library for the WhatsApp web multidevice API + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | tulir/whatsmeow: Go library for the WhatsApp web multidevice API | +| Source URL | https://github.com/tulir/whatsmeow | +| Source publisher / author | Tulir Asokan (tulir) | +| Source type | repository | +| Source date (published) | Unknown — not stated (HEAD commit 1eec113, 2026-10-27; repository created 2021-10-06) | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | High | +| Status | Active | + +## Summary + +The most used and most maintained WhatsApp multi-device implementation. Shallow-cloned at HEAD and read directly: socket constants, Noise handshake, frame socket, token dictionary, pairing (QR and phone code), prekeys, send path, upload and media key derivation. It speaks the protocol over one WebSocket and needs no browser. + +## Key findings + +- WebSocket URL `wss://web.whatsapp.com/ws/chat`, Origin `https://web.whatsapp.com` (socket/constants.go). +- Noise pattern `Noise_XX_25519_AESGCM_SHA256\0\0\0\0`; connection header `'W','A',6,3` (magic 6, token DictVersion 3). +- Frames: 3-byte length prefix, `FrameMaxSize = 1 << 24`. +- Token dictionary in binary/token/token.go: 236 single-byte tokens, 1266 quoted strings in the file in total. +- Server certificate pinned by `WACertPubKey` in handshake.go. +- Client version constant `2.3000.1050728964` in store/clientpayload.go; update.go fetches `client_revision` from web.whatsapp.com; connect failure 405 means client outdated. +- Pairing code: PBKDF2-SHA256 with 2<<16 iterations, AES-CTR (pair-code.go); node tag `link_code_companion_reg`. +- QR data: `https://wa.me/settings/linked_devices#ref,noise,identity,adv,clientType` (pair.go makeQRData); device signature sent as `pair-device-sign`. +- Prekeys: `WantedPreKeyCount = 50`, `MinPreKeyCount = 5` (prekeys.go). +- Media: HKDF-SHA256 to 112 bytes with info strings such as `WhatsApp Image Keys`, HMAC truncated to 10 bytes appended (download.go, upload.go), upload path `/mms//`. +- send.go compares a server `phash` against the computed participant hash; it mentions LID 45 times. +- README: calls and broadcast lists not implemented; status messages experimental. +- License MPL-2.0; 7682 stars; 78 commits between 2026-07-27 and 2026-10-27 (GitHub API). +- Measured size: 24,301 non-blank non-test non-generated Go lines, plus 107,816 lines of generated .pb.go from 10,423 .proto lines in 59 proto packages. +- Depends on go.mau.fi/libsignal (GPL-3.0), coder/websocket, google protobuf, x/crypto. + +## Pros / strengths + +Battle tested (base of mautrix-whatsapp and most bridges), tracks protocol changes quickly, readable, every value we need is in plain constants. + +## Cons / limitations / caveats + +Its Signal dependency libsignal-go is GPL-3.0, so whatsmeow plus its dependency cannot be transpiled whole into a commercial closed product. MPL-2.0 is file-level copyleft for derived files. The version constant has to be bumped continuously. Size measured by line counts only, behaviour not executed here (a QR probe run was refused by the session's permission classifier). + +## Relevance to tai + +The behaviour reference for detz::wa: constants, node shapes, the 1:1 send path and LID handling are read from it. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/github-whiskeysockets-baileys.md b/research/whatsapp-automation/github-whiskeysockets-baileys.md new file mode 100644 index 0000000..ef86003 --- /dev/null +++ b/research/whatsapp-automation/github-whiskeysockets-baileys.md @@ -0,0 +1,49 @@ +# WhiskeySockets/Baileys: WebSockets-based TypeScript library for the WhatsApp Web API + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Dossier | +| Tier | 1 | +| Source title | WhiskeySockets/Baileys: WebSockets-based TypeScript library for the WhatsApp Web API | +| Source URL | https://github.com/WhiskeySockets/Baileys | +| Source publisher / author | WhiskeySockets community (maintainer named in README: Rajeh) | +| Source type | repository | +| Source date (published) | Unknown — not stated (HEAD 81345be, 2026-10-26) | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | both | +| Confidence | Medium | +| Status | Active | + +## Summary + +The TypeScript protocol implementation. Cloned; README head read and source size measured. It talks to WhatsApp Web over WebSockets with no browser. + +## Key findings + +- README: 'Baileys is a WebSockets-based TypeScript library for interacting with the WhatsApp Web API'; 7.0.0 introduced breaking changes; the README is temporary, new guide at baileys.wiki. +- Measured: 48,898 non-blank TypeScript lines in src/ (excluding WAProto and tests). +- License MIT; 11469 stars; 7 commits in the last 90 days (GitHub API). +- Search listings (mintlify) state Node.js 20+ and QR or pairing-code linking; the original repository was taken down and this is the community continuation. + +## Pros / strengths + +Large community, MIT, the source of wa-go's golden traces. + +## Cons / limitations / caveats + +Low commit rate in the last 90 days compared to whatsmeow; TypeScript async style is further from C++ than Go; only the README head was read, not the protocol code. + +## Relevance to tai + +Secondary reference only; its value to detz is indirect, through the wa-go vectors. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Initial dossier created (repository shallow-cloned and read; sizes measured with line counts; activity from the GitHub API). | diff --git a/research/whatsapp-automation/gittrend-whatsapp-rust.md b/research/whatsapp-automation/gittrend-whatsapp-rust.md new file mode 100644 index 0000000..d24a924 --- /dev/null +++ b/research/whatsapp-automation/gittrend-whatsapp-rust.md @@ -0,0 +1,28 @@ +# gittrend oxidezap/whatsapp-rust + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | gittrend oxidezap/whatsapp-rust | +| Source URL | https://gittrend.io/repo/oxidezap/whatsapp-rust | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; trend listing. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/glama-wsapi-get-pair-code.md b/research/whatsapp-automation/glama-wsapi-get-pair-code.md new file mode 100644 index 0000000..c2f6e35 --- /dev/null +++ b/research/whatsapp-automation/glama-wsapi-get-pair-code.md @@ -0,0 +1,28 @@ +# wsapi-mcp whatsapp_get_pair_code tool + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | wsapi-mcp whatsapp_get_pair_code tool | +| Source URL | https://glama.ai/mcp/servers/@wsapi-chat/wsapi-mcp/tools/whatsapp_get_pair_code | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Pairing search; hosted API MCP tool. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/greenapi-cpp-sdk.md b/research/whatsapp-automation/greenapi-cpp-sdk.md new file mode 100644 index 0000000..5b26afe --- /dev/null +++ b/research/whatsapp-automation/greenapi-cpp-sdk.md @@ -0,0 +1,28 @@ +# Green-API C++ WhatsApp Library (4 mirror URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Green-API C++ WhatsApp Library (4 mirror URLs) | +| Source URL | https://green-api.com/en/docs/sdk/cpp/client | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +C++ WhatsApp search; REST wrapper over a paid hosted service, CC BY-ND 4.0. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/greptile-whatsmeow.md b/research/whatsapp-automation/greptile-whatsmeow.md new file mode 100644 index 0000000..2c6c866 --- /dev/null +++ b/research/whatsapp-automation/greptile-whatsmeow.md @@ -0,0 +1,28 @@ +# greptile grepository whatsmeow + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | greptile grepository whatsmeow | +| Source URL | https://www.greptile.com/grepository/whatsmeow | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +whatsmeow search; code index page. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/jsdelivr-baileys-p-readme.md b/research/whatsapp-automation/jsdelivr-baileys-p-readme.md new file mode 100644 index 0000000..56983c7 --- /dev/null +++ b/research/whatsapp-automation/jsdelivr-baileys-p-readme.md @@ -0,0 +1,28 @@ +# baileys-p 6.8.0 README + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | baileys-p 6.8.0 README | +| Source URL | https://cdn.jsdelivr.net/npm/baileys-p@6.8.0/README.md | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Baileys search; npm fork. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/jsdelivr-whaileys-readme.md b/research/whatsapp-automation/jsdelivr-whaileys-readme.md new file mode 100644 index 0000000..ffd8b1a --- /dev/null +++ b/research/whatsapp-automation/jsdelivr-whaileys-readme.md @@ -0,0 +1,28 @@ +# whaileys 6.5.0 README + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | whaileys 6.5.0 README | +| Source URL | https://cdn.jsdelivr.net/npm/whaileys@6.5.0/README.md | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Baileys search; npm fork. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/librariesio-supbot.md b/research/whatsapp-automation/librariesio-supbot.md new file mode 100644 index 0000000..3641877 --- /dev/null +++ b/research/whatsapp-automation/librariesio-supbot.md @@ -0,0 +1,28 @@ +# An unofficial WhatsApp automation library (supbot) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | An unofficial WhatsApp automation library (supbot) | +| Source URL | https://libraries.io/pypi/supbot | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; drives the Android app through Appium. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/librs-wacore.md b/research/whatsapp-automation/librs-wacore.md new file mode 100644 index 0000000..d3e054d --- /dev/null +++ b/research/whatsapp-automation/librs-wacore.md @@ -0,0 +1,28 @@ +# wacore on lib.rs + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | wacore on lib.rs | +| Source URL | https://lib.rs/crates/wacore | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; core crate of whatsapp-rust. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/make-community-own-number.md b/research/whatsapp-automation/make-community-own-number.md new file mode 100644 index 0000000..525561a --- /dev/null +++ b/research/whatsapp-automation/make-community-own-number.md @@ -0,0 +1,28 @@ +# Own WhatsApp number does not send a message, test number works + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Own WhatsApp number does not send a message, test number works | +| Source URL | https://community.make.com/t/own-whatsapp-number-does-not-send-a-message-test-number-works/36711 | +| Source type | forum thread | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Cloud API search; registering an own number removes it from the normal app. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/mcpservers-aukik-whatsapp-mcp.md b/research/whatsapp-automation/mcpservers-aukik-whatsapp-mcp.md new file mode 100644 index 0000000..79829c2 --- /dev/null +++ b/research/whatsapp-automation/mcpservers-aukik-whatsapp-mcp.md @@ -0,0 +1,28 @@ +# mcpservers.org aukik/whatsapp-mcp (7 language URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | mcpservers.org aukik/whatsapp-mcp (7 language URLs) | +| Source URL | https://mcpservers.org/servers/aukik/whatsapp-mcp | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +MCP search; directory page; source of the about-20-days re-authentication claim. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/mcpservers-tonydgbd-whatsapp-mcp-go.md b/research/whatsapp-automation/mcpservers-tonydgbd-whatsapp-mcp-go.md new file mode 100644 index 0000000..d311774 --- /dev/null +++ b/research/whatsapp-automation/mcpservers-tonydgbd-whatsapp-mcp-go.md @@ -0,0 +1,28 @@ +# mcpservers.org tonydgbd/whatsapp-mcp-go (2 URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | mcpservers.org tonydgbd/whatsapp-mcp-go (2 URLs) | +| Source URL | https://mcpservers.org/servers/tonydgbd/whatsapp-mcp-go | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +MCP search; a Go-only variant. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/medium-automate-whatsapp-python.md b/research/whatsapp-automation/medium-automate-whatsapp-python.md new file mode 100644 index 0000000..276ff19 --- /dev/null +++ b/research/whatsapp-automation/medium-automate-whatsapp-python.md @@ -0,0 +1,28 @@ +# automate whatsapp messages using python + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | automate whatsapp messages using python | +| Source URL | https://medium.com/@hrithikkumarsingh/automate-whatsapp-messages-using-python-81cf7d850e97 | +| Source type | blog post | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; tutorial. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/mintlify-baileys.md b/research/whatsapp-automation/mintlify-baileys.md new file mode 100644 index 0000000..8073ee2 --- /dev/null +++ b/research/whatsapp-automation/mintlify-baileys.md @@ -0,0 +1,28 @@ +# Baileys docs on mintlify (3 case variants) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Baileys docs on mintlify (3 case variants) | +| Source URL | https://www.mintlify.com/WhiskeySockets/Baileys | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Baileys search; states WebSockets, no browser, Node 20+, QR or pairing code, 7.0.0 RC. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/mintlify-whatsapp-rust.md b/research/whatsapp-automation/mintlify-whatsapp-rust.md new file mode 100644 index 0000000..dd11df9 --- /dev/null +++ b/research/whatsapp-automation/mintlify-whatsapp-rust.md @@ -0,0 +1,28 @@ +# whatsapp-rust docs on mintlify + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | whatsapp-rust docs on mintlify | +| Source URL | https://www.mintlify.com/jlucaso1/whatsapp-rust | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; led to the oxidezap repository (see its dossier). + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/openhab-yowsup-helpers.md b/research/whatsapp-automation/openhab-yowsup-helpers.md new file mode 100644 index 0000000..09a070f --- /dev/null +++ b/research/whatsapp-automation/openhab-yowsup-helpers.md @@ -0,0 +1,28 @@ +# Whatsapp aka. yowsup helper functions + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Whatsapp aka. yowsup helper functions | +| Source URL | https://community.openhab.org/t/whatsapp-aka-yowsup-helper-functions/12517 | +| Source type | forum thread | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +yowsup search; old community thread. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/openrepos-whatsmeow-harbour-app.md b/research/whatsapp-automation/openrepos-whatsmeow-harbour-app.md new file mode 100644 index 0000000..d4c8cb1 --- /dev/null +++ b/research/whatsapp-automation/openrepos-whatsmeow-harbour-app.md @@ -0,0 +1,28 @@ +# openrepos.net comments on a whatsmeow-based app (3 URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | openrepos.net comments on a whatsmeow-based app (3 URLs) | +| Source URL | https://openrepos.net/comment/43926 | +| Source type | forum thread | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Pairing search; phone number with country code, no + or 00. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/piwheels-wa-automation.md b/research/whatsapp-automation/piwheels-wa-automation.md new file mode 100644 index 0000000..c896701 --- /dev/null +++ b/research/whatsapp-automation/piwheels-wa-automation.md @@ -0,0 +1,28 @@ +# wa automation + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | wa automation | +| Source URL | https://www.piwheels.org/project/wa-automation | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; WhatsApp Web based. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/pkgdev-lucklrj-whatsmeow.md b/research/whatsapp-automation/pkgdev-lucklrj-whatsmeow.md new file mode 100644 index 0000000..5b455fc --- /dev/null +++ b/research/whatsapp-automation/pkgdev-lucklrj-whatsmeow.md @@ -0,0 +1,28 @@ +# pkg.go.dev lucklrj/whatsmeow + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | pkg.go.dev lucklrj/whatsmeow | +| Source URL | https://pkg.go.dev/github.com/lucklrj/whatsmeow | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +whatsmeow search; an outdated fork's godoc. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/pkgdev-wa-go.md b/research/whatsapp-automation/pkgdev-wa-go.md new file mode 100644 index 0000000..55bcaf2 --- /dev/null +++ b/research/whatsapp-automation/pkgdev-wa-go.md @@ -0,0 +1,28 @@ +# pkg.go.dev jfelipesjc/wa-go + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | pkg.go.dev jfelipesjc/wa-go | +| Source URL | https://pkg.go.dev/github.com/jfelipesjc/wa-go | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +protocol search; led to the wa-go repository, which was then cloned and read (see its dossier). + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/popey-yawf-snap.md b/research/whatsapp-automation/popey-yawf-snap.md new file mode 100644 index 0000000..b962d21 --- /dev/null +++ b/research/whatsapp-automation/popey-yawf-snap.md @@ -0,0 +1,28 @@ +# YAWF snap + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | YAWF snap | +| Source URL | https://snapupdates.popey.com/snap/yawf | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +C++ WhatsApp search; WasIstLos fork. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/pypi-asyncpywhatkit.md b/research/whatsapp-automation/pypi-asyncpywhatkit.md new file mode 100644 index 0000000..acca15e --- /dev/null +++ b/research/whatsapp-automation/pypi-asyncpywhatkit.md @@ -0,0 +1,28 @@ +# AsyncPywhatKit + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | AsyncPywhatKit | +| Source URL | https://pypi.org/project/asyncpywhatkit | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; pywhatkit fork, pywhatkit opens WhatsApp Web in a browser. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/pypi-neonize-versions.md b/research/whatsapp-automation/pypi-neonize-versions.md new file mode 100644 index 0000000..c414e01 --- /dev/null +++ b/research/whatsapp-automation/pypi-neonize-versions.md @@ -0,0 +1,28 @@ +# neonize on PyPI (versions 0.0.8 to 0.3.0 and latest, 10 URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | neonize on PyPI (versions 0.0.8 to 0.3.0 and latest, 10 URLs) | +| Source URL | https://pypi.org/project/neonize | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +neonize search; ten version pages with the same description (whatsmeow binding, protobuf transport), logged as one card. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/pypi-whalesong.md b/research/whatsapp-automation/pypi-whalesong.md new file mode 100644 index 0000000..465adb8 --- /dev/null +++ b/research/whatsapp-automation/pypi-whalesong.md @@ -0,0 +1,28 @@ +# Whalesong 0.4.4 + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Whalesong 0.4.4 | +| Source URL | https://pypi.org/project/whalesong/0.4.4/ | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; manages WhatsApp Web remotely, browser based. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/pypi-whatsfly.md b/research/whatsapp-automation/pypi-whatsfly.md new file mode 100644 index 0000000..164363f --- /dev/null +++ b/research/whatsapp-automation/pypi-whatsfly.md @@ -0,0 +1,28 @@ +# whatsfly 0.0.1 + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | whatsfly 0.0.1 | +| Source URL | https://pypi.org/project/whatsfly/0.0.1 | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Python WhatsApp automation search; whatsmeow wrapper, linux 32 bit only per the listing. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/readthedocs-yowsup.md b/research/whatsapp-automation/readthedocs-yowsup.md new file mode 100644 index 0000000..2d0dde1 --- /dev/null +++ b/research/whatsapp-automation/readthedocs-yowsup.md @@ -0,0 +1,28 @@ +# Yowsup 2 README on readthedocs + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Yowsup 2 README on readthedocs | +| Source URL | https://yowsup.readthedocs.io/en/stable/README/ | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +yowsup search; old docs. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/rust-digger-whatsmeow-crate.md b/research/whatsapp-automation/rust-digger-whatsmeow-crate.md new file mode 100644 index 0000000..4acc6c6 --- /dev/null +++ b/research/whatsapp-automation/rust-digger-whatsmeow-crate.md @@ -0,0 +1,28 @@ +# rust-digger whatsmeow crate + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | rust-digger whatsmeow crate | +| Source URL | https://rust-digger.code-maven.com/crates/whatsmeow | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; Rust bindings over a whatsmeow Go bridge. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/skillsmp-aios-whatsapp-pair.md b/research/whatsapp-automation/skillsmp-aios-whatsapp-pair.md new file mode 100644 index 0000000..3615c0c --- /dev/null +++ b/research/whatsapp-automation/skillsmp-aios-whatsapp-pair.md @@ -0,0 +1,28 @@ +# claude skills aios whatsapp pair + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | claude skills aios whatsapp pair | +| Source URL | https://skillsmp.com/creators/eumemic/aios/claude-skills-aios-whatsapp-pair | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Pairing search; agent skill showing a pairing code in the terminal. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/suse-wasistlos.md b/research/whatsapp-automation/suse-wasistlos.md new file mode 100644 index 0000000..282f2f0 --- /dev/null +++ b/research/whatsapp-automation/suse-wasistlos.md @@ -0,0 +1,28 @@ +# WasIstLos on SUSE Package Hub + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | WasIstLos on SUSE Package Hub | +| Source URL | https://packagehub.suse.com/packages/wasistlos | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +C++ WhatsApp search; a WebKitGTK wrapper of WhatsApp Web, not a protocol client. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/suse-whatsapp-for-linux.md b/research/whatsapp-automation/suse-whatsapp-for-linux.md new file mode 100644 index 0000000..1d4ac37 --- /dev/null +++ b/research/whatsapp-automation/suse-whatsapp-for-linux.md @@ -0,0 +1,28 @@ +# whatsapp-for-linux on SUSE Package Hub + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | whatsapp-for-linux on SUSE Package Hub | +| Source URL | https://packagehub.suse.com/packages/whatsapp-for-linux/ | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +C++ WhatsApp search; same wrapper. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/trisquel-python3-yowsup.md b/research/whatsapp-automation/trisquel-python3-yowsup.md new file mode 100644 index 0000000..1f69733 --- /dev/null +++ b/research/whatsapp-automation/trisquel-python3-yowsup.md @@ -0,0 +1,28 @@ +# python3-yowsup on Trisquel (2 URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | python3-yowsup on Trisquel (2 URLs) | +| Source URL | https://packages.trisquel.org/zh-tw/aramo/ppc64el/python3-yowsup | +| Source type | other | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +yowsup search; legacy package. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/uchat-atlassian-whatsapp.md b/research/whatsapp-automation/uchat-atlassian-whatsapp.md new file mode 100644 index 0000000..41d3cf0 --- /dev/null +++ b/research/whatsapp-automation/uchat-atlassian-whatsapp.md @@ -0,0 +1,28 @@ +# uchat WhatsApp wiki (2 URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | uchat WhatsApp wiki (2 URLs) | +| Source URL | https://uchat.atlassian.net/wiki/x/EINyN | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Cloud API search; vendor wiki. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/ucla-matterbridge-vendored-whatsmeow.md b/research/whatsapp-automation/ucla-matterbridge-vendored-whatsmeow.md new file mode 100644 index 0000000..d1e2aad --- /dev/null +++ b/research/whatsapp-automation/ucla-matterbridge-vendored-whatsmeow.md @@ -0,0 +1,28 @@ +# matterbridge vendored go.mau.fi/whatsmeow client.go (5 mirror URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | matterbridge vendored go.mau.fi/whatsmeow client.go (5 mirror URLs) | +| Source URL | https://git.linux.ucla.edu/lug/matterbridge/src/commit/186d28858b90e9c1083e9cb2e470deec0d4fb47e/vendor/go.mau.fi/whatsmeow/client.go | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +whatsmeow search; five URLs of the same vendored file in matterbridge forks (also .../di-gital/matterbridge raw updatexmppp, commits 2e9db32, 81e6f75, fd38b8d, and the README at 1b9877f), logged as one card because they are copies of one source. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/unpkg-nexonjs-baileys-readme.md b/research/whatsapp-automation/unpkg-nexonjs-baileys-readme.md new file mode 100644 index 0000000..01da838 --- /dev/null +++ b/research/whatsapp-automation/unpkg-nexonjs-baileys-readme.md @@ -0,0 +1,28 @@ +# @nexon.js/baileys README (3 URLs) + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | @nexon.js/baileys README (3 URLs) | +| Source URL | https://unpkg.com/@nexon.js/baileys@3.1.0/README.md | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Baileys search; npm fork, versions 3.1.0 and 3.2.1. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/wanotifier-test-number-limits.md b/research/whatsapp-automation/wanotifier-test-number-limits.md new file mode 100644 index 0000000..2477480 --- /dev/null +++ b/research/whatsapp-automation/wanotifier-test-number-limits.md @@ -0,0 +1,28 @@ +# Test phone number limitations + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | Test phone number limitations | +| Source URL | https://help.wanotifier.com/en/article/test-phone-number-limitations-kt0ly2/ | +| Source type | vendor docs | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Cloud API search; test number sends only to registered recipients. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/research/whatsapp-automation/wasmer-go-bitmap-whatsapp-rust.md b/research/whatsapp-automation/wasmer-go-bitmap-whatsapp-rust.md new file mode 100644 index 0000000..6fad7c3 --- /dev/null +++ b/research/whatsapp-automation/wasmer-go-bitmap-whatsapp-rust.md @@ -0,0 +1,28 @@ +# go-bitmap/whatsapp-rust mirror + +## Metadata + +| Field | Value | +|---|---| +| Institute | Molodetz Institute — Research & Retrieval Division | +| Subject | whatsapp-automation | +| Document type | Source Citation Card | +| Tier | 2 | +| Source title | go-bitmap/whatsapp-rust mirror | +| Source URL | https://backiee.wasmer.app/https_github_com/go-bitmap/whatsapp-rust | +| Source type | repository | +| Date researched | 2026-10-27 | +| Researched by | tai (agent), model: Claude Opus 5.5, on behalf of retoor | +| Research method | Search aggregator result listing (not independently opened or quoted) | +| Confidence | Not independently verified | +| Status | Active | + +## Why it's here + +Rust search; mirror. + +## Changelog + +| Date | Change | +|---|---| +| 2026-10-27 | Logged as consulted-but-not-analyzed. | diff --git a/taicpp/CHANGELOG.md b/taicpp/CHANGELOG.md index fd50a5e..334595c 100644 --- a/taicpp/CHANGELOG.md +++ b/taicpp/CHANGELOG.md @@ -5,6 +5,7 @@ ## [Unreleased] - 2026-10-25 +- WhatsApp research and build spec: [docs/whatsapp.md](docs/whatsapp.md) (no native Python library exists, no browser needed, native C++ `detz::wa` transpiled from wa-go with whatsmeow as referee, no new dependencies, build vs deep-research table, caps, tests, phases, a whatsapp-mcp shortcut). Research: research/whatsapp-automation (70 sources, 3 conclusions). Nothing built. - Documentation: new [docs/cap-agents.md](docs/cap-agents.md) (agents, models, probes, `@agent` resolution, errors, limits, troubleshooting), rewritten [docs/fuzzy.md](docs/fuzzy.md) (algorithm, constants, measured worked examples) and [docs/orchestration.md](docs/orchestration.md) (protocol with examples, layout, lifecycle, state machine, formatter, event mapping, supervision, collection, caps, measurements, verification, gaps), feed panes in [docs/mplex.md](docs/mplex.md), README overview; `make docs` checks the new pages; drift tests keep the constant tables in step with the code. - Orchestration on the multiplexer screen ([docs/orchestration.md](docs/orchestration.md)): every sub agent (`fork` worker, CAP session, `@agent` mention) gets a live, word-wrapped panel; the main pane stays left at full height and sub agents stack on the right (1, 2, 3 ... up to what fits at 6 rows each). New: feed panes in the multiplexer (`vpane_*` control commands, `MplexVpanes`), `src/orch/` (`OrchBoard`, `OrchPanel`, `OrchFormatter`, `OrchTransport`, `OrchCapAdapter`), `Agent::observer` and cancel flag, supervision (idle warn 60 s, idle cancel 300 s, soft cancel then close after 5 s, closing the pane cancels the job), CAP answers collected through the spill path. Tests: `build/orch_test`, `tests/orch_mplex_e2e.py` with `build/orch_live`. Measured: about 64 frames/s, median 12.9 ms between frames, p90 25 ms with three agents streaming 500 tokens/s each. - Generic `detz::FuzzyMatcher` (src/util/fuzzy.*, docs/fuzzy.md, tests/fuzzy_test.cpp): subsequence DP with fzf constants, Damerau-Levenshtein, per-token typo and trigram signals; `@agent` / `@model` mentions now always pick the most related candidate (floor 0.3, ties shorter then earlier, a note shows what was resolved). Research: research/fuzzy-matching-selectors. diff --git a/taicpp/docs/whatsapp.md b/taicpp/docs/whatsapp.md new file mode 100644 index 0000000..be883d3 --- /dev/null +++ b/taicpp/docs/whatsapp.md @@ -0,0 +1,349 @@ +# whatsapp (taicpp): research result and build specification + +Status: **specified, nothing built.** This file states what was found, what was +decided, and the exact plan to build a native C++ WhatsApp client into detz. +Research archive: [`../../research/whatsapp-automation/`](../../research/whatsapp-automation/) +(sources and three conclusions). Every number below was measured on 2026-10-27 +on this machine unless a line says otherwise. + +## 1. Goal + +One sentence must work in detz: + +> "Create screenshot and explain what is genius about it and send to Niggel on WhatsApp" + +The flow breaks into four steps. Three of them already exist: + +| Step | Owner | Exists | +|---|---|---| +| take a screenshot | `shell` tool (`grim`, `scrot`, `import`) | yes | +| explain it | `describe_image` tool (src/agent/tools_core.cpp) | yes | +| resolve "Niggel" to a WhatsApp JID | `WaContacts` (this spec) | no | +| send text plus image | `whatsapp_send` tool over `WaClient` (this spec) | no | + +The missing part is one module: a WhatsApp companion device written in C++. + +## 2. Answers to the questions asked + +### 2.1 Best Python libraries for a normal phone number + +There is no Python library that speaks the current WhatsApp protocol itself. +Measured on the cloned repositories: + +| Library | Language of the protocol code | How it works | Verdict | +|---|---|---|---| +| neonize (Apache-2.0, 759 stars, 62 commits in 90 days) | **Go** (whatsmeow) | 4362 lines of Go export 93 C functions (`//export`), 14918 lines of Python call them through `ctypes` | best "Python" option, but it is whatsmeow with a Python skin | +| whatsfly | Go (whatsmeow) | same idea, PyPI 0.0.1, linux 32 bit only | early, not usable | +| whatsapp-mcp (lharries, MIT) | Go (whatsmeow) | Go bridge with HTTP `/api/send`, Python MCP server with `send_message`, `send_file` | usable shortcut, see section 10 | +| yowsup (GPL-3.0) | Python | old phone-registration protocol (`e1.whatsapp.net:443`), last commit 2021-12-14, README warns that registration gives an instant ban | dead, do not use | +| pywhatkit, Astra, wa-automation, whalesong | Python | drive WhatsApp Web in a real browser | browser, rejected | +| Supbot2 | Python | drives the Android app with Appium | needs a phone or emulator, rejected | +| pywa and other Cloud API clients | Python | official Meta Business Cloud API | needs a business number; the number cannot stay on the normal app, rejected for a personal number | + +Conclusion: transpiling Python gets us nothing. The real implementations are: + +| Project | Language | License | Activity (commits in last 90 days) | Size (non-blank, non-test, non-generated) | +|---|---|---|---|---| +| whatsmeow (tulir) | Go | MPL-2.0 | 78 | 24,301 lines, plus 107,816 generated protobuf lines | +| libsignal-protocol-go (tulir), used by whatsmeow | Go | **GPL-3.0** | not measured | 5,416 | +| wa-go (jfelipesjc) | Go | **MIT** | 17, created 2026-06-26, 1 star | 23,278 (wire 2778, signal 1625, keys 311, media 517, client 14379) | +| Baileys (WhiskeySockets) | TypeScript | MIT | 7 | 48,898 | +| whatsapp-rust (oxidezap) | Rust | MIT | at least 100 (API page limit) | about 650,000 including VoIP and plugins | +| libsignal-protocol-c (signalapp) | C | **GPL-3.0** | last commit 2020-03-27 | 29,456 | + +No C or C++ library implements the multi-device protocol. Search found only +WebKit wrappers (WasIstLos, YAWF) and a REST wrapper (Green-API). + +### 2.2 Is a browser required + +**No.** whatsmeow, Baileys, wa-go and whatsapp-rust all speak the protocol +directly over one WebSocket. The phone is needed exactly once, to link the +device: scan a QR code shown in the terminal, or type an 8-character pairing +code into WhatsApp > Linked devices. After that the companion runs alone. The +phone must come online now and then; one directory page reports +re-authentication after about 20 days (not verified). + +### 2.3 Can it be done in C++ with what detz already links + +Yes. detz already links libcurl and OpenSSL: + +- libcurl 8.18.0 on this machine lists `ws wss` as protocols. + `curl -H "Origin: https://web.whatsapp.com" wss://web.whatsapp.com/ws/chat` + answered **`101 Switching Protocols`**, so the transport is proven reachable + from here with the library we already ship. +- OpenSSL 3.5.5 covers every primitive except XEdDSA signing (section 5). +- Protobuf needs no library: we need about 15 messages, and a hand-written + varint and length-delimited writer and reader is about 200 lines. + +New dependencies: **none.** + +## 3. Decision: native C++, transpiled + +Build `detz::wa` as a native C++ module. Transpile from two sources: + +1. **wa-go (MIT) is the code source** for wire, Noise, binary codec, keys, + Signal (X3DH, Double Ratchet), media crypto and pairing. Reasons: MIT, small + (the whole Signal layer is 1625 lines against 3585 for the libsignal-go + subset), layered exactly like detz wants (`internal/wire`, `signal`, `keys`, + `media`), and it ships **788 KB of golden vectors captured from real Baileys** + (`testdata/traces/connect_pair`, `testdata/signal/session_ab.json`, + `testdata/media/media_vectors.json`, `testdata/paircode/vectors.json`). Those + become our C++ test fixtures as they are. +2. **whatsmeow (MPL-2.0) is the behaviour reference**: it is the most used and + most maintained (78 commits in 90 days). When wa-go and whatsmeow disagree, + whatsmeow wins. The current client version, the server certificate key and + the node shapes are read from whatsmeow at build time of each release. + +Do **not** transpile libsignal-go or libsignal-protocol-c: both are GPL-3.0, +and detz is commercial. MPL-2.0 is file-level: a C++ file transpiled from a +whatsmeow file keeps the MPL notice and its source stays available. Copying +code from wa-go, or reading whatsmeow to learn a value, does not trigger this. +This is a fact about the licenses, not legal advice. + +## 4. Module layout + +Namespace `detz::wa`, sources in `src/whatsapp/`, one class per `.h`/`.cpp` +pair, as the rest of taicpp. + +| Class | Responsibility | Transpiled from (wa-go / whatsmeow) | +|---|---|---| +| `WaConstants` | URL, origin, Noise pattern, header, dict version, cert key, client version, all caps (section 8) | `socket/constants.go`, `store/clientpayload.go` | +| `WaProtoWriter`, `WaProtoReader` | protobuf wire format: varint, zigzag not needed, length-delimited, fixed32 | none, hand-written | +| `WaMessages` | the ~15 protobuf messages as plain structs with `encode()`/`decode()` | field numbers from whatsmeow `proto/*.proto` | +| `WaCrypto` | static: X25519, AES-256-GCM, AES-256-CTR, AES-256-CBC, HKDF-SHA256, HMAC-SHA256, SHA-256, SHA-512, PBKDF2-SHA256, random, over OpenSSL EVP | `util/*util`, wa-go `keys` | +| `WaXeddsa` | XEdDSA sign and verify over Curve25519 keys | libsignal-go `ecc/SignCurve25519.go` logic, wa-go `keys` (section 5) | +| `WaSocket` | libcurl WebSocket, 3-byte big-endian frame length, `WA` header on first frame, 16 MiB frame cap | wa-go `wire/framing.go`, `ws` | +| `WaNoise` | Noise XX handshake and the post-handshake read/write ciphers | wa-go `wire/noise.go`, whatsmeow `socket/noisehandshake.go`, `handshake.go` | +| `WaNode`, `WaBinaryCodec`, `WaTokens` | binary XMPP-like nodes, token dictionary v3 (236 single-byte, about 1030 double-byte tokens), nibble/hex packing, JID encoding | wa-go `wire/codec.go`, `token.go`, `node.go` | +| `WaStore` | SQLite tables: device identity, signed prekey, prekeys, sessions, identities, contacts, aliases | wa-go `store`, whatsmeow `store/sqlstore` | +| `WaPairing` | QR pairing (`pair-device`, ref rotation, `pair-success` with ADV signature check) and phone pairing code | wa-go `client` pairing, whatsmeow `pair.go`, `pair-code.go` | +| `WaSignal` | X3DH, Double Ratchet, `pkmsg`/`msg` encrypt and decrypt, session records | wa-go `internal/signal` (x3dh, ratchet, session, message) | +| `WaPrekeys` | upload 50 prekeys plus signed prekey after pairing, refill below threshold | whatsmeow `prekeys.go` | +| `WaUsync` | device list of a recipient (`usync` iq), "is this number on WhatsApp" | whatsmeow `user.go` (subset) | +| `WaMedia` | media key expansion (`WhatsApp Image Keys`), AES-CBC plus HMAC, `media_conn` iq, HTTPS upload to `/mms/image/` | wa-go `media`, whatsmeow `upload.go`, `mediaconn.go` | +| `WaSender` | 1:1 send: device fan-out, encrypt per device, own other devices get a `DeviceSentMessage`, `` node, `phash` check | whatsmeow `send.go` (DM path only) | +| `WaReceiver` | decrypt incoming 1:1 text, send receipts and acks | whatsmeow `message.go`, `receipt.go` (subset) | +| `WaClient` | owns the above; connect, login, keepalive, reconnect, event loop on one thread | whatsmeow `client.go`, `keepalive.go`, `connectionevents.go` | +| `WaContacts` | name to JID: user aliases first, then contacts learned from push names, then fuzzy match with `detz::FuzzyMatcher` (floor 0.3) | none, detz design | +| `WaTools` | agent tools `whatsapp_send`, `whatsapp_contacts`, `whatsapp_alias` | none, detz design | + +Out of scope for v1, listed so nobody assumes otherwise: groups (sender keys), +app-state sync (LTHash contact list), history sync, calls, status, newsletters, +receiving media, editing, reactions. + +## 5. Protocol walkthrough and crypto mapping + +Order of one session, with the OpenSSL call for each primitive. + +1. **Connect.** WebSocket to `wss://web.whatsapp.com/ws/chat`, header + `Origin: https://web.whatsapp.com`. Every frame is a 3-byte big-endian + length plus payload; the first frame is prefixed with + `'W','A',6,3` (magic 6, dictionary version 3). Frame cap `1 << 24`. +2. **Noise XX handshake.** Pattern string + `Noise_XX_25519_AESGCM_SHA256\0\0\0\0` (32 bytes, used as the initial hash + as is). Send `HandshakeMessage.ClientHello{ephemeral}`; receive + `ServerHello{ephemeral, static (encrypted), payload (encrypted cert)}`; + mix X25519 shared secrets with HKDF-SHA256 into AES-256-GCM keys, counter IV; + verify the certificate chain against the pinned key `WACertPubKey` in + whatsmeow `handshake.go`; send `ClientFinish{static (encrypted noise key), + payload (encrypted ClientPayload)}`. Then split into a read and a write key. + The proto also defines post-quantum modes (`XXKEM`, `IKKEM`, `WA_PQ`); + whatsmeow does not use them today, so neither do we. +3. **ClientPayload.** Register (unpaired: `devicePairingData` with registration + id, identity public key, signed prekey and its signature, build hash = MD5 of + the version string) or login (paired: `username` = phone number, `device` = + device id). The client version is a constant + (`2.3000.1050728964` in whatsmeow on 2026-10-27). A stale version gives + connect failure **405 client outdated**; whatsmeow can fetch the live value + from `web.whatsapp.com` (`"client_revision":N`). +4. **Pairing.** QR: the server sends `pair-device` with refs; the QR string is + `https://wa.me/settings/linked_devices#ref,noisePub,identityPub,advSecret,clientType` + (keys base64), shown in the terminal, refs + rotate. Phone code: `PairPhone` sends a `link_code_companion_reg` iq; the + 8-character code derives an AES-256-CTR key with **PBKDF2-SHA256, 131072 + (2<<16) iterations**. On `pair-success` verify the account signature + (XEdDSA), sign the device identity (XEdDSA), send `pair-device-sign`, store + the JID, reconnect and log in. +5. **Prekeys.** Upload signed prekey plus a batch of 50 one-time prekeys (iq + `xmlns="encrypt"`, whatsmeow `WantedPreKeyCount`). Refill when the server + reports fewer than 5 (`MinPreKeyCount`). +6. **Send to a contact.** `usync` iq for the recipient's device list (and our + own); fetch prekey bundles for devices without a session; X3DH, Double + Ratchet encrypt `Message{conversation}` or `Message{imageMessage}` padded; + send `` and compare the returned `phash`. Addresses can be phone JIDs + (`@s.whatsapp.net`) or LID JIDs (`@lid`); whatsmeow `send.go` mentions LID 45 + times, so LID handling is part of the send path, not an extra. +7. **Image.** Random 32-byte media key; HKDF-SHA256 with info + `WhatsApp Image Keys` to 112 bytes (IV, cipher key, MAC key, ref key); + AES-256-CBC, HMAC-SHA256 truncated to 10 bytes appended; `media_conn` iq gives + hosts and auth; HTTPS POST to `https:///mms/image/`; put + `url`, `directPath`, `mediaKey`, `fileSha256`, `fileEncSha256`, + `fileLength`, `mimetype`, `caption` into `ImageMessage`. + +| Primitive | Where | OpenSSL 3.5 | +|---|---|---| +| X25519 | Noise, X3DH, ratchet | `EVP_PKEY_X25519`, `EVP_PKEY_derive` | +| AES-256-GCM | Noise transport | `EVP_aes_256_gcm` | +| AES-256-CTR | pairing code | `EVP_aes_256_ctr` | +| AES-256-CBC | Signal message keys, media | `EVP_aes_256_cbc` | +| HKDF-SHA256 | Noise, ratchet chains, media keys | `EVP_KDF "HKDF"` | +| HMAC-SHA256 | ratchet, media MAC | `EVP_MAC "HMAC"` | +| PBKDF2-SHA256 | pairing code | `PKCS5_PBKDF2_HMAC` | +| SHA-256, SHA-512, MD5 | everywhere, XEdDSA, build hash | `EVP_Digest` | +| **XEdDSA sign** | signed prekey, pairing device signature | **not in OpenSSL** | +| XEdDSA verify | pairing account signature | Montgomery u to Edwards y, then `EVP_PKEY_ED25519` verify (to be proven) | + +XEdDSA needs Edwards25519 scalar and point arithmetic, which OpenSSL does not +expose. The algorithm is 60 lines in libsignal-go `ecc/SignCurve25519.go` +(clamped scalar a, A = aB with sign bit forced to 0, r = SHA-512 of a +prefix, a, message and 64 random bytes, R = rB, s = r + SHA-512(R,A,M) a mod L). +The arithmetic underneath (filippo.io/edwards25519, BSD-3-Clause) is what has to +be ported or replaced. That is the one hard crypto item, see section 6. + +## 6. Build versus deep research, decided up front + +**Build** means mechanical transpile with a known oracle. **Deep research** means +the answer is not written down anywhere we have read, and has to be +established first, with an archive entry, before any code. + +| Item | Kind | Oracle or open question | +|---|---|---| +| protobuf writer/reader, message structs | build | field numbers in whatsmeow `.proto`; wa-go `client_payload.json` trace | +| `WaCrypto` wrappers | build | RFC test vectors; wa-go `media_vectors.json` | +| framing, Noise, binary codec, tokens | build | wa-go `traces/connect_pair` (`noise.json`, `frames_raw.jsonl`, `nodes.jsonl`), `codec_battery/nodes.jsonl` | +| Signal X3DH, ratchet, session | build | wa-go `testdata/signal/session_ab.json` | +| pairing code crypto | build | wa-go `testdata/paircode/vectors.json` | +| media encrypt, upload | build | wa-go `media_vectors.json`, then one live send | +| usync, prekey upload, send node shape | build | whatsmeow source, then one live send | +| **XEdDSA sign** | **deep research** | port the Edwards25519 field/scalar/point subset (BSD-3, from filippo.io/edwards25519) or find a permissive C implementation; verify against wa-go `keys/testdata/verify_sig.mjs` style vectors | +| **current client version and 405 policy** | **deep research** | how often whatsmeow bumps `waVersion`; whether to fetch `client_revision` at start (adds one HTTPS call, kills the treadmill) | +| **LID addressing** | **deep research** | when the server hands out `@lid`, how sessions map phone JID to LID; read whatsmeow `send.go` and `store` LID tables | +| **ban behaviour** | **deep research, measured only with a sacrificial number** | no maintainer publishes heuristics; one vendor article names account age, message rate and reports | +| contact names without app-state | build | push names in incoming messages plus user aliases; app-state sync is v2 | + +## 7. User flow (the customer view) + +Two commands, nothing else to configure: + +``` +detz --whatsapp-link # shows a QR in the terminal, scan in WhatsApp > Linked devices +detz --whatsapp-link 31612345678 # prints an 8-character code to type on the phone instead +``` + +Then, in any detz session: + +``` +> remember that Niggel is 31687654321 on WhatsApp +> create a screenshot, explain what is genius about it and send it to Niggel on WhatsApp +``` + +The first line calls `whatsapp_alias`. The second runs `shell` (screenshot), +`describe_image`, then `whatsapp_send{to:"Niggel", text, image}`. `whatsapp_send` +resolves the name through `WaContacts`; when the best match is not exact, the +tool result names what it resolved to, the same note pattern as `@agent` +mentions. `detz --whatsapp-unlink` logs the device out and deletes its rows. + +State lives in the profile's vault (SQLite, the existing `store`), not in a new +file. The link step is the only step that touches the phone. + +Agent tools: + +| Tool | Arguments | Result | +|---|---|---| +| `whatsapp_send` | `to` (name, alias or number), `text`, optional `image` (path) | message id, resolved JID and name, `phash` match | +| `whatsapp_contacts` | optional `query` | known names and JIDs | +| `whatsapp_alias` | `name`, `number` | stored alias, after a usync check that the number is on WhatsApp | + +## 8. Caps (all static, per CLAUDE.md "everything gets a hard cap") + +| Constant | Value | Why | +|---|---|---| +| `kWaFrameMax` | 16 MiB (`1 << 24`) | protocol limit | +| `kWaImageMax` | 16 MiB | upload cap; refuse larger, loud | +| `kWaSendPerMinute` | 10 | ban exposure; the agent must not burst | +| `kWaSendPerDay` | 200 | same | +| `kWaRecipientsPerSend` | 1 | v1 is 1:1 only | +| `kWaPrekeyBatch` | 50 | whatsmeow `WantedPreKeyCount` | +| `kWaConnectTimeout` | 20 s | handshake plus login | +| `kWaPairTimeout` | 120 s | QR or code wait | +| `kWaReconnectFloor` | 5 s, doubling to 300 s | never hammer the server | +| `kWaContactsMax` | 5000 | contact and alias rows per profile | + +These are judgments, not measurements. They become measured once the live +tests below run. + +## 9. Tests + +Unit (`tests/whatsapp_test.cpp`, `make test`): + +- every golden vector from wa-go `testdata/` (copied with its MIT notice into + `tests/whatsapp_data/`): Noise transcript, raw frames, decoded nodes, codec + battery, ClientPayload bytes, Signal session A to B, pairing code, media. +- XEdDSA: sign then verify round trip, plus verify of a signature made by + libsignal (vector to be produced once, archived). +- protobuf: encode equals the bytes in the traces, decode of every trace. + +Integration (`tests/whatsapp.py`, real binary, real WhatsApp, per AGENTS.md): + +- needs a sacrificial number linked once (`WA_TEST_PEER` names a second number); +- cases: link state survives restart, send text, send image, receive the + reply text, `405` handling with a forced old version; +- verification reads vault rows (message id, session rows), never CLI text. + +## 10. The shortcut for the day-after-tomorrow promise + +The native module is roughly the size measured in section 2.1, so it does +not ship in two days. What can work now, with no C++: + +1. clone `lharries/whatsapp-mcp`, **bump its whatsmeow** (`go.mod` pins + `v0.0.0-20250318233852`, 19 months old; a stale whatsmeow risks the 405 + client-outdated failure), run `whatsapp-bridge` once and scan the QR; +2. add the MCP server to detz (`mcp_add`, stdio transport, + `uv --directory .../whatsapp-mcp-server run main.py`); +3. the sentence then runs as `shell` + `describe_image` + `send_file`. + +This path was **not run end to end**: it needs a linked phone, and a local +probe (an unpaired whatsmeow connect that prints QR events, which proves the +full handshake without a phone) was refused by this session's permission +classifier because it executes downloaded code. To run it yourself: + +``` +mkdir probe && cd probe && go mod init probe +go get go.mau.fi/whatsmeow@latest modernc.org/sqlite +# main.go: sqlstore.New("sqlite", "file:probe.db"), NewDevice, NewClient, +# GetQRChannel, Connect, print each event; expect "code" events within seconds +go run . +``` + +## 11. Phases + +| Phase | Content | Exit test | +|---|---|---| +| 0 | MCP shortcut (section 10) | the sentence works once, live | +| 1 | `WaProto*`, `WaCrypto`, `WaXeddsa`, `WaSocket`, `WaNoise`, codec, tokens | all wire and crypto golden vectors green; live: QR events from the real server | +| 2 | `WaStore`, `WaPairing`, `WaPrekeys`, login | live: link by QR and by code, restart stays logged in | +| 3 | `WaSignal`, `WaUsync`, `WaSender`, `WaReceiver` | Signal vectors green; live: text to a peer and its reply decrypted | +| 4 | `WaMedia`, `WaContacts`, `WaTools`, CLI flags | live: the full sentence, then the MCP shortcut is removed | + +Size guide (measured Go source to transpile, non-blank, non-comment): whatsmeow +files on the 1:1 path (handshake, pair, pair-code, prekeys, send, message, +receipt, upload, mediaconn, user, request, keepalive, client, +connectionevents, qrchan, retry, socket, binary, keys, crypto utils) total +8,616 lines, and only part of send, message and user is needed; wa-go wire, +keys, signal and media total 5,231. The C++ size is not measured until it exists. + +## 12. Risks and gaps + +- **Terms of Service.** Every unofficial client breaks WhatsApp's terms; every + project README and the one vendor article found say a number can be banned. + Use a sacrificial number for tests. The sanctioned path (Business Cloud API) + cannot use a personal number. +- **Protocol drift.** whatsmeow changes about 6 times a week (78 commits in + 90 days). We follow whatsmeow; each release re-checks the version constant, + the cert key and the token dictionary. +- **wa-go is young** (created 2026-06-26, one author, 1 star). Its golden + vectors come from Baileys, which keeps them honest, but its code is not + battle tested. whatsmeow stays the referee. +- **Unverified here:** the full handshake (probe refused), XEdDSA verify via + OpenSSL Ed25519, the 20-day re-auth claim, the 405 behaviour.