{"_id":"@anura-gate/watcher-whatsapp","_rev":"4-37cb52479e8b1809443076eec6000748","name":"@anura-gate/watcher-whatsapp","dist-tags":{"latest":"0.6.0"},"versions":{"0.3.0":{"name":"@anura-gate/watcher-whatsapp","version":"0.3.0","keywords":["gate","watcher","whatsapp","messaging","self-hosted"],"license":"MIT","_id":"@anura-gate/watcher-whatsapp@0.3.0","maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"bin":{"gate-watcher-whatsapp":"cli.js"},"dist":{"shasum":"7746c6d0d6bfe2b1dd203dd9ae000795711abdfe","tarball":"https://registry.npmjs.org/@anura-gate/watcher-whatsapp/-/watcher-whatsapp-0.3.0.tgz","fileCount":10,"integrity":"sha512-tgOG1yG/WwkJcJ3vyLpW/sCy4Rx1+15z9Ly0pDqsbDBGxF8tlqGB7j480vU1WzLNDADXu5+uI6Nqrixab/UOUQ==","signatures":[{"sig":"MEQCIBlVRiavuwVkb+nXKga1icn9L6R0iGdOhtWB2BnDPLtlAiBpJ6NfXVXrFATnVqIcwin58KIFr2TmjGnzlI9u5MOn6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111158},"main":"index.js","engines":{"node":">=18"},"gitHead":"1502cf4027528d26be0741c1f64b26e0195e671f","scripts":{"dev":"node cli.js","start":"node cli.js"},"_npmUser":{"name":"anuragate","email":"ahmadajmal1514@gmail.com"},"_npmVersion":"10.9.2","description":"GATE Watcher — Self-hosted daemon for WhatsApp Web integration. Credentials never leave your machine.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"dotenv":"^17.3.1","qrcode":"^1.5.4","qrcode-terminal":"^0.12.0","whatsapp-web.js":"^1.26.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/watcher-whatsapp_0.3.0_1772202986499_0.9934293984075431","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@anura-gate/watcher-whatsapp","version":"0.4.0","keywords":["gate","watcher","whatsapp","messaging","self-hosted"],"license":"MIT","_id":"@anura-gate/watcher-whatsapp@0.4.0","maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"bin":{"gate-watcher-whatsapp":"cli.js"},"dist":{"shasum":"fd3619c5a614c6ec5d6f68de7e851e3ebd07290a","tarball":"https://registry.npmjs.org/@anura-gate/watcher-whatsapp/-/watcher-whatsapp-0.4.0.tgz","fileCount":10,"integrity":"sha512-Z6zV7nN3wZapyLnGC8EP8dK0Zlgmblhfrcg96uYMla2dLSG6XoWroR1g/ckFYBG1Zm5nCmN9iLvD0HeLbYMb8g==","signatures":[{"sig":"MEQCIHQuD5A1N6GNLp0h/2Xome8/nliHNx92RqkKJS/3qLL7AiBMJlUd9RnWzSGzowDmaB6lUterGrhC3r1nvTxliWipxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112677},"main":"index.js","engines":{"node":">=18"},"gitHead":"9de498efc9037d0f60a6b830ab7df915d5e8dbfc","scripts":{"dev":"node cli.js","start":"node cli.js"},"_npmUser":{"name":"anuragate","email":"ahmadajmal1514@gmail.com"},"_npmVersion":"10.9.2","description":"GATE Watcher — Self-hosted daemon for WhatsApp Web integration. Credentials never leave your machine.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"dotenv":"^17.3.1","qrcode":"^1.5.4","qrcode-terminal":"^0.12.0","whatsapp-web.js":"^1.26.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/watcher-whatsapp_0.4.0_1772343243095_0.4054537624207313","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@anura-gate/watcher-whatsapp","version":"0.4.1","keywords":["gate","watcher","whatsapp","messaging","self-hosted"],"license":"MIT","_id":"@anura-gate/watcher-whatsapp@0.4.1","maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"bin":{"gate-watcher-whatsapp":"cli.js"},"dist":{"shasum":"200c65a7671607a98d3b44ee05ab26cadfb8080b","tarball":"https://registry.npmjs.org/@anura-gate/watcher-whatsapp/-/watcher-whatsapp-0.4.1.tgz","fileCount":10,"integrity":"sha512-P1TG7xb8QjuLEA6mh/JBlQ1W5ETL399Ws0O0QZoQtU91d2TifMCZyYtej/YxK688Dkbe+VAoSdT1EgMaCL31ZA==","signatures":[{"sig":"MEUCIQChdlwHn64u/ripkSh0eIsvVuBljHz32TkRzfVr5AKBNQIgTAlkl/tqVsQdlJ5dA455EZ79NMRPfg3i50ubbaIw6tM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113528},"main":"index.js","engines":{"node":">=18"},"gitHead":"5c5f0faef20ef41bf9d7a7bd4cdb1b5247782879","scripts":{"dev":"node cli.js","start":"node cli.js"},"_npmUser":{"name":"anuragate","email":"ahmadajmal1514@gmail.com"},"_npmVersion":"10.9.2","description":"GATE Watcher — Self-hosted daemon for WhatsApp Web integration. Credentials never leave your machine.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"dotenv":"^17.3.1","qrcode":"^1.5.4","qrcode-terminal":"^0.12.0","whatsapp-web.js":"^1.26.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/watcher-whatsapp_0.4.1_1772345839847_0.5167173346156886","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@anura-gate/watcher-whatsapp","version":"0.6.0","description":"GATE Watcher — Self-hosted daemon for WhatsApp Web integration. Credentials never leave your machine.","main":"index.js","bin":{"gate-watcher-whatsapp":"cli.js"},"scripts":{"start":"node cli.js","dev":"node cli.js"},"keywords":["gate","watcher","whatsapp","messaging","self-hosted"],"license":"MIT","homepage":"https://anuragate.com","repository":{"type":"git","url":"git+https://github.com/ahmad-ajmal/AnuraGate_Sample.git"},"dependencies":{"dotenv":"^17.3.1","qrcode":"^1.5.4","qrcode-terminal":"^0.12.0","whatsapp-web.js":"^1.26.1"},"engines":{"node":">=18"},"_id":"@anura-gate/watcher-whatsapp@0.6.0","gitHead":"0ebb362ebdf75c602ccbaa15cb7db91b80f2901d","bugs":{"url":"https://github.com/ahmad-ajmal/AnuraGate_Sample/issues"},"_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-YUqUljfSzA2unkKHnn0wfATIwXnP1+j7l/majrx49GJINT4H5SfPDXRBX/4aqLEi2BfaIvPrQ44g54VX2rlPcQ==","shasum":"21f4adc963a0a8a20a870ebf80184b8e42533fd2","tarball":"https://registry.npmjs.org/@anura-gate/watcher-whatsapp/-/watcher-whatsapp-0.6.0.tgz","fileCount":10,"unpackedSize":113670,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFpXFWHuHrtfrJR8NaXRJAvzwffwEsx4pLyi62ICON81AiBE6jyaf2bRucJ7xxE/6gS7OhdmmG7vG8jW01bxmPQCkw=="}]},"_npmUser":{"name":"anuragate","email":"ahmadajmal1514@gmail.com"},"directories":{},"maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/watcher-whatsapp_0.6.0_1772353004707_0.688001811381515"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-27T14:36:26.357Z","modified":"2026-03-01T08:16:45.046Z","0.3.0":"2026-02-27T14:36:26.806Z","0.4.0":"2026-03-01T05:34:03.244Z","0.4.1":"2026-03-01T06:17:19.983Z","0.6.0":"2026-03-01T08:16:44.903Z"},"license":"MIT","keywords":["gate","watcher","whatsapp","messaging","self-hosted"],"description":"GATE Watcher — Self-hosted daemon for WhatsApp Web integration. Credentials never leave your machine.","maintainers":[{"name":"anuragate","email":"ahmadajmal1514@gmail.com"}],"readme":"# GATE Watcher — WhatsApp Web\n\nSelf-hosted daemon that connects to WhatsApp Web and pushes all message events to GATE cloud for security processing. **Your WhatsApp session tokens never leave your machine.**\n\n## How it works\n\n```\nYour Machine (Watcher)              GATE Cloud\n┌─────────────────────┐        ┌──────────────────┐\n│ WhatsApp Web session │───────>│ Security pipeline │\n│ (tokens stay HERE)   │<───────│ (redact, policy,  │\n│                      │ poll   │  audit, forward)  │\n└─────────────────────┘        └──────────────────┘\n```\n\n## Quick Start (CLI)\n\nThe fastest way — runs standalone with QR in your terminal.\n\n```bash\ncd watcher\nnpm install\n\n# Create .env (or pass env vars directly)\ncp .env.example .env\n# Fill in GATE_URL, GATE_KEY, GATE_INTEGRATION_ID\n\nnpm start\n```\n\nScan the QR code with your phone. Done.\n\n## Embed in Your App (SDK)\n\nFor production use — import the class, handle the QR however you want.\n\n```bash\nnpm install @anura-gate/watcher-whatsapp\n```\n\n```js\nconst { GateWatcher } = require(\"@anura-gate/watcher-whatsapp\");\n\nconst watcher = new GateWatcher({\n  gateUrl: \"https://your-gate.vercel.app\",\n  gateKey: \"gk-xxx\",\n  integrationId: \"int_xxx\",\n});\n\n// Render QR however you want — web page, API response, email, etc.\nwatcher.on(\"qr\", (qr) => {\n  // Example: send to frontend via WebSocket\n  io.emit(\"whatsapp-qr\", qr);\n});\n\nwatcher.on(\"ready\", () => {\n  console.log(\"WhatsApp connected!\");\n});\n\n// Every incoming message after GATE security processing\nwatcher.on(\"message\", (msg, result) => {\n  console.log(`From: ${msg.from}, Text: ${msg.body}`);\n  console.log(`Security actions: ${result.securityActions}`);\n  console.log(`Blocked: ${result.blocked}`);\n});\n\n// Outbound actions executed by the watcher\nwatcher.on(\"action_result\", ({ action, success, error }) => {\n  console.log(`${action}: ${success ? \"done\" : error}`);\n});\n\nawait watcher.start();\n\n// Later...\nawait watcher.stop();\n```\n\n### SDK Events\n\n| Event | Args | Description |\n|---|---|---|\n| `qr` | `(qrString)` | QR code string — render it however you want |\n| `authenticated` | — | WhatsApp session authenticated |\n| `ready` | — | Client ready, heartbeat + polling started |\n| `message` | `(msg, result)` | Incoming message processed by GATE |\n| `message_sent` | `(msg, result)` | Outgoing message processed by GATE |\n| `action` | `(action)` | Outbound action received from queue |\n| `action_result` | `({ actionId, action, success, result, error })` | Outbound action completed |\n| `gate_error` | `({ path, status, error })` | GATE API call failed |\n| `limit_reached` | `(type)` | Plan limit hit (e.g. \"watcher_agents\") |\n| `disconnected` | `(reason)` | WhatsApp disconnected |\n| `stopped` | — | Watcher fully shut down |\n\n### SDK Options\n\n| Option | Required | Default | Description |\n|---|---|---|---|\n| `gateUrl` | Yes | — | GATE cloud URL |\n| `gateKey` | Yes | — | Virtual key (`gk-xxx`) |\n| `integrationId` | Yes | — | Integration ID (`int_xxx`) |\n| `authDir` | No | `./.wwebjs_auth` | Path to store WhatsApp session |\n| `heartbeatInterval` | No | `30000` | ms between heartbeats |\n| `pollInterval` | No | `3000` | ms between outbound polls |\n| `puppeteer` | No | `{ headless: true }` | Puppeteer launch options |\n\n### Advanced: Access whatsapp-web.js directly\n\n```js\nconst client = watcher.getWhatsAppClient();\nconst chats = await client.getChats();\n```\n\n## Setup\n\n1. Go to **GATE Dashboard → Integrations → Add Integration**\n2. Select **WhatsApp Web**, copy the **Integration ID**\n3. Copy your **Virtual Key** from the **Keys** page\n4. Set the three env vars and run\n\n## Security model\n\n- WhatsApp session tokens stored in `.wwebjs_auth/` on YOUR machine\n- GATE cloud never sees or stores your credentials\n- All message content passes through GATE's security pipeline\n- Billing, limits, and security enforced server-side\n","readmeFilename":"README.md","homepage":"https://anuragate.com","repository":{"type":"git","url":"git+https://github.com/ahmad-ajmal/AnuraGate_Sample.git"},"bugs":{"url":"https://github.com/ahmad-ajmal/AnuraGate_Sample/issues"}}