claw-bot

中文 · Homepage · Jetson acceptance

claw-bot logo

claw-bot is an Agent Harness plugin for robot perception, action, and feedback. It packages a skill, MCP server, CLI, dashboard, and acceptance tools so a decision agent can use capabilities exposed by a realworld or simulator environment.

claw-bot plugin + decision agent = Robot Brain

claw-bot dashboard preview

Install

For a published npm package, install and configure a Linux or Jetson robot host in one command:

npm exec --yes --package @bozhi-ai/claw-bot@latest -- claw-bot install --yes --json

For GitHub distribution, use the repository as both the temporary installer package and the global package source:

CLAW_BOT_INSTALL_PACKAGE_SPEC=github:bozhi-ai/claw-bot \
npm exec --yes --package github:bozhi-ai/claw-bot -- claw-bot install --yes --json

The installer globally installs or refreshes claw-bot, writes the dashboard token, claw-bot config, Codex profile, and systemd user service, then starts the dashboard service. It assumes Linux with node, npm, git, systemctl --user, an available dashboard port 8787, and optionally arecord for microphone diagnostics.

If systemctl --user cannot run because lingering is disabled, enable it outside this repository:

loginctl enable-linger "$USER"

Dashboard

The dashboard is the field acceptance and operator surface. It shows voice state, microphone readiness, environment configuration, agent plan, action payloads, controller feedback, and maintenance status.

Read the dashboard URL:

claw-bot dashboard open --json

Or construct it from the installer-written token:

source ~/.config/claw-bot/dashboard.env
echo "http://$(hostname):8787/?token=${CLAW_BOT_DASHBOARD_TOKEN}"

For LAN access from another machine, replace $(hostname) with the robot host name or IP:

http://jetson.local:8787/?token=<CLAW_BOT_DASHBOARD_TOKEN>

The dashboard is a long-running HTTP/WebSocket service. It is not the marketing homepage; the static homepage lives in index.html.

MCP Setup

claw-bot install --yes creates:

For agents that configure MCP manually:

[mcp_servers.claw_bot]
command = "claw-bot-mcp"
args = []
enabled = true
required = true
enabled_tools = [
  "robot_status",
  "robot_configure_environment",
  "robot_perceive",
  "robot_act",
  "robot_subscribe",
  "robot_feedback"
]

For registry-driven MCP clients that launch the npm package directly:

npx -y @bozhi-ai/claw-bot@latest mcp

The MCP Registry metadata is in server.json. The packaged skill is skills/claw_bot.

The formal MCP contract and isolated acceptance standard are documented in docs/mcp-preview-standard.md.

Validate

Verify the installed system:

systemctl --user status claw-bot-dashboard.service --no-pager --lines=20
claw-bot status --json
claw-bot doctor --json
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18"}}' | claw-bot-mcp
claw-bot voice start --environment realworld --json
claw-bot voice status --json
claw-bot voice stop --json
npm run benchmark:robot -- --runner mcp --case all --iterations 3 --json

Expected high-level result:

Field Acceptance

Local tests and HTTP health checks only prove the harness is configured. For a real robot or simulator demo, record this evidence chain:

For Jetson deployment and live voice acceptance, follow docs/claw-bot-deploy-acceptance.md.

Design Philosophy

claw-bot owns the plugin boundary. The decision agent owns the planning loop; the robot or simulator environment owns the hardware, controller, and runtime capabilities.

Within that boundary:

Scope

claw-bot owns:

claw-bot does not own:

CLI

Common commands:

claw-bot status --json
claw-bot doctor --json
claw-bot dashboard open --json
claw-bot voice start --environment realworld --json
claw-bot voice status --json
claw-bot voice stop --json
claw-bot-mcp

Realtime voice and dashboard binaries are also published:

claw-bot-chatgpt-auth
claw-bot-chatgpt-transcribe-bridge
claw-bot-dashboard
claw-bot-jetson-tui
claw-bot-openai-realtime-bridge

Development

Install dependencies and run the full gate:

npm install
npm test
npm run pack:check

npm test recursively discovers every *.test.js file under test/; a coverage contract test guards the entry point and checks that no file is omitted. Helpers and fixtures without that suffix are not test entry points. Dashboard UI tests run in Node (VM and a temporary local HTTP server), without a browser or hardware.

RGB-D integration tests require CLAW_BOT_TENSOR_PYTHON pointing to Python with PyTorch >=2.6, Pillow and numpy. Without it, they report an explicit skip; a configured but invalid runtime fails the tests. Pull-request CI installs the CPU dependencies and runs these tests. The live authenticated model test is separately skipped unless CLAW_BOT_LIVE_VISION_TEST=1; it is not needed for fixture coverage. See RGB-D test commands.

Focused checks:

npm run test:robot
npm run test:mcp
npm run test:skill
npm run test:voice
npm run benchmark:robot -- --runner mcp --case all --iterations 3 --json

Refresh a local source checkout into the globally installed plugin before a field demo:

claw-bot install --yes --package . --json

Package contents should stay focused on plugin-owned files: skill, MCP server, CLI, dashboard, docs, acceptance scripts, templates, and assets.