FelisOrion
Ciao everyone ![]()
So, for a long time ExWapp was a private library. I was using it in different products built for my clients and agencies (I work as a freelancer in Italy).
I’m making it public now because it works really well together with Spectre and Spectre BEAM. Combined, they give u a pretty nice stack for building WhatsApp agents in Elixir.
I also built ExGram, which mirrors ExWapp’s public API but for Telegram. It follows the same client-oriented approach, so it works well w/ Spectre too.
For me, these libraries kinda complete the ecosystem I wanted for building messaging agents:
- ExWapp for WhatsApp
- ExGram for Telegram
- Spectre + Spectre BEAM for the agent runtime
I’ll keep updating them to fix bugs and improve stability, but I’m not planning huge new features rn. My next project is a game built w/ Elixir, so I’ll probably spend the next 2–3 months focused mostly on that ![]()
About ExWapp itself: this isn’t just a small experiment I decided to publish. I’ve tested it in real projects w/ many devices, multiple simultaneous sessions and sessions kept active for months.
It does what it needs to do, and imo it’s already very solid.
The public API is based on %ExWapp.Client{} and the ExWapp facade:
client =
ExWapp.new(
session_id: "account_1",
store: {ExWapp.Store.Ets, path: "/var/lib/my_app/account_1.etf"},
transport: ExWapp.Client.Transport.Session,
events: MyApp.WhatsAppEvents
)
{:ok, client} = ExWapp.connect(client)
{:ok, client, {:code, qr_code}} = ExWapp.pair(client)
{:ok, client, message_id} =
ExWapp.send_message(client,
to: "393XXXXXXXXX@s.whatsapp.net",
text: "Hello from Elixir!"
)
It supports pairing, messages, media, contacts, chats, local history, multi-session usage, Signal encryption, app-state sync, retries, telemetry and pluggable storage/events.
Links:
Feedback, issues and PRs are welcome. If u try it, let me know what u build w/ it!
One important note: ExWapp is unofficial and isn’t affiliated w/ WhatsApp or Meta. It uses WhatsApp’s private web protocol, so compatibility can change, and unofficial clients or unauthorized automation can cause account restrictions or bans. Use a dedicated number, don’t spam, respect opt-in rules and use it at your own risk.
Trending in Announcing
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security









