{"slug": "show-hn-whatsapp-bridge-for-those-with-their-own-vps", "title": "Show HN: WhatsApp Bridge for those with their own VPS", "summary": "A developer released whatsapp-bridge, a self-hosted Go 1.27+ tool built on whats-meow that links to WhatsApp as an extra device, stores only user-ticked chats in an encrypted database on the user's own VPS, and exposes them read-only to AI assistants via MCP at https://<your server>/mcp. The bridge offers six read-only tools — search_messages, read_chat, get_message_context, list_chats, get_document and get_status — and attaches a wa:// citation to every message, with no ability to send messages, set an online status or read receipts. Deployment is documented for three paths (cloud-init, Docker Compose, and an install script for Ubuntu 24.04 or Debian 12), and the whatsapp-bridge.env file holds the database key that must be backed up or the database cannot be read.", "body_md": "**A self-hosted bridge & seutp gateaway built on top of whats-meow for storing and accessing your raw whatsapp data**\n\nwhatsapp-bridge links to your WhatsApp as an extra device, the way WhatsApp Web does. It keeps the chats you choose in an encrypted database on your own VPS, where you can serach the chats or query them using MCP. For now, it is read only.\n\n```\nflowchart LR\n    phone[\"Your phone<br/>(WhatsApp)\"] -- \"linked device,<br/>like WhatsApp Web\" --> bridge[\"whatsapp-bridge<br/>on your server\"]\n    bridge --> db[(\"Encrypted database<br/>messages of ticked chats only\")]\n    ai[\"Your AI assistant<br/>Claude · ChatGPT · Codex\"] -- \"MCP, after you sign in<br/>read-only tools\" --> bridge\n```\n\n1. **Link.** On your phone, open**Settings › Linked devices › Link a device** and scan the\nQR code. The bridge now receives your messages like any other linked device in WhatsApp.\n2. **Tick.** Choose only which chats it keeps. Every chat starts unticked, and the bridge\nstores none of its messages until you tick it. Tick within an hour of linking to also\nkeep the history WhatsApp sends at linking.\n3. **Ask.** Connect your assistant to`https://<your server>/mcp` and sign in. It searches\nand reads your ticked chats when it needs to, and cites every message it uses.\n\nGo 1.27 or newer. The web UI is built into the binary.\n\n```\ngit clone https://github.com/vid-t/whatsapp-bridge.git && cd whatsapp-bridge\nCGO_ENABLED=0 go build -o bin/whatsapp-bridge ./cmd/whatsapp-bridge\n./bin/whatsapp-bridge keygen > whatsapp-bridge.env && chmod 600 whatsapp-bridge.env\n./bin/whatsapp-bridge serve -env-file whatsapp-bridge.env\n```\n\nOpen [http://127.0.0.1:8080](http://127.0.0.1:8080), enter the access code from `whatsapp-bridge.env`, link\nWhatsApp and tick your chats. Tick them within the hour to keep their recent history.\n\nImportant\n\n`whatsapp-bridge.env` holds the database key. Without it the database cannot be read, so\nback it up.\n\nclaude.ai and ChatGPT reach the bridge from their own servers, so they need a public HTTPS\naddress. Claude Code and Codex also work over `localhost` or a private network.\n[`deploy/SELF-HOSTING.md`](https://github.com/vid-t/whatsapp-bridge/blob/main/deploy/SELF-HOSTING.md) has three paths. Each ends at\n`https://<your domain>` with automatic HTTPS from Caddy.\n\n| Path | Best for | \n|---|---|\n| [**A. cloud-init**](https://github.com/vid-t/whatsapp-bridge/blob/main/deploy/SELF-HOSTING.md#path-a-one-click-vps-with-cloud-init) | a fresh VPS: paste one file and boot | \n| [**B. Docker Compose**](https://github.com/vid-t/whatsapp-bridge/blob/main/deploy/SELF-HOSTING.md#path-b-docker-compose) | a server that already runs Docker | \n| [**C. Install script**](https://github.com/vid-t/whatsapp-bridge/blob/main/deploy/SELF-HOSTING.md#path-c-a-server-you-already-have) | an existing Ubuntu 24.04 or Debian 12 server | \n\nYou need a domain pointing at the server, with ports 80 and 443 open.\n\nIn Claude Code:\n\n```\nclaude mcp add --transport http whatsapp-bridge https://<host>/mcp\nclaude mcp login whatsapp-bridge\n```\n\nIn claude.ai, Claude Desktop, ChatGPT or Codex, add `https://<host>/mcp` as a connector and\nsign in on the page that opens. [`docs/MCP-SETUP.md`](https://github.com/vid-t/whatsapp-bridge/blob/main/docs/MCP-SETUP.md) has the steps for\neach assistant, plus API keys for scripts.\n\nYour assistant gets six read-only tools:\n\n| Tool | What it does | \n|---|---|\n| `search_messages` | full-text search across the ticked chats | \n| `read_chat` | read one chat in time order | \n| `get_message_context` | show the messages around a search hit | \n| `list_chats` | list the ticked chats, most recent first | \n| `get_document` | give the file name and caption of an attachment | \n| `get_status` | show the linked devices and how fresh the data is | \n\nEvery message comes with a `wa://` citation, so you can check the source of an answer.\n\n- **Read-only.** The code has no way to send messages, an \"online\" status or read receipts.\nThe tools cannot change or delete anything.\n- **Only ticked chats.** Chats start unticked. The bridge never stores the messages of an\nunticked chat, only its name and last activity for the chat list, so no assistant can see\nit. For an hour after you link a phone, it holds those messages in memory only, so a chat\nyou tick in that hour keeps its history. Then they are dropped.\n- **Encrypted at rest.** The database file is encrypted with Adiantum when`BRIDGE_DB_KEY` is set (`keygen` creates it). A running bridge decrypts messages in memory, so run it on\na machine you control.\n- **Closed by default.** It listens on`127.0.0.1` and refuses a public address unless an\naccess code and a database key are set.\n- **Audited.** Every tool call is logged: who called it, which tool, which chats and how\nmany rows. The log never holds message text.\n- **Nothing goes to an AI provider on its own.** Your assistant gets messages only when it\ncalls a tool, and only that call's results.\n- **Your phone stays in charge.** Unlink the device in WhatsApp and the bridge is cut off\nat once. WhatsApp also logs out linked devices when the phone has been offline for 14\ndays.\n\nWarning\n\n**Unofficial client.** whatsapp-bridge uses [whatsmeow](https://github.com/tulir/whatsmeow),\nan unofficial implementation of the WhatsApp Web protocol. It is not affiliated with,\nendorsed by or connected to WhatsApp or Meta. WhatsApp does not permit unofficial\nclients, and an account linked to one can be restricted. Staying silent and read-only\nkeeps that risk low but cannot remove it. You accept it when you link an account.\n\n**Not built yet:** downloading attachments and reading their text, and limiting what each\nmember sees (today every member sees all ticked chats).\n\n- [Configuration and commands](https://github.com/vid-t/whatsapp-bridge/blob/main/docs/CONFIGURATION.md) : every setting, flag and command\n- [Self-hosting](https://github.com/vid-t/whatsapp-bridge/blob/main/deploy/SELF-HOSTING.md) : install, upgrade and back up\n- [Connect your assistant](https://github.com/vid-t/whatsapp-bridge/blob/main/docs/MCP-SETUP.md) : Claude, ChatGPT, Codex and API keys\n- [Security policy](https://github.com/vid-t/whatsapp-bridge/blob/main/SECURITY.md) ·[Contributing](https://github.com/vid-t/whatsapp-bridge/blob/main/CONTRIBUTING.md)\n\n[AGPL-3.0-only](https://github.com/vid-t/whatsapp-bridge/blob/main/LICENSE). If you run a modified whatsapp-bridge as a service, you must offer\nits source code to the people who use it.", "url": "https://wpnews.pro/news/show-hn-whatsapp-bridge-for-those-with-their-own-vps", "canonical_source": "https://github.com/vid-t/whatsapp-bridge", "published_at": "2026-10-24 21:41:02+00:00", "updated_at": "2026-10-24 22:12:35.490811+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "developer-tools"], "entities": ["whatsapp-bridge", "whats-meow", "WhatsApp", "Claude", "ChatGPT", "Codex", "Claude Code", "Caddy"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-whatsapp-bridge-for-those-with-their-own-vps", "markdown": "https://wpnews.pro/news/show-hn-whatsapp-bridge-for-those-with-their-own-vps.md", "text": "https://wpnews.pro/news/show-hn-whatsapp-bridge-for-those-with-their-own-vps.txt", "jsonld": "https://wpnews.pro/news/show-hn-whatsapp-bridge-for-those-with-their-own-vps.jsonld"}}