WaTauri is an experimental, local-first desktop Whatsapp Client built with Tauri.
It connects to WhatsApp Web, syncs chats and messages into a local SQLite database, and exposes them through a desktop UI. The project is open source and currently under active development.
I have an ick for the official WhatsApp Web experience.
I'm basically trying to explore a desktop-first experience, with stronger organization, more power user features like, better search, better bulk actions, improved media workflows, and more control in general.
Obviously, this should do everything that WhatsApp Web currently does (yet to be achieved), but faster and more reliable and then some.
This project is early-stage and experimental.
Core chat/message syncing is being built out, but the app is not ready yet.
Look at FEATURES.md for everything.
- WhatsApp QR pairing
- Local SQLite message storage
- Chat list from local data
- Message history view
- History sync persistence
- Contact storage basics
- Sending messages
- Message pagination
- Read receipts
- Real-time updates with Server-Sent Events
- Contact name sync
- Group metadata
- Group participants (in progress; joined-group sync is implemented)
- Contact and group avatars
- Communities and related group metadata
- Pinned chats
- Pinned messages
- Favourite chats and contacts
- Archive workflows
- Safer local API routing
- Custom chat groups and filters
- Fast full-text search
- Bulk message/media actions
- Better media download/export
- Voice message transcription
- Desktop notifications
- Keyboard shortcuts
- Message scheduling
- Multiple accounts
- Privacy controls for typing/read signals
None yet.
Desktop: Tauri
Frontend: Next.js, React
Backend: Go
Database: SQLite
Whatsapp Client: whatsmeow
Package manager: bun
- Go
- Bun
- Rust and Cargo
- Tauri CLI dependencies
Clone the repo
git clone https://github.com/your-username/whatsapp-tauri.git
cd whatsapp-tauri/whatsapp-tauriInstall the dependencies:
bun installRun the app in development:
bun run tauri devOther useful scripts: bun run build (typecheck + build frontend), bun run preview (preview the production build).
Compiling the backend seperately:
cd src-go && go build -o backend .This has been changed to now run automatically when tauri is called, however it does not recompile on every save.
- Start the app with
bun run tauri dev. - Open the desktop window.
- Pair your whatsapp account using the QR Code.
- Voila, (it'll take some time to load all the messages)
Runtime data is stored locally using SQLite.
This project has three main parts:
- Next.js frontend
- Tauri Desktopo shell
- Go backend using whatsmeow
More info will be added later.
whatsapp-tauri/
app/ Next.js frontend
public/ Static assets
src-go/ Go backend and WhatsApp client
src-tauri/ Tauri desktop shell
docs/ Project notes and API docs
- WhatsApp pairing
- Local message persistence
- Historical chat sync
- Sending messages
- Contacts, group metadata, participants, and avatars
- Message pagination
- Real-time updates with Server-Sent Events
- Read receipts
- Desktop notifications
- Keyboard shortcuts
- Fast startup from local cache
- Better window/session restore
- Attachment handling
- Media previews
- Custom chat groups
- Saved filters
- Per-group notification rules
- Archive workflows
- Pinned chats
- Pinned messages
- Favourite chats and contacts
- Starred message workflows
- Multi-select chats/messages
- Full-text message search
- Search by sender/date/media type
- Voice note transcription
- Bulk media download
- Chat/message export
- Scheduled messages
- Multiple accounts
- Privacy controls
- One-time media UX
This app runs a local backend and stores WhatsApp session data locally. Do not commit: *.db *.db-wal *.db-shm wa-session.db userdata.db The backend should only be exposed locally. Do not run it on a public interface unless you understand the security implications.
Contributions are welcome. I know that it's not properly organized yet, but I plan on using issues with a proper roadmap later on after the initial stage of development.
There is a fair bit of AI generated code and documentation. This project is not affiliated with WhatsApp, Meta, or any official WhatsApp product. It uses WhatsApp Web behavior through whatsmeow. Use at your own risk.