2025-12-03 15:45:32 +00:00
# 🦞 CLAWDIS — WhatsApp Gateway for AI Agents
2025-11-25 04:44:10 +01:00
2025-11-25 14:29:21 +01:00
< p align = "center" >
2025-12-03 15:45:32 +00:00
< img src = "docs/whatsapp-clawd.jpg" alt = "CLAWDIS" width = "400" >
< / p >
< p align = "center" >
< strong > EXFOLIATE! EXFOLIATE!< / strong >
2025-11-25 14:29:21 +01:00
< / p >
2025-11-25 14:42:12 +01:00
< p align = "center" >
< a href = "https://github.com/steipete/warelay/actions/workflows/ci.yml?branch=main" > < img src = "https://img.shields.io/github/actions/workflow/status/steipete/warelay/ci.yml?branch=main&style=for-the-badge" alt = "CI status" > < / a >
< a href = "https://www.npmjs.com/package/warelay" > < img src = "https://img.shields.io/npm/v/warelay.svg?style=for-the-badge" alt = "npm version" > < / a >
< a href = "LICENSE" > < img src = "https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge" alt = "MIT License" > < / a >
< / p >
2025-12-03 15:45:32 +00:00
**CLAWDIS** (formerly Warelay) is a WhatsApp-to-AI gateway. Send a message, get an AI response. It's like having a genius lobster in your pocket 24/7.
2025-11-25 23:06:54 +01:00
2025-12-03 15:45:32 +00:00
```
┌─────────────┐ ┌──────────┐ ┌─────────────┐
│ WhatsApp │ ───▶ │ CLAWDIS │ ───▶ │ AI Agent │
2025-12-05 17:50:02 +00:00
│ (You) │ ◀─── │ 🦞⏱️💙 │ ◀─── │ (Pi/Tau) │
2025-12-03 15:45:32 +00:00
└─────────────┘ └──────────┘ └─────────────┘
```
2025-11-25 04:44:10 +01:00
2025-12-03 15:45:32 +00:00
## Why "CLAWDIS"?
2025-11-25 04:46:14 +01:00
2025-12-03 15:45:32 +00:00
**CLAWDIS** = CLAW + TARDIS
2025-11-29 04:50:56 +00:00
2025-12-03 15:45:32 +00:00
Because every space lobster needs a time-and-space machine. The Doctor has a TARDIS. [Clawd ](https://clawd.me ) has a CLAWDIS. Both are blue. Both are chaotic. Both are loved.
2025-11-29 04:50:56 +00:00
2025-12-03 15:45:32 +00:00
## Features
2025-12-05 19:04:09 +00:00
- 📱 **WhatsApp Integration** — Personal WhatsApp Web (Baileys)
2025-12-05 17:50:02 +00:00
- 🤖 **AI Agent Gateway** — Pi/Tau only (Pi CLI in RPC mode)
2025-12-03 15:45:32 +00:00
- 💬 **Session Management** — Per-sender conversation context
- 🔔 **Heartbeats** — Periodic check-ins for proactive AI
- 👥 **Group Chat Support** — Mention-based triggering
- 📎 **Media Support** — Images, audio, documents, voice notes
- 🎤 **Voice Transcription** — Whisper integration
- 🔧 **Tool Streaming** — Real-time display (💻📄✍️📝)
2025-12-06 05:24:27 +01:00
- 🖥️ **macOS Companion (Clawdis.app)** — Menu bar controls, on-device Voice Wake, model/config editor
2025-11-25 04:44:10 +01:00
2025-12-05 17:50:02 +00:00
Only the Pi/Tau CLI is supported now; legacy Claude/Codex/Gemini paths have been removed.
2025-12-03 15:45:32 +00:00
## Quick Start
2025-11-25 04:44:10 +01:00
2025-12-03 15:45:32 +00:00
```bash
# Install
npm install -g warelay # (still warelay on npm for now)
2025-11-25 04:44:10 +01:00
2025-12-03 15:45:32 +00:00
# Link your WhatsApp
clawdis login
# Send a message
clawdis send --to +1234567890 --message "Hello from the CLAWDIS!"
2025-12-04 17:53:37 +00:00
# Talk directly to the agent (no WhatsApp send)
clawdis agent --to +1234567890 --message "Ship checklist" --thinking high
2025-12-03 15:45:32 +00:00
# Start the relay
clawdis relay --verbose
```
2025-12-06 05:24:27 +01:00
## macOS Companion App (Clawdis.app)
- **On-device Voice Wake:** listens for wake words (e.g. “Claude”) using Apple’ s on-device speech recognizer (macOS 26+). macOS still shows the standard Speech/Mic permissions prompt, but audio stays on device.
- **Config tab:** pick the model from your local Pi model catalog (`pi-mono/packages/ai/src/models.generated.ts` ), or enter a custom model ID; edit session store path and context tokens.
- **Voice settings:** language + additional languages, mic picker, live level meter, trigger-word table, and a built-in test harness.
- **Menu bar toggle:** enable/disable Voice Wake from the menu bar; respects Dock-icon preference.
Build/run the mac app with `./scripts/restart-mac.sh` (packages, installs, and launches), or `swift build --package-path apps/macos && open dist/Clawdis.app` .
2025-12-03 15:45:32 +00:00
## Configuration
Create `~/.clawdis/clawdis.json` :
2025-11-24 11:23:15 +01:00
2025-11-24 16:02:39 +01:00
```json5
{
inbound: {
2025-12-03 15:45:32 +00:00
allowFrom: ["+1234567890"],
2025-11-24 16:02:39 +01:00
reply: {
mode: "command",
2025-12-03 15:45:32 +00:00
command: ["tau", "--mode", "json", "{{BodyStripped}}"],
session: {
scope: "per-sender",
idleMinutes: 1440
},
heartbeatMinutes: 10
2025-11-24 16:02:39 +01:00
}
}
}
```
2025-12-03 15:45:32 +00:00
## Documentation
2025-11-25 16:53:30 +01:00
2025-12-03 15:45:32 +00:00
- [Configuration Guide ](./docs/configuration.md )
- [Agent Integration ](./docs/agents.md )
- [Group Chats ](./docs/group-messages.md )
- [Security ](./docs/security.md )
- [Troubleshooting ](./docs/troubleshooting.md )
- [The Lore ](./docs/lore.md ) 🦞
## Clawd
CLAWDIS was built for **Clawd** , a space lobster AI assistant. See the full setup in [`docs/clawd.md` ](./docs/clawd.md ).
2025-12-03 15:46:29 +00:00
- 🦞 **Clawd's Home:** [clawd.me ](https://clawd.me )
- 📜 **Clawd's Soul:** [soul.md ](https://soul.md )
- 👨💻 **Peter's Blog:** [steipete.me ](https://steipete.me )
- 🐦 **Twitter:** [@steipete ](https://twitter.com/steipete )
2025-12-03 15:45:32 +00:00
2025-12-05 19:04:09 +00:00
## Provider
2025-12-03 15:45:32 +00:00
2025-12-05 19:04:09 +00:00
### WhatsApp Web
2025-12-03 15:45:32 +00:00
```bash
clawdis login # Scan QR code
clawdis relay # Start listening
2025-11-25 16:53:30 +01:00
```
2025-12-03 15:45:32 +00:00
## Commands
| Command | Description |
|---------|-------------|
| `clawdis login` | Link WhatsApp Web via QR |
| `clawdis send` | Send a message |
2025-12-04 17:53:37 +00:00
| `clawdis agent` | Talk directly to the agent (no WhatsApp send) |
2025-12-03 15:45:32 +00:00
| `clawdis relay` | Start auto-reply loop |
| `clawdis status` | Show recent messages |
| `clawdis heartbeat` | Trigger a heartbeat |
2025-12-06 23:16:23 +01:00
### Sessions, surfaces, and WebChat
- Direct chats now share a canonical session key `main` by default (configurable via `inbound.reply.session.mainKey` ). Groups stay isolated as `group:<jid>` .
- WebChat always attaches to the `main` session and hydrates the full Tau history from `~/.clawdis/sessions/<SessionId>.jsonl` , so desktop view mirrors WhatsApp/Telegram turns.
- Inbound contexts carry a `Surface` hint (e.g., `whatsapp` , `webchat` , `telegram` ) for logging; replies still go back to the originating surface deterministically.
2025-12-03 15:45:32 +00:00
## Credits
- **Peter Steinberger** ([@steipete ](https://twitter.com/steipete )) — Creator
- **Mario Zechner** ([@badlogicgames ](https://twitter.com/badlogicgames )) — Tau/Pi, security testing
- **Clawd** 🦞 — The space lobster who demanded a better name
## License
MIT — Free as a lobster in the ocean.
---
*"We're all just playing with our own prompts."*
🦞💙