Jamie Taylor 87a6e71aa9 fix(workspace): improve file tree refresh behavior and state management
Fix file tree not properly resetting when refreshing workspace directory. Add useEffect hook to reset children state when entry path changes, preventing stale data display. Update handleRefresh to properly clear cache before reload and handle cases where selected files are deleted during refresh. Remove children.length check from loadChildren to allow directory re-expansion after refresh.
2026-01-31 17:50:21 +00:00
2026-01-26 14:55:04 -05:00
2026-01-25 17:47:27 -05:00
2026-01-25 17:47:27 -05:00
2026-01-26 15:13:31 -05:00
2026-01-25 17:47:27 -05:00

🦀 Crabwalk

Real-time companion monitor for Moltbot (Clawdbot) agents by @luccasveg.

Watch your AI agents work across WhatsApp, Telegram, Discord, and Slack in a live node graph. See thinking states, tool calls, and response chains as they happen.

Crabwalk Home

Crabwalk Monitor

Features

  • Live activity graph - ReactFlow visualization of agent sessions and action chains
  • Multi-platform - Monitor agents across all messaging platforms simultaneously
  • Real-time streaming - WebSocket connection to clawdbot gateway
  • Action tracing - Expand nodes to inspect tool args and payloads
  • Session filtering - Filter by platform, search by recipient

Installation

docker run -d \
  -p 3000:3000 \
  -e CLAWDBOT_API_TOKEN=your-token \
  -e CLAWDBOT_URL=ws://host.docker.internal:18789 \
  -v ~/.openclaw/workspace:/root/.openclaw/workspace \
  ghcr.io/luccast/crabwalk:latest

Note: When running Crabwalk in Docker, the Moltbot gateway typically runs on the host. Use CLAWDBOT_URL=ws://host.docker.internal:18789 so the container can connect. If you're running Moltbot with bind: loopback and tailscale serve for secure tailnet-only access, you'll need to run the crabwalk container with host networking - replace p:3000:3000 with --network host This allows the container to reach 127.0.0.1:18789 while maintaining the security benefits of loopback-only binding.

Workspace Access

The workspace explorer needs access to your local files. By default, it looks for files at ~/.openclaw/workspace. In Docker, mount your host workspace to the same path in the container:

# Default workspace path (recommended)
docker run -d \
  -p 3000:3000 \
  -e CLAWDBOT_API_TOKEN=your-token \
  -v ~/.openclaw/workspace:/root/.openclaw/workspace \
  ghcr.io/luccast/crabwalk:latest

# Custom workspace path on host
docker run -d \
  -p 3000:3000 \
  -e CLAWDBOT_API_TOKEN=your-token \
  -v /path/to/your/workspace:/root/.openclaw/workspace \
  ghcr.io/luccast/crabwalk:latest

Or with docker-compose:

curl -O https://raw.githubusercontent.com/luccast/crabwalk/master/docker-compose.yml
CLAWDBOT_API_TOKEN=your-token docker-compose up -d

To use a custom workspace path with docker-compose, set the WORKSPACE_HOST_PATH environment variable:

WORKSPACE_HOST_PATH=/path/to/your/workspace CLAWDBOT_API_TOKEN=your-token docker-compose up -d

If gateway is bind: loopback only, you will need to edit the docker-compose.yml to add network_mode: host

From source

git clone https://github.com/luccast/crabwalk.git
cd crabwalk
npm install
CLAWDBOT_API_TOKEN=your-token npm run dev

Open http://localhost:3000/monitor

Configuration

Requires clawdbot gateway running on the same machine.

Gateway Token

Find your token in the clawdbot config file:

# Look for gateway.auth.token
cat ~/.clawdbot/clawdbot.json | rg "gateway\.auth\.token"

Or with jq:

jq '.gateway.auth.token' ~/.clawdbot/clawdbot.json

Or copy it directly:

export CLAWDBOT_API_TOKEN=$(python3 -c "import json,os; print(json.load(open(os.path.expanduser('~/.clawdbot/clawdbot.json')))['gateway']['auth']['token'])")

Stack

TanStack Start, ReactFlow, Framer Motion, tRPC, TanStack DB

S
Description
No description provided
Readme MIT
5.4 MiB
Languages
TypeScript 94.4%
CSS 3.3%
Shell 2.2%
Dockerfile 0.1%