A JARVIS-style HUD dashboard for OpenClaw agents.
Interactive 3D orb that visualizes your agent's state in real-time โ thinking, responding, idle โ with live chat, system monitoring, and audio visualization.
| Cyan | Green |
|---|---|
![]() |
![]() |
Interactive Three.js orb with real-time agent state visualization. Shows IDLE, THINKING, or RESPONDING status with color-coded text. Draggable, audio-reactive, with orbiting particle system.
Real-time streaming chat via OpenClaw Gateway WebSocket.
- Markdown rendering (code blocks, links, lists)
- Chat history โ loads previous conversations on page load (configurable: 20/50/100/200 messages)
- File upload โ drag & drop, paperclip button, or Ctrl+V paste for images
- Bubble-style UI with timestamps and sender labels
Live system metrics pushed via SSE.
- CPU usage, memory, uptime
- Current model name and token count
- Auto-updating, no polling
Three-layer audio visualization that reacts to TTS playback:
- Spectrum โ frequency bar graph
- Ring โ concentric circles that pulse with audio
- Waveform โ oscilloscope-style wave display
Full CRUD task board with real-time sync.
- Priority levels, progress tracking, tags
- Persistent storage (server-side JSON)
- SSE push โ updates appear instantly across tabs
Displays daily topics extracted from your agent's memory/*.md files.
- Shows
##headings as topic entries per day - Collapsible days, TODAY/YESTERDAY labels
- "More" button to load older entries (7 days at a time)
View and control your agent's scheduled tasks.
- Heartbeat โ shows system heartbeat status and interval
- Cron Jobs โ toggle enable/disable directly from the UI
Scans and displays all installed skills (workspace + global).
Dual engine support:
- Edge TTS (default) โ free, 300+ voices, multilingual
- macOS
sayโ offline fallback, requires ffmpeg - Switchable from the Controls panel
One-click color scheme switching via HSL hue rotation.
- 6-color palette in Controls panel (red, orange, green, cyan, blue, purple)
- Affects entire UI: panels, orb, particles, spectrum, background
- Persisted in localStorage
Reduce resource usage for background monitoring.
- Throttles render from 60fps to 15fps
- Disables background animations, particles, scan lines
- Toggle from Controls panel, persisted in localStorage
Responsive UI with touch gestures.
- Swipe up/down on chat header for fullscreen/collapse
- Floating toolbar for quick panel access
- PWA โ installable as a home screen app
npx clawhub install jarvis-ui
cd skills/jarvis-ui
./setup.sh # auto-detects Gateway token
node --env-file=.env server/index.jsgit clone https://github.com/jincocodev/openclaw-jarvis-ui.git
cd openclaw-jarvis-ui
./setup.sh # auto-detects Gateway token
node --env-file=.env server/index.jsOpen http://localhost:9999
If running JARVIS on a remote server (not localhost), OpenClaw Gateway requires a secure context. Add this to ~/.openclaw/openclaw.json:
{ "gateway": { "controlUi": { "allowInsecureAuth": true } } }Then restart the Gateway: openclaw gateway restart
setup.sh auto-detects your token from ~/.openclaw/openclaw.json. If auto-detection fails, set it manually:
echo "GATEWAY_TOKEN=your_token" > .envFind your token: run openclaw status or check ~/.openclaw/openclaw.json โ gateway.token.
cp config.json config.local.json
# Edit config.local.json โ it overrides config.json{
"name": "My Agent HUD",
"agent": {
"name": "Friday",
"emoji": "๐",
"sessionKey": "agent:main:main"
},
"server": {
"port": 9999,
"gatewayUrl": "ws://127.0.0.1:18789"
},
"tts": {
"engine": "edge",
"edgeVoice": "en-US-AriaNeural",
"edgeVoiceAlt": "zh-TW-HsiaoChenNeural",
"voice": "Samantha",
"maxChars": 500
}
}| Key | Description | Default |
|---|---|---|
name |
Dashboard title | "JARVIS" |
agent.name |
Agent display name | "JARVIS" |
agent.emoji |
Agent emoji | "๐ค" |
agent.sessionKey |
OpenClaw session to connect | "agent:main:main" |
server.port |
Server port | 9999 |
server.gatewayUrl |
Gateway WebSocket URL | "ws://127.0.0.1:18789" |
tts.engine |
TTS engine (edge or say) |
"edge" |
tts.edgeVoice |
Primary Edge TTS voice | "en-US-AriaNeural" |
tts.edgeVoiceAlt |
Fallback Edge TTS voice | โ |
tts.voice |
macOS say voice name |
"Samantha" |
tts.maxChars |
Max characters per TTS request | 500 |
Popular Edge TTS voices:
| Language | Voice |
|---|---|
| English (US) | en-US-AriaNeural, en-US-GuyNeural |
| ไธญๆ (ๅฐ็ฃ) | zh-TW-HsiaoChenNeural, zh-TW-YunJheNeural |
| ไธญๆ (ๅคง้ธ) | zh-CN-XiaoxiaoNeural, zh-CN-YunxiNeural |
| ๆฅๆฌ่ช | ja-JP-NanamiNeural |
Full list: python3 -m edge_tts --list-voices
| Command | Description |
|---|---|
npm run dev |
Development (Vite HMR + backend) |
npm run build |
Build static files to dist/ |
npm start |
Production server (serves dist/) |
npm i -g pm2
npm run build
pm2 start server/index.js --name jarvis --node-args="--env-file=.env"
pm2 save- Node.js 20+
- OpenClaw Gateway running locally
- Python 3 +
edge-tts(default TTS engine:pip install edge-tts) - ffmpeg (optional, only needed for macOS
sayengine)
Browser (Vite SPA)
โโ src/main.js
โโ core/ (scene, audio, particles)
โโ components/ (chat, tasks, skills, memory, schedule, ...)
Server (Express + WebSocket)
โโ server/
โโ index.js โ entry point + middleware
โโ gateway.js โ Gateway WS relay
โโ sse.js โ SSE broadcast
โโ tts.js โ TTS engine (Edge + macOS)
โโ system-monitor.js
โโ routes/ โ REST API endpoints
Based on the Three.js Orb Visualizer by Filip Zrnzevic โ original concept, 3D orb design, and audio visualization. Adapted into an OpenClaw agent dashboard by Jincoco.
ISC



