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.
🦀 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.
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 (recommended)
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:18789so the container can connect. If you're running Moltbot withbind: loopbackandtailscale servefor secure tailnet-only access, you'll need to run the crabwalk container with host networking - replacep:3000:3000with--network hostThis 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: loopbackonly, you will need to edit thedocker-compose.ymlto addnetwork_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

