OpenClaw Bot Dashboard
by @xmanrui
Launch and manage the OpenClaw Dashboard web UI for monitoring all your bots, agents, models, and sessions. Automatically detects OS, checks for updates, ins...
clawhub install openclaw-bot-dashboard📖 About This Skill
name: openclaw-bot-dashboard description: Launch and manage the OpenClaw Dashboard web UI for monitoring all your bots, agents, models, and sessions. Automatically detects OS, checks for updates, installs dependencies, and starts the development server. Supports macOS, Windows, and Linux with automatic git detection and fallback download methods. Triggers include "打开机器人大盘", "打开 OpenClaw-bot-review", "打开Openclaw大盘", "打开 bot review", "open openclaw dashboard", "open OpenClaw-bot-review", "open bot dashboard", "open bot review", "launch bot review".
OpenClaw Dashboard Skill
Launch and manage the OpenClaw Dashboard web UI for monitoring all your bots, agents, models, and sessions.
Activation
Activate when user says:
What This Skill Does
1. Detects the operating system (macOS/Windows) 2. Checks if git is installed 3. Downloads/clones the OpenClaw Dashboard project if not already present 4. Installs dependencies (npm install) 5. Starts the development server in background 6. Returns the access URL to the user
Installation Directory
~/projects/OpenClaw-bot-review/%USERPROFILE%\projects\OpenClaw-bot-review\Prerequisites
~/.openclaw/openclaw.json (or %USERPROFILE%\.openclaw\openclaw.json on Windows)Workflow
Step 1: Check if already running and stop it
# Check if process is already running on port 3000
macOS/Linux
lsof -ti:3000Windows
netstat -ano | findstr :3000
If already running:
macOS/Linux:
lsof -ti:3000 | xargs kill -9 2>/dev/null
echo "已停止旧服务"
Windows (PowerShell):
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process -Force
Write-Host "已停止旧服务"
Windows (cmd):
for /f "tokens=5" %a in ('netstat -ano ^| findstr :3000') do taskkill /F /PID %a
echo 已停止旧服务
Then proceed to Step 1.5.
Step 1.5: Check for updates (if project exists)
If project exists, check if there's a newer version:
If git is available:
# macOS/Linux
cd ~/projects/OpenClaw-bot-review
git fetch origin main 2>/dev/null
LOCAL=$(git rev-parse HEAD 2>/dev/null)
REMOTE=$(git rev-parse origin/main 2>/dev/null)if [ "$LOCAL" != "$REMOTE" ]; then
echo "update_available"
else
echo "up_to_date"
fi
Windows (PowerShell)
cd "$env:USERPROFILE\projects\OpenClaw-bot-review"
git fetch origin main 2>$null
$local = git rev-parse HEAD 2>$null
$remote = git rev-parse origin/main 2>$null
if ($local -ne $remote) { "update_available" } else { "up_to_date" }
If update available:
git pull origin mainnpm installIf up to date:
If git is NOT available:
# macOS/Linux
rm -rf ~/projects/OpenClaw-bot-review
# Windows (PowerShell)
Remove-Item -Recurse -Force "$env:USERPROFILE\projects\OpenClaw-bot-review"
Step 2: Check if project exists
# macOS/Linux
test -d ~/projects/OpenClaw-bot-review && echo "exists" || echo "not found"Windows (PowerShell)
Test-Path "$env:USERPROFILE\projects\OpenClaw-bot-review"
If exists, skip to Step 4.
Step 3: Download project
Option A: With git (preferred)
# macOS/Linux
mkdir -p ~/projects
cd ~/projects
git clone https://github.com/xmanrui/OpenClaw-bot-review.gitWindows (PowerShell)
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\projects"
cd "$env:USERPROFILE\projects"
git clone https://github.com/xmanrui/OpenClaw-bot-review.git
Option B: Without git (fallback)
macOS/Linux:
mkdir -p ~/projects
cd ~/projects
curl -L https://github.com/xmanrui/OpenClaw-bot-review/archive/refs/heads/main.zip -o openclaw-dashboard.zip
unzip openclaw-dashboard.zip
mv OpenClaw-bot-review-main OpenClaw-bot-review
rm openclaw-dashboard.zip
Windows (PowerShell):
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\projects"
cd "$env:USERPROFILE\projects"
Invoke-WebRequest -Uri "https://github.com/xmanrui/OpenClaw-bot-review/archive/refs/heads/main.zip" -OutFile "openclaw-dashboard.zip"
Expand-Archive -Path "openclaw-dashboard.zip" -DestinationPath "."
Rename-Item -Path "OpenClaw-bot-review-main" -NewName "OpenClaw-bot-review"
Remove-Item "openclaw-dashboard.zip"
Windows (cmd with curl - Windows 10+):
mkdir "%USERPROFILE%\projects" 2>nul
cd /d "%USERPROFILE%\projects"
curl -L https://github.com/xmanrui/OpenClaw-bot-review/archive/refs/heads/main.zip -o openclaw-dashboard.zip
tar -xf openclaw-dashboard.zip
ren OpenClaw-bot-review-main OpenClaw-bot-review
del openclaw-dashboard.zip
Step 4: Install dependencies (if needed)
Check if node_modules exists. If not:
# macOS/Linux
cd ~/projects/OpenClaw-bot-review
npm installWindows
cd "%USERPROFILE%\projects\OpenClaw-bot-review"
npm install
Step 5: Start the server
macOS/Linux:
cd ~/projects/OpenClaw-bot-review
npm run dev > /dev/null 2>&1 &
Windows (PowerShell):
cd "$env:USERPROFILE\projects\OpenClaw-bot-review"
Start-Process -NoNewWindow -FilePath "npm" -ArgumentList "run", "dev"
Windows (cmd):
cd /d "%USERPROFILE%\projects\OpenClaw-bot-review"
start /B npm run dev
Step 6: Wait for server to be ready
Poll http://localhost:3000 until it responds (max 30 seconds).
# macOS/Linux
for i in {1..30}; do
curl -s http://localhost:3000 > /dev/null && break
sleep 1
doneWindows (PowerShell)
for ($i=0; $i -lt 30; $i++) {
try {
Invoke-WebRequest -Uri "http://localhost:3000" -UseBasicParsing -TimeoutSec 1 | Out-Null
break
} catch {
Start-Sleep -Seconds 1
}
}
Step 7: Return access URLs (required)
You MUST return both:
First, actually detect the machine's LAN IPv4 address. Do not guess it.
macOS/Linux:
(ipconfig getifaddr en0 || ipconfig getifaddr en1 || hostname -I | awk '{print $1}') 2>/dev/null
Windows (PowerShell):
(Get-NetIPAddress -AddressFamily IPv4 -InterfaceAlias "Ethernet*","Wi-Fi*" | Select-Object -First 1).IPAddress
Rules:
Return message format:
✅ OpenClaw Dashboard 已启动!访问地址:
本地访问:http://localhost:3000
局域网访问:http://:3000 Dashboard 会自动读取你的 OpenClaw 配置,展示所有机器人、模型、会话的状态。
需要停止服务时告诉我一声。
If LAN IP detection fails, use:
✅ OpenClaw Dashboard 已启动!访问地址:
本地访问:http://localhost:3000
局域网访问:获取失败 原因:未能检测到当前机器的局域网 IPv4 地址。
需要停止服务时告诉我一声。
Stopping the Server
When user asks to stop:
macOS/Linux:
lsof -ti:3000 | xargs kill -9
Windows (PowerShell):
Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess | Stop-Process -Force
Windows (cmd):
for /f "tokens=5" %a in ('netstat -ano ^| findstr :3000') do taskkill /F /PID %a
Error Handling
PORT=3001 npm run dev)~/.openclaw/openclaw.jsonnpm cache clean --force and retryingNotes
~/.openclaw/openclaw.json - no database neededPlatform Detection
# Detect OS
uname -s # macOS: Darwin, Linux: Linux, Windows (Git Bash): MINGW*/MSYS*Windows detection in PowerShell
$PSVersionTable.Platform # Win32NT or empty on Windows
Git Detection
# Check if git is available
git --version
Exit code 0 = installed, non-zero = not installed
Detection logic:
1. Run git --version at the beginning
2. Store result (available/not available)
3. Use this result throughout the workflow
If git not available:
Implementation Tips
1. Always stop old service first - ensures clean restart with latest code 2. Check git availability at the start - determines update strategy 3. With git: Check for updates and pull if needed 4. Without git: Force re-download ZIP to ensure latest version 5. No user confirmation needed - auto-update and restart for best UX 6. Use background process management to avoid blocking 7. Provide clear feedback at each step ("已停止旧服务", "检测到新版本,正在更新...", "正在重新下载最新版本...") 8. Handle both PowerShell and cmd on Windows 9. Clean up temporary files (zip archives) 10. Log errors for debugging but keep user messages simple 11. Always ensure latest code - either via git pull or re-download
⚙️ Configuration
~/.openclaw/openclaw.json (or %USERPROFILE%\.openclaw\openclaw.json on Windows)📋 Tips & Best Practices
~/.openclaw/openclaw.json - no database needed