A Progressive Web App (PWA) for chatting with OpenClaw AI assistants via Tailscale.
🚀 Live Demo: https://openclaw-chat.vercel.app
- 🔐 Ed25519 device authentication - Secure device-based auth matching the OpenClaw protocol
- 🌐 Tailscale support - Connect to your gateway over Tailscale
- 💬 Real-time streaming - Live message streaming via WebSocket
- 📱 Mobile-first - Responsive design, installable as PWA
- 🔊 TTS playback - Audio playback for voice responses (coming soon)
- 🤖 Agent switching - Switch between multiple agents (coming soon)
Or manually:
git clone https://github.com/humanitylabs-org/openclaw-chat.git
cd openclaw-chat
vercel --prod- Open the deployed app
- Enter your gateway URL (e.g.,
https://your-server.tail1234.ts.net) - Paste your auth token (from
~/.openclaw/openclaw.json) - Click "Connect"
- Approve the device in your gateway's Control UI
- Start chatting!
OpenClaw Chat uses the same protocol as the ObsidianClaw plugin:
- WebSocket connection to your OpenClaw gateway
- Ed25519 challenge-response auth for device approval
- Streaming message protocol with delta updates
- Tool call indicators for transparency
All credentials are stored locally in your browser. Nothing is sent to external servers.
# Clone the repo
git clone https://github.com/humanitylabs-org/openclaw-chat.git
cd openclaw-chat
# Serve locally (needs a simple HTTP server)
python3 -m http.server 8000
# or
npx http-server -p 8000
# Open http://localhost:8000- Pure HTML/CSS/JavaScript - No build step required
- WebCrypto API - Native Ed25519 signature generation
- localStorage - Persistent device identity and connection
- Service Worker - Offline caching for PWA
This app ports core functionality from the ObsidianClaw plugin:
- WebSocket client (
ws-client.ts→app.js) - Device authentication (
device-auth.ts→app.js) - Message rendering (
chat-view.ts→index.html+app.js) - Streaming handler (100% compatible)
Excluded Obsidian-specific features:
- File browser (no vault access)
- Multi-server support (v1 = single server only)
- Obsidian API integrations
Test against your own OpenClaw gateway:
# Get your Tailscale gateway URL
tailscale status
# Get your token
cat ~/.openclaw/openclaw.json | grep '"token"'Then enter these in the app's onboarding flow.
- Device identity stored in browser localStorage
- Ed25519 keypair generated on first use
- Token never logged or sent to third parties
- All traffic via Tailscale (optional but recommended)
- WebSocket connection
- Ed25519 device auth
- Message streaming
- Chat history loading
- TTS audio playback
- Agent switcher UI
- Tool step indicators
- Message reactions
- Voice input
- Dark/light theme toggle
MIT
Built by Oscar Collins for HumanityLabs.
Based on the OpenClaw project.