Skip to content

simonCatBot/rocclaw

Repository files navigation

rocCLAW

rocCLAW

Operator dashboard for managing OpenClaw AI agents

Node.js GitHub Release License: MIT Version


About

rocCLAW is a web-based dashboard for managing OpenClaw AI agents. It acts as a secure proxy between your browser and the OpenClaw gateway, so you can connect from any client machine -- a laptop, a workstation, or a remote desktop -- to an OpenClaw instance running anywhere on your network. No need to SSH into the gateway host or work from the terminal. Just point rocCLAW at your gateway (locally, over Tailscale, or through an SSH tunnel) and manage everything from the browser.

Key capabilities:

  • Remote access -- Connect to any OpenClaw gateway from any machine on your network, via LAN, Tailscale, or SSH tunnel
  • Agent management -- Create, configure, and organize AI agents with personality files
  • Real-time chat -- Interactive conversations with streaming responses, tool call visibility, and thinking traces
  • System monitoring -- Live CPU, memory, GPU, disk, and network metrics
  • Task scheduling -- Cron jobs that run agents on autopilot
  • Exec approvals -- Approve or deny agent commands inline with allow-once, allow-always, and deny options
  • Permissions & sandboxing -- Per-agent sandbox modes, workspace access controls, and tool policies

Architecture

Browser (React)  <--HTTP/SSE-->  rocCLAW Server (Next.js + SQLite)  <--WebSocket-->  OpenClaw Gateway

The server mediates all communication. It handles authentication, rate limiting, event persistence (SQLite outbox), and SSE replay on reconnect. The gateway token never reaches the browser.

Quick Start

Prerequisites: Node.js 20.9+ and a running OpenClaw gateway.

git clone https://github.com/simonCatBot/rocclaw.git
cd rocclaw
npm install
npm run dev

Open http://localhost:3000, enter your gateway URL (ws://127.0.0.1:18789), paste your token, and click Save Settings.

To get your gateway token:

openclaw config get gateway.auth.token

Installation

Pre-built Package

Download from GitHub Releases:

# Linux/macOS
curl -L -o rocclaw.tar.gz https://github.com/simoncatbot/rocclaw/releases/latest/download/rocclaw-linux-x64.tar.gz
tar -xzf rocclaw.tar.gz && cd rocclaw
npm ci --include=dev && node server/index.js

# Windows: download rocclaw-windows-x64.zip, extract, run the same commands

npm

npm install -g @simoncatbot/rocclaw
rocclaw

From Source

git clone https://github.com/simoncatbot/rocclaw.git
cd rocclaw
npm install
npm run dev

Setup Guides

Same-Machine Setup

For running OpenClaw and rocCLAW on the same machine:

# Configure the gateway
openclaw config set gateway.bind lan
openclaw config set gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback true
openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true
openclaw gateway restart

# Get your token
openclaw config get gateway.auth.token

Start with npm run dev, open http://localhost:3000, enter the URL and token, then click Save Settings. No .env file is needed — the gateway URL defaults to ws://localhost:18789 and all settings are configurable through the UI.

Note: The dangerously* flags relax security checks. Only use on trusted local networks.

Remote Gateway via Tailscale

On the gateway machine:

ip addr show tailscale0 | grep inet  # Find your Tailscale IP (100.x.x.x)
openclaw config set gateway.bind 100.x.x.x
openclaw gateway restart

On your local machine, start rocCLAW and enter wss://my-gateway.ts.net as the gateway URL in the connection settings. Use wss:// (WebSocket Secure) when connecting via Tailscale.

Remote Gateway via SSH Tunnel
ssh -L 18789:127.0.0.1:18789 user@gateway-host

Keep the terminal open, then connect rocCLAW to ws://localhost:18789.

Agent Configuration

Each agent has personality files that define its behavior:

File Purpose
SOUL.md Core identity and principles
AGENTS.md Operating rules and workflows
USER.md Context about the human operator
IDENTITY.md Agent metadata (name, emoji, avatar)

Permissions

Setting Options Description
Command Mode Off / Ask / Auto Whether commands need approval
Sandbox Mode Off / Non-main / All Container isolation for sessions
Workspace Access None / Read-only / Read-write Filesystem visibility in sandbox
Tools Profile Minimal / Coding / Messaging / Full Available tool groups

See Permissions & Sandboxing for details.

Tech Stack

Component Technology
Framework Next.js 16, React 19, TypeScript 5 (strict)
Styling Tailwind CSS v4, shadcn/ui
Database SQLite via better-sqlite3 (WAL mode)
Gateway Communication WebSocket (ws)
State Management React Context + useReducer
Server Custom Node.js entry point (server/index.js)

Development

npm run dev          # Dev server with hot reload
npm run build        # Production build
npm run typecheck    # TypeScript strict checking
npm run lint         # ESLint
npm run test         # Unit tests (Vitest)
npm run e2e          # E2E tests (Playwright)

Run all checks before submitting:

npm run typecheck && npm run lint && npm run test && npm run build

See Contributing for full development setup.

Troubleshooting

Problem Solution
Control ui requires device identity Run openclaw config set gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback true && openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true && openclaw gateway restart
Connection test passes but dashboard won't load Use 127.0.0.1 or localhost in NEXT_PUBLIC_GATEWAY_URL, not a LAN IP
SQLite errors on startup Run npm run verify:native-runtime:repair
Agent won't respond (shows as offline) Try "New Session" in the chat header
401 errors Regenerate token: openclaw config get gateway.auth.token

Documentation

Document Description
Architecture Technical deep-dive: data flow, API routes, durability model
Contributing Development setup, testing, commit conventions
Permissions & Sandboxing Security model and sandbox configuration
Changelog Release history

License

MIT


About

OpenClaw Dashboard

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors