agenticros 0.0.1 β 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +192 -0
- package/README.md +90 -4
- package/dist/commands/config.d.ts +20 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +179 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +33 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +232 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/down.d.ts +15 -0
- package/dist/commands/down.d.ts.map +1 -0
- package/dist/commands/down.js +91 -0
- package/dist/commands/down.js.map +1 -0
- package/dist/commands/init.d.ts +21 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +259 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/logs.d.ts +18 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +67 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/status.d.ts +12 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +56 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/up.d.ts +20 -0
- package/dist/commands/up.d.ts.map +1 -0
- package/dist/commands/up.js +70 -0
- package/dist/commands/up.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +107 -0
- package/dist/index.js.map +1 -0
- package/dist/menu.d.ts +9 -0
- package/dist/menu.d.ts.map +1 -0
- package/dist/menu.js +96 -0
- package/dist/menu.js.map +1 -0
- package/dist/runners/real-robot.d.ts +15 -0
- package/dist/runners/real-robot.d.ts.map +1 -0
- package/dist/runners/real-robot.js +46 -0
- package/dist/runners/real-robot.js.map +1 -0
- package/dist/runners/sim.d.ts +19 -0
- package/dist/runners/sim.d.ts.map +1 -0
- package/dist/runners/sim.js +53 -0
- package/dist/runners/sim.js.map +1 -0
- package/dist/util/env.d.ts +24 -0
- package/dist/util/env.d.ts.map +1 -0
- package/dist/util/env.js +53 -0
- package/dist/util/env.js.map +1 -0
- package/dist/util/logger.d.ts +24 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +62 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/util/paths.d.ts +57 -0
- package/dist/util/paths.d.ts.map +1 -0
- package/dist/util/paths.js +132 -0
- package/dist/util/paths.js.map +1 -0
- package/dist/util/pidfile.d.ts +16 -0
- package/dist/util/pidfile.d.ts.map +1 -0
- package/dist/util/pidfile.js +63 -0
- package/dist/util/pidfile.js.map +1 -0
- package/dist/util/state.d.ts +26 -0
- package/dist/util/state.d.ts.map +1 -0
- package/dist/util/state.js +55 -0
- package/dist/util/state.js.map +1 -0
- package/package.json +60 -1
- package/runtime/BUNDLE.json +11 -0
- package/runtime/LICENSE +192 -0
- package/runtime/README.md +273 -0
- package/runtime/docs/architecture.md +366 -0
- package/runtime/docs/cli.md +140 -0
- package/runtime/docs/memory.md +292 -0
- package/runtime/docs/robot-setup.md +347 -0
- package/runtime/package.json +28 -0
- package/runtime/packages/agenticros/agenticros-agenticros-0.0.1.tgz +0 -0
- package/runtime/packages/agenticros/openclaw.plugin.json +451 -0
- package/runtime/packages/agenticros/package.json +41 -0
- package/runtime/packages/agenticros/src/camera-snapshot-cache.ts +59 -0
- package/runtime/packages/agenticros/src/camera-snapshot-routes.ts +44 -0
- package/runtime/packages/agenticros/src/commands/estop.ts +41 -0
- package/runtime/packages/agenticros/src/commands/transport.ts +195 -0
- package/runtime/packages/agenticros/src/config-file.ts +136 -0
- package/runtime/packages/agenticros/src/config-page.ts +498 -0
- package/runtime/packages/agenticros/src/context/robot-context.ts +373 -0
- package/runtime/packages/agenticros/src/depth.ts +313 -0
- package/runtime/packages/agenticros/src/describer.ts +157 -0
- package/runtime/packages/agenticros/src/image-binary-trim.ts +16 -0
- package/runtime/packages/agenticros/src/index.ts +85 -0
- package/runtime/packages/agenticros/src/landing-page.ts +38 -0
- package/runtime/packages/agenticros/src/memory.ts +44 -0
- package/runtime/packages/agenticros/src/plugin-api.ts +173 -0
- package/runtime/packages/agenticros/src/plugin-image-base64.ts +69 -0
- package/runtime/packages/agenticros/src/preflight.ts +110 -0
- package/runtime/packages/agenticros/src/routes.ts +328 -0
- package/runtime/packages/agenticros/src/safety/validator.ts +43 -0
- package/runtime/packages/agenticros/src/service.ts +359 -0
- package/runtime/packages/agenticros/src/skill-api.ts +65 -0
- package/runtime/packages/agenticros/src/skill-loader.ts +146 -0
- package/runtime/packages/agenticros/src/teleop/page.ts +498 -0
- package/runtime/packages/agenticros/src/teleop/routes.ts +650 -0
- package/runtime/packages/agenticros/src/tools/index.ts +26 -0
- package/runtime/packages/agenticros/src/tools/ros2-action.ts +50 -0
- package/runtime/packages/agenticros/src/tools/ros2-camera.ts +221 -0
- package/runtime/packages/agenticros/src/tools/ros2-depth-distance.ts +58 -0
- package/runtime/packages/agenticros/src/tools/ros2-introspect.ts +62 -0
- package/runtime/packages/agenticros/src/tools/ros2-memory.ts +158 -0
- package/runtime/packages/agenticros/src/tools/ros2-param.ts +87 -0
- package/runtime/packages/agenticros/src/tools/ros2-publish.ts +52 -0
- package/runtime/packages/agenticros/src/tools/ros2-service.ts +46 -0
- package/runtime/packages/agenticros/src/tools/ros2-subscribe.ts +71 -0
- package/runtime/packages/agenticros/tsconfig.json +9 -0
- package/runtime/packages/agenticros-claude-code/README.md +260 -0
- package/runtime/packages/agenticros-claude-code/config.example.json +9 -0
- package/runtime/packages/agenticros-claude-code/dist/config.d.ts +8 -0
- package/runtime/packages/agenticros-claude-code/dist/config.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/config.js +93 -0
- package/runtime/packages/agenticros-claude-code/dist/config.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/depth.d.ts +20 -0
- package/runtime/packages/agenticros-claude-code/dist/depth.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/depth.js +126 -0
- package/runtime/packages/agenticros-claude-code/dist/depth.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.d.ts +6 -0
- package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.js +36 -0
- package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.d.ts +33 -0
- package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.js +134 -0
- package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.d.ts +43 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.js +73 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.d.ts +58 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.js +251 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.d.ts +61 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.js +268 -0
- package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/index.d.ts +3 -0
- package/runtime/packages/agenticros-claude-code/dist/index.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/index.js +111 -0
- package/runtime/packages/agenticros-claude-code/dist/index.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/memory.d.ts +17 -0
- package/runtime/packages/agenticros-claude-code/dist/memory.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/memory.js +44 -0
- package/runtime/packages/agenticros-claude-code/dist/memory.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/safety.d.ts +10 -0
- package/runtime/packages/agenticros-claude-code/dist/safety.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/safety.js +34 -0
- package/runtime/packages/agenticros-claude-code/dist/safety.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/tools.d.ts +36 -0
- package/runtime/packages/agenticros-claude-code/dist/tools.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/tools.js +777 -0
- package/runtime/packages/agenticros-claude-code/dist/tools.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/transport.d.ts +17 -0
- package/runtime/packages/agenticros-claude-code/dist/transport.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/transport.js +46 -0
- package/runtime/packages/agenticros-claude-code/dist/transport.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.d.ts +42 -0
- package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.d.ts.map +1 -0
- package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.js +114 -0
- package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.js.map +1 -0
- package/runtime/packages/agenticros-claude-code/package.json +29 -0
- package/runtime/packages/agenticros-claude-code/src/config.ts +96 -0
- package/runtime/packages/agenticros-claude-code/src/depth.ts +173 -0
- package/runtime/packages/agenticros-claude-code/src/find-object/coco-classes.ts +38 -0
- package/runtime/packages/agenticros-claude-code/src/find-object/find-object.ts +190 -0
- package/runtime/packages/agenticros-claude-code/src/follow-me/controller.ts +109 -0
- package/runtime/packages/agenticros-claude-code/src/follow-me/depth-loop.ts +420 -0
- package/runtime/packages/agenticros-claude-code/src/follow-me/detector.ts +303 -0
- package/runtime/packages/agenticros-claude-code/src/follow-me/loop.ts +330 -0
- package/runtime/packages/agenticros-claude-code/src/index.ts +125 -0
- package/runtime/packages/agenticros-claude-code/src/memory.ts +51 -0
- package/runtime/packages/agenticros-claude-code/src/safety.ts +44 -0
- package/runtime/packages/agenticros-claude-code/src/tools.ts +891 -0
- package/runtime/packages/agenticros-claude-code/src/transport.ts +58 -0
- package/runtime/packages/agenticros-claude-code/src/zero-shot/detector.ts +169 -0
- package/runtime/packages/agenticros-claude-code/tsconfig.json +9 -0
- package/runtime/packages/agenticros-claude-code/yolo-debug.mjs +106 -0
- package/runtime/packages/agenticros-gemini/README.md +139 -0
- package/runtime/packages/agenticros-gemini/package.json +28 -0
- package/runtime/packages/agenticros-gemini/scripts/smoke-api.mjs +42 -0
- package/runtime/packages/agenticros-gemini/src/chat.ts +139 -0
- package/runtime/packages/agenticros-gemini/src/config.ts +92 -0
- package/runtime/packages/agenticros-gemini/src/depth.ts +173 -0
- package/runtime/packages/agenticros-gemini/src/index.ts +58 -0
- package/runtime/packages/agenticros-gemini/src/memory.ts +32 -0
- package/runtime/packages/agenticros-gemini/src/safety.ts +44 -0
- package/runtime/packages/agenticros-gemini/src/tools.ts +516 -0
- package/runtime/packages/agenticros-gemini/src/transport.ts +58 -0
- package/runtime/packages/agenticros-gemini/tsconfig.json +8 -0
- package/runtime/packages/core/package.json +47 -0
- package/runtime/packages/core/src/banner.ts +32 -0
- package/runtime/packages/core/src/cmd-vel-twist.ts +31 -0
- package/runtime/packages/core/src/config.ts +279 -0
- package/runtime/packages/core/src/index.ts +54 -0
- package/runtime/packages/core/src/memory/__tests__/factory.test.ts +70 -0
- package/runtime/packages/core/src/memory/__tests__/local-provider.test.ts +195 -0
- package/runtime/packages/core/src/memory/__tests__/mem0-provider.test.ts +192 -0
- package/runtime/packages/core/src/memory/__tests__/smart-defaults.test.ts +46 -0
- package/runtime/packages/core/src/memory/factory.ts +63 -0
- package/runtime/packages/core/src/memory/index.ts +10 -0
- package/runtime/packages/core/src/memory/local/provider.ts +229 -0
- package/runtime/packages/core/src/memory/mem0/provider.ts +379 -0
- package/runtime/packages/core/src/memory/types.ts +96 -0
- package/runtime/packages/core/src/topic-utils.ts +95 -0
- package/runtime/packages/core/src/transport/factory.ts +47 -0
- package/runtime/packages/core/src/transport/local/conversion.ts +333 -0
- package/runtime/packages/core/src/transport/local/entities.ts +129 -0
- package/runtime/packages/core/src/transport/local/transport.ts +406 -0
- package/runtime/packages/core/src/transport/rosbridge/actions.ts +81 -0
- package/runtime/packages/core/src/transport/rosbridge/adapter.ts +157 -0
- package/runtime/packages/core/src/transport/rosbridge/client.ts +438 -0
- package/runtime/packages/core/src/transport/rosbridge/services.ts +41 -0
- package/runtime/packages/core/src/transport/rosbridge/topics.ts +60 -0
- package/runtime/packages/core/src/transport/rosbridge/types.ts +118 -0
- package/runtime/packages/core/src/transport/transport.ts +77 -0
- package/runtime/packages/core/src/transport/types.ts +137 -0
- package/runtime/packages/core/src/transport/webrtc/signaling-client.ts +196 -0
- package/runtime/packages/core/src/transport/webrtc/signaling-types.ts +130 -0
- package/runtime/packages/core/src/transport/webrtc/transport.ts +516 -0
- package/runtime/packages/core/src/transport/zenoh/adapter.ts +357 -0
- package/runtime/packages/core/src/transport/zenoh/cdr.ts +183 -0
- package/runtime/packages/core/src/transport/zenoh/keys.ts +51 -0
- package/runtime/packages/core/tsconfig.json +9 -0
- package/runtime/packages/ros-camera/package.json +30 -0
- package/runtime/packages/ros-camera/src/index.ts +13 -0
- package/runtime/packages/ros-camera/src/snapshot.ts +372 -0
- package/runtime/packages/ros-camera/tsconfig.json +9 -0
- package/runtime/pnpm-lock.yaml +5260 -0
- package/runtime/pnpm-workspace.yaml +2 -0
- package/runtime/ros2_ws/src/agenticros_agent/agenticros_agent/__init__.py +0 -0
- package/runtime/ros2_ws/src/agenticros_agent/agenticros_agent/agent_node.py +561 -0
- package/runtime/ros2_ws/src/agenticros_agent/package.xml +25 -0
- package/runtime/ros2_ws/src/agenticros_agent/resource/agenticros_agent +0 -0
- package/runtime/ros2_ws/src/agenticros_agent/setup.cfg +4 -0
- package/runtime/ros2_ws/src/agenticros_agent/setup.py +25 -0
- package/runtime/ros2_ws/src/agenticros_bringup/README.md +128 -0
- package/runtime/ros2_ws/src/agenticros_bringup/agenticros_bringup/__init__.py +1 -0
- package/runtime/ros2_ws/src/agenticros_bringup/agenticros_bringup/cmd_vel_relay.py +33 -0
- package/runtime/ros2_ws/src/agenticros_bringup/launch/cmd_vel_bridge.launch.py +58 -0
- package/runtime/ros2_ws/src/agenticros_bringup/launch/gazebo_turtlebot3.launch.py +69 -0
- package/runtime/ros2_ws/src/agenticros_bringup/launch/mode_a_gazebo.launch.py +55 -0
- package/runtime/ros2_ws/src/agenticros_bringup/launch/mode_a_gazebo_rviz.launch.py +48 -0
- package/runtime/ros2_ws/src/agenticros_bringup/launch/realsense_rosbridge.launch.py +154 -0
- package/runtime/ros2_ws/src/agenticros_bringup/launch/rosbridge_gazebo.launch.py +54 -0
- package/runtime/ros2_ws/src/agenticros_bringup/launch/rviz.launch.py +38 -0
- package/runtime/ros2_ws/src/agenticros_bringup/launch/turtlebot3_gazebo_rviz.launch.py +42 -0
- package/runtime/ros2_ws/src/agenticros_bringup/package.xml +24 -0
- package/runtime/ros2_ws/src/agenticros_bringup/resource/agenticros_bringup +0 -0
- package/runtime/ros2_ws/src/agenticros_bringup/rviz/turtlebot3_agenticros.rviz +174 -0
- package/runtime/ros2_ws/src/agenticros_bringup/setup.cfg +4 -0
- package/runtime/ros2_ws/src/agenticros_bringup/setup.py +28 -0
- package/runtime/ros2_ws/src/agenticros_discovery/agenticros_discovery/__init__.py +0 -0
- package/runtime/ros2_ws/src/agenticros_discovery/agenticros_discovery/discovery_node.py +172 -0
- package/runtime/ros2_ws/src/agenticros_discovery/package.xml +22 -0
- package/runtime/ros2_ws/src/agenticros_discovery/resource/agenticros_discovery +0 -0
- package/runtime/ros2_ws/src/agenticros_discovery/setup.cfg +5 -0
- package/runtime/ros2_ws/src/agenticros_discovery/setup.py +25 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/README.md +66 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/__init__.py +1 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/__main__.py +5 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/follow_me_node.py +278 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/follower_controller.py +631 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/person_tracker.py +635 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/package.xml +22 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/resource/agenticros_follow_me +0 -0
- package/runtime/ros2_ws/src/agenticros_follow_me/setup.py +25 -0
- package/runtime/ros2_ws/src/agenticros_msgs/CMakeLists.txt +26 -0
- package/runtime/ros2_ws/src/agenticros_msgs/msg/CapabilityManifest.msg +9 -0
- package/runtime/ros2_ws/src/agenticros_msgs/package.xml +22 -0
- package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeGetStatus.srv +11 -0
- package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeSetDistance.srv +4 -0
- package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeSetTarget.srv +6 -0
- package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeStart.srv +5 -0
- package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeStop.srv +3 -0
- package/runtime/ros2_ws/src/agenticros_msgs/srv/GetCapabilities.srv +5 -0
- package/runtime/ros2_ws/src/agenticros_sim/CMakeLists.txt +24 -0
- package/runtime/ros2_ws/src/agenticros_sim/README.md +120 -0
- package/runtime/ros2_ws/src/agenticros_sim/config/agenticros-sim.config.json +28 -0
- package/runtime/ros2_ws/src/agenticros_sim/config/amr_bridge.yaml +111 -0
- package/runtime/ros2_ws/src/agenticros_sim/config/amr_view.rviz +172 -0
- package/runtime/ros2_ws/src/agenticros_sim/env-hooks/gz_resource_path.dsv.in +3 -0
- package/runtime/ros2_ws/src/agenticros_sim/env-hooks/gz_resource_path.sh.in +7 -0
- package/runtime/ros2_ws/src/agenticros_sim/launch/sim_amr.launch.py +159 -0
- package/runtime/ros2_ws/src/agenticros_sim/models/agenticros_amr/model.config +17 -0
- package/runtime/ros2_ws/src/agenticros_sim/models/agenticros_amr/model.sdf +244 -0
- package/runtime/ros2_ws/src/agenticros_sim/package.xml +27 -0
- package/runtime/ros2_ws/src/agenticros_sim/worlds/agenticros_indoor.sdf +183 -0
- package/runtime/scripts/activate_workspace.sh +285 -0
- package/runtime/scripts/agenticros-describer.policy.yaml +96 -0
- package/runtime/scripts/agenticros-proxy.cjs +99 -0
- package/runtime/scripts/agenticros-rosbridge.policy.yaml +62 -0
- package/runtime/scripts/check-cli-tarball-size.mjs +42 -0
- package/runtime/scripts/configure_agenticros.sh +200 -0
- package/runtime/scripts/configure_for_sim.sh +64 -0
- package/runtime/scripts/fix-openclaw-control-ui-path.sh +20 -0
- package/runtime/scripts/install_cli.sh +94 -0
- package/runtime/scripts/install_rosbridge_from_source.sh +67 -0
- package/runtime/scripts/lib/agenticros-banner.sh +28 -0
- package/runtime/scripts/onboard_robot.sh +75 -0
- package/runtime/scripts/openai.policy.yaml +77 -0
- package/runtime/scripts/openclaw-dashboard-url.cjs +49 -0
- package/runtime/scripts/pack-runtime.mjs +245 -0
- package/runtime/scripts/run_demo_native.sh +43 -0
- package/runtime/scripts/run_nemoclaw_host_stack.sh +91 -0
- package/runtime/scripts/run_robot_rosbridge.sh +36 -0
- package/runtime/scripts/sandbox_rosbridge_relay.py +137 -0
- package/runtime/scripts/setup-openclaw-local.cjs +75 -0
- package/runtime/scripts/setup_gateway_plugin.sh +329 -0
- package/runtime/scripts/setup_robot.sh +113 -0
- package/runtime/scripts/setup_workspace.sh +484 -0
- package/runtime/scripts/sim/run_sim.sh +146 -0
- package/runtime/scripts/smoke_test_nemoclaw.sh +123 -0
- package/runtime/scripts/start_demo.sh +55 -0
- package/runtime/scripts/sync-skill-tools.mjs +335 -0
- package/runtime/scripts/test-follow-me-sim.mjs +135 -0
- package/runtime/scripts/test-mcp-e2e.mjs +184 -0
- package/runtime/scripts/test-rclnodejs.mts +129 -0
- package/runtime/scripts/use-openclaw-2026.2.26.sh +19 -0
- package/runtime/scripts/use-openclaw-2026.3.11.sh +19 -0
- package/runtime/scripts/zenoh-bridge-ros2dds-robot.json5 +30 -0
- package/runtime/scripts/zenohd-agenticros.json5 +11 -0
- package/runtime/scripts/zenohd-rosclaw.json5 +11 -0
- package/runtime/tsconfig.base.json +19 -0
- package/index.js +0 -6
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
# AgenticROS System Architecture
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
AgenticROS supports four deployment modes depending on where OpenClaw runs
|
|
6
|
+
relative to the robot. The AI Gateway layer and ROS2 layer remain the same
|
|
7
|
+
across all modes β only the transport between them changes.
|
|
8
|
+
|
|
9
|
+
The diagram above shows how every agent platform (OpenClaw Gateway, Codex /
|
|
10
|
+
Claude Code, Gemini CLI, and direct users/operators) funnels through adapter
|
|
11
|
+
packages into the shared `@agenticros/core` runtime, then out across the
|
|
12
|
+
configured transport (Zenoh, rosbridge, local DDS, or WebRTC) to the ROS 2
|
|
13
|
+
workspace and robot hardware. The text diagrams below break out each
|
|
14
|
+
deployment mode in more detail.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## AI Gateway Layer (common to all modes)
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
22
|
+
β MESSAGING LAYER β
|
|
23
|
+
β β
|
|
24
|
+
β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β
|
|
25
|
+
β β WhatsApp β β Telegram β β Discord β β Slack β β Web Chat β β
|
|
26
|
+
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
|
|
27
|
+
β ββββββββββββββββ΄βββββββ¬ββββββ΄βββββββββββββββ΄ββββββββββββββ β
|
|
28
|
+
βββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
29
|
+
βΌ
|
|
30
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
31
|
+
β AI GATEWAY LAYER β
|
|
32
|
+
β β
|
|
33
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
34
|
+
β β OPENCLAW GATEWAY β β
|
|
35
|
+
β β ββββββββββββββββ βββββββββββββββββββ ββββββββββββββββββββββββββββ β β
|
|
36
|
+
β β β Sessions β β AI Agent β β Memory / State β β β
|
|
37
|
+
β β β (per-user) β β (intent β β β (cross-conversation) β β β
|
|
38
|
+
β β β β β tool calls) β β β β β
|
|
39
|
+
β β ββββββββββββββββ βββββββββ¬ββββββββββ ββββββββββββββββββββββββββββ β β
|
|
40
|
+
β βββββββββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
41
|
+
β βΌ β
|
|
42
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
43
|
+
β β AGENTICROS PLUGIN β β
|
|
44
|
+
β β β β
|
|
45
|
+
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
|
|
46
|
+
β β β TOOL REGISTRY β β β
|
|
47
|
+
β β β β β β
|
|
48
|
+
β β β ros2_publish ros2_subscribe_once ros2_service_call β β β
|
|
49
|
+
β β β ros2_action_goal ros2_param_get/set ros2_list_topics β β β
|
|
50
|
+
β β β ros2_camera_snapshot follow_robot (Follow Me mission) β β β
|
|
51
|
+
β β ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ β β
|
|
52
|
+
β β β β β
|
|
53
|
+
β β ββββββββββββββββ βββββββββββββΌβββββββββββ βββββββββββββββββββββββ β β
|
|
54
|
+
β β β SKILLS β β SAFETY VALIDATOR β β ROBOT CONTEXT β β β
|
|
55
|
+
β β β β β β β β β β
|
|
56
|
+
β β β navigate-to β β before_tool_call β β before_agent_start β β β
|
|
57
|
+
β β β take-photo β β Β· velocity limits β β Β· capabilities β β β
|
|
58
|
+
β β β check-status β β Β· workspace bounds β β Β· topics/services β β β
|
|
59
|
+
β β β pick-object β β Β· blocked ops β β Β· safety config β β β
|
|
60
|
+
β β β follow-me β β β β β β β
|
|
61
|
+
β β ββββββββββββββββ ββββββββββββ¬ββββββββββββ βββββββββββββββββββββββ β β
|
|
62
|
+
β β β β β
|
|
63
|
+
β β ββββββββββββββββββββββββββββββ€ ββββββββββββββββββββββββββββββββββββ β β
|
|
64
|
+
β β β /estop COMMAND β β TRANSPORT ADAPTER β β β
|
|
65
|
+
β β β (bypasses AI entirely) β β (mode-dependent, see below) β β β
|
|
66
|
+
β β ββββββββββββββββββββββββββββββ ββββββββββββββββ¬ββββββββββββββββββββ β β
|
|
67
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββ β
|
|
68
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββ
|
|
69
|
+
β
|
|
70
|
+
βΌ
|
|
71
|
+
βββββββββββββββββββββββββ
|
|
72
|
+
β Mode A, B, C, or D β
|
|
73
|
+
β (see below) β
|
|
74
|
+
βββββββββββββββββββββββββ
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## ROS2 Layer (common to all modes)
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
81
|
+
β ROS2 LAYER β
|
|
82
|
+
β β
|
|
83
|
+
β ROS2 DDS Bus β
|
|
84
|
+
β ββββββββββββ¬βββββββββββ¬βββββββββββ¬βββββββββββ β
|
|
85
|
+
β βΌ βΌ βΌ βΌ βΌ β
|
|
86
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
87
|
+
β β /cmd_vel ββ /odom ββ/camera ββ/battery ββ/diagnostics β ... β
|
|
88
|
+
β β (Twist) ββ(Odom) ββ(Image) ββ(State) ββ(DiagArray) β β
|
|
89
|
+
β βββββββ¬ββββββββββββ¬ββββββββββ¬βββββββββββ¬βββββββββββββ¬ββββββββ β
|
|
90
|
+
β β β β β β β
|
|
91
|
+
β βββββββΌββββββββββββΌββββββββββΌβββββββββββΌβββββββββββββΌβββββββββββββββββββββ β
|
|
92
|
+
β β ROBOT HARDWARE β β
|
|
93
|
+
β β β β
|
|
94
|
+
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
|
|
95
|
+
β β β Motors β β Camera β β LIDAR β β IMU β ... β β
|
|
96
|
+
β β ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ β β
|
|
97
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
98
|
+
β β
|
|
99
|
+
β βββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββ β
|
|
100
|
+
β β agenticros_discovery β β Nav2 / MoveIt2 / Other Stacks β β
|
|
101
|
+
β β (capability introspection) β β (navigation, manipulation) β β
|
|
102
|
+
β βββββββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββββββββ β
|
|
103
|
+
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Deployment Mode A: Same Machine
|
|
109
|
+
|
|
110
|
+
OpenClaw runs directly on the robot's computer. The plugin talks to ROS2
|
|
111
|
+
natively through the local DDS bus β no network transport needed. The user
|
|
112
|
+
only interacts through messaging apps over the internet.
|
|
113
|
+
|
|
114
|
+
Best for: single-robot setups, embedded deployments, edge devices with
|
|
115
|
+
internet access.
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
User (Telegram, WhatsApp, etc.)
|
|
119
|
+
β
|
|
120
|
+
β internet
|
|
121
|
+
βΌ
|
|
122
|
+
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
|
|
123
|
+
β ROBOT MACHINE β
|
|
124
|
+
β β
|
|
125
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
126
|
+
β β OPENCLAW + AGENTICROS PLUGIN β β
|
|
127
|
+
β β β β
|
|
128
|
+
β β AI Agent β Safety Validator β Tool Execution β β
|
|
129
|
+
β ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
130
|
+
β β β
|
|
131
|
+
β β direct (local DDS / rclnodejs) β
|
|
132
|
+
β βΌ β
|
|
133
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
134
|
+
β β ROS2 DDS Bus β β
|
|
135
|
+
β β /cmd_vel /odom /camera /battery /diagnostics ... β β
|
|
136
|
+
β ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
137
|
+
β βΌ β
|
|
138
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
139
|
+
β β ROBOT HARDWARE (motors, camera, LIDAR, IMU) β β
|
|
140
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
141
|
+
β β
|
|
142
|
+
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
|
|
143
|
+
|
|
144
|
+
Transport: none (same process / local IPC)
|
|
145
|
+
Latency: ~ms
|
|
146
|
+
NAT issue: none β only outbound internet needed for messaging APIs
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Deployment Mode B: Local Network
|
|
152
|
+
|
|
153
|
+
OpenClaw runs on a separate machine on the same network as the robot
|
|
154
|
+
(e.g. a laptop, local server, or dev workstation). The plugin connects to
|
|
155
|
+
rosbridge_server on the robot via WebSocket over LAN.
|
|
156
|
+
|
|
157
|
+
Best for: development, testing, multi-robot labs, on-premises deployments
|
|
158
|
+
where everything is on the same network.
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
User (Telegram, WhatsApp, etc.)
|
|
162
|
+
β
|
|
163
|
+
β internet
|
|
164
|
+
βΌ
|
|
165
|
+
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
|
|
166
|
+
β LOCAL SERVER / DEV MACHINE β β ROBOT β
|
|
167
|
+
β β β β
|
|
168
|
+
β ββββββββββββββββββββββββββββ β β βββββββββββββββββββββββββββββ β
|
|
169
|
+
β β OPENCLAW + AGENTICROS β β β β rosbridge_server β β
|
|
170
|
+
β β PLUGIN ββββΌββββββΌββΊβ (WebSocket β ROS2 DDS) β β
|
|
171
|
+
β β β β LAN β βββββββββββββββ¬ββββββββββββββ β
|
|
172
|
+
β β rosbridge-client lib β β WS β β β
|
|
173
|
+
β ββββββββββββββββββββββββββββ β β βΌ β
|
|
174
|
+
β β β βββββββββββββββββββββββββββββ β
|
|
175
|
+
β β β β β β β β β β β β β β β β β β ROS2 DDS Bus β β
|
|
176
|
+
β β /cmd_vel /odom ... β β
|
|
177
|
+
β βββββββββββββββ¬ββββββββββββββ β
|
|
178
|
+
β βΌ β
|
|
179
|
+
β βββββββββββββββββββββββββββββ β
|
|
180
|
+
β β ROBOT HARDWARE β β
|
|
181
|
+
β βββββββββββββββββββββββββββββ β
|
|
182
|
+
β β
|
|
183
|
+
β β β β β β β β β β β β β β β β
|
|
184
|
+
|
|
185
|
+
Transport: WebSocket (ws://robot-ip:9090) via rosbridge protocol
|
|
186
|
+
Latency: ~ms (LAN)
|
|
187
|
+
NAT issue: none β both machines are on the same network
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Deployment Mode C: Cloud / Remote
|
|
193
|
+
|
|
194
|
+
OpenClaw runs on a cloud server or VPS. The robot is on a remote network
|
|
195
|
+
(factory, warehouse, field) behind NAT/firewall. Neither side can directly
|
|
196
|
+
reach the other. A WebRTC connection with STUN/TURN handles NAT traversal
|
|
197
|
+
so both sides can establish peer-to-peer communication.
|
|
198
|
+
|
|
199
|
+
Best for: production deployments, remote operations, fleet management,
|
|
200
|
+
when operators and robots are in different locations.
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
User (Telegram, WhatsApp, etc.)
|
|
204
|
+
β
|
|
205
|
+
β internet
|
|
206
|
+
βΌ
|
|
207
|
+
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
|
|
208
|
+
β CLOUD / VPS β β ROBOT (behind NAT/firewall) β
|
|
209
|
+
β β β β
|
|
210
|
+
β ββββββββββββββββββββββββββββ β β ββββββββββββββββββββββββββββ β
|
|
211
|
+
β β OPENCLAW + AGENTICROS β β β β AgenticROS Agent Node β β
|
|
212
|
+
β β PLUGIN β β β β (ROS2 node) β β
|
|
213
|
+
β β β β β β β β
|
|
214
|
+
β β WebRTC data channel ββββΌββ P2P or TURN βββΌββΊβ WebRTC data channel β β
|
|
215
|
+
β ββββββββββββββββββββββββββββ β (encrypted) β ββββββββββββββ¬ββββββββββββββ β
|
|
216
|
+
β β β β β
|
|
217
|
+
β β β β β β β β β β β β β β β β β β local DDS β
|
|
218
|
+
βββββββββββ β βΌ β
|
|
219
|
+
β STUN / β β ββββββββββββββββββββββββββββ β
|
|
220
|
+
β TURN β β β ROS2 DDS Bus β β
|
|
221
|
+
β Server β β β /cmd_vel /odom ... β β
|
|
222
|
+
βββββββββββ β ββββββββββββββ¬ββββββββββββββ β
|
|
223
|
+
β βΌ β
|
|
224
|
+
β ββββββββββββββββββββββββββββ β
|
|
225
|
+
β β ROBOT HARDWARE β β
|
|
226
|
+
β ββββββββββββββββββββββββββββ β
|
|
227
|
+
β β
|
|
228
|
+
β β β β β β β β β β β β β β β β
|
|
229
|
+
|
|
230
|
+
Transport: WebRTC data channel (STUN for NAT traversal, TURN as relay fallback)
|
|
231
|
+
Latency: ~10-100ms (internet, varies)
|
|
232
|
+
NAT issue: solved β both sides connect outbound to STUN/TURN, then P2P
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
In Mode C, the robot runs a **AgenticROS Agent Node** (`agenticros_agent`) β a
|
|
236
|
+
lightweight ROS2 node that connects outbound to the signaling/TURN server
|
|
237
|
+
and establishes a WebRTC data channel with the cloud-side plugin. Commands
|
|
238
|
+
and feedback flow over this encrypted peer-to-peer channel. Neither side
|
|
239
|
+
needs a public IP or open inbound ports.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Deployment Mode D: Zenoh
|
|
244
|
+
|
|
245
|
+
When the robot uses **ROS 2 with Zenoh RMW** (`RMW_IMPLEMENTATION=rmw_zenoh_cpp`),
|
|
246
|
+
the plugin can connect directly to a Zenoh router via **zenoh-ts** (WebSocket to
|
|
247
|
+
`zenoh-plugin-remote-api`). No rosbridge or WebRTC bridge is required.
|
|
248
|
+
|
|
249
|
+
Best for: robots already on Zenoh, low-latency pub/sub, or deployments that
|
|
250
|
+
prefer the Zenoh stack over DDS.
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
User (Telegram, WhatsApp, etc.)
|
|
254
|
+
β
|
|
255
|
+
β internet
|
|
256
|
+
βΌ
|
|
257
|
+
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
|
|
258
|
+
β OPENCLAW MACHINE β β ROBOT (Zenoh RMW) β
|
|
259
|
+
β β β β
|
|
260
|
+
β ββββββββββββββββββββββββββββ β β βββββββββββββββββββββββββββ β
|
|
261
|
+
β β OPENCLAW + AGENTICROS β β β β Zenoh router β β
|
|
262
|
+
β β PLUGIN β β β β (zenohd) β β
|
|
263
|
+
β β β β β βββββββββββββ¬ββββββββββββββ β
|
|
264
|
+
β β zenoh-ts (WebSocket) βββββΌββββββΌββΊ β β
|
|
265
|
+
β ββββββββββββββββββββββββββββ β β β Zenoh β
|
|
266
|
+
β β β βββββββββββββββΌββββββββββββββ β
|
|
267
|
+
β β β β β β β β β β β β β β β β β β ROS2 (rmw_zenoh_cpp) β β
|
|
268
|
+
β β /cmd_vel /odom ... β β
|
|
269
|
+
β βββββββββββββββ¬ββββββββββββββ β
|
|
270
|
+
β βΌ β
|
|
271
|
+
β βββββββββββββββββββββββββββββββ β
|
|
272
|
+
β β ROBOT HARDWARE β β
|
|
273
|
+
β βββββββββββββββββββββββββββββββ β
|
|
274
|
+
β β
|
|
275
|
+
β β β β β β β β β β β β β β β β β
|
|
276
|
+
|
|
277
|
+
Transport: Zenoh (WebSocket to Zenoh router; plugin uses zenoh-ts)
|
|
278
|
+
Latency: ~ms
|
|
279
|
+
NAT issue: depends on network β router must be reachable from OpenClaw
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Set `transport.mode` to `zenoh`, configure `zenoh.routerEndpoint` (e.g.
|
|
283
|
+
`ws://router-host:10000` for zenoh-ts), and optionally `zenoh.domainId` to
|
|
284
|
+
match `ROS_DOMAIN_ID` / rmw_zenoh. The `robot.namespace` config applies to
|
|
285
|
+
topic names (and thus to Zenoh key expressions), e.g. namespace `robot-uuid`
|
|
286
|
+
yields `/robot-uuid/cmd_vel`.
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Transport Adapter Abstraction
|
|
291
|
+
|
|
292
|
+
All plugin tools call `getTransport()` instead of directly using a specific
|
|
293
|
+
client library. The `RosTransport` interface (`@agenticros/transport`) provides
|
|
294
|
+
a unified API for all three deployment modes:
|
|
295
|
+
|
|
296
|
+
```
|
|
297
|
+
Plugin Tools (ros2_publish, ros2_subscribe_once, ...)
|
|
298
|
+
β
|
|
299
|
+
βΌ
|
|
300
|
+
getTransport(): RosTransport
|
|
301
|
+
β
|
|
302
|
+
βββ RosbridgeTransport (Mode B β @agenticros/rosbridge-client)
|
|
303
|
+
β βββ WebSocket β rosbridge_server β ROS2 DDS
|
|
304
|
+
β
|
|
305
|
+
βββ LocalTransport (Mode A β @agenticros/transport-local, stub)
|
|
306
|
+
β βββ rclnodejs β ROS2 DDS directly
|
|
307
|
+
β
|
|
308
|
+
βββ WebRTCTransport (Mode C β @agenticros/transport-webrtc, stub)
|
|
309
|
+
β βββ WebRTC data channel β agenticros_agent β ROS2 DDS
|
|
310
|
+
β
|
|
311
|
+
βββ ZenohTransport (Mode D β zenoh-ts)
|
|
312
|
+
βββ WebSocket β Zenoh router β ROS2 (rmw_zenoh_cpp)
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
The `createTransport(config)` factory in `@agenticros/transport` uses dynamic
|
|
316
|
+
`import()` to load the correct adapter by mode, so unused adapters and their
|
|
317
|
+
dependencies are never loaded.
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## Optional cross-adapter memory
|
|
322
|
+
|
|
323
|
+
When `config.memory.enabled` is true, all four adapters (OpenClaw, Claude Code
|
|
324
|
+
MCP, Claude Desktop MCP, Gemini CLI) register four extra tools β
|
|
325
|
+
`memory_remember`, `memory_recall`, `memory_forget`, `memory_status` β backed
|
|
326
|
+
by a **shared, file-backed store** namespaced by `robot.namespace`. With the
|
|
327
|
+
`mem0` backend, the vector store lives at `~/.mem0/vector_store.db`, so every
|
|
328
|
+
process on the host reads and writes the same data β that is what enables
|
|
329
|
+
true cross-adapter recall (a fact remembered from Claude Desktop is immediately
|
|
330
|
+
recall-able from OpenClaw).
|
|
331
|
+
|
|
332
|
+
The OpenClaw plugin additionally injects a `### Memory` section into each
|
|
333
|
+
chat's system context at `before_agent_start`, containing usage directives
|
|
334
|
+
for the four tools plus a snapshot of up to 10 recently-remembered facts
|
|
335
|
+
(via the `MemoryProvider.recent(namespace, limit)` core method). This lets
|
|
336
|
+
the OpenClaw LLM answer common personal-context questions ("what do I have
|
|
337
|
+
for X?") **without** a tool call, while still using `memory_recall` for
|
|
338
|
+
deeper semantic search.
|
|
339
|
+
|
|
340
|
+
Off by default; see [memory.md](memory.md) for setup, recipes, and
|
|
341
|
+
cross-process verification steps.
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Data Flow Example
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
User (Telegram) AgenticROS Robot
|
|
349
|
+
β β β
|
|
350
|
+
β "Move forward 2 meters" β β
|
|
351
|
+
βββββββββββββββββββββββββββββΊβ β
|
|
352
|
+
β β β
|
|
353
|
+
β AI Agent selects ros2_publish β
|
|
354
|
+
β Safety hook validates (0.5 m/s < 1.0 limit) β
|
|
355
|
+
β β β
|
|
356
|
+
β β publish /cmd_vel β
|
|
357
|
+
β βββββββββββββββββββββββββββββββΊβ
|
|
358
|
+
β β (via Mode A, B, or C) β Motors
|
|
359
|
+
β β β engage
|
|
360
|
+
β β subscribe /odom β
|
|
361
|
+
β ββββββββββββββββββββββββββββββββ
|
|
362
|
+
β β β
|
|
363
|
+
β "Done! Moved 2m forward" β β
|
|
364
|
+
ββββββββββββββββββββββββββββββ β
|
|
365
|
+
β β β
|
|
366
|
+
```
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# `agenticros` CLI reference
|
|
2
|
+
|
|
3
|
+
`agenticros` is the single command-line entry point for the AgenticROS
|
|
4
|
+
project. It orchestrates the existing shell scripts (`scripts/start_demo.sh`,
|
|
5
|
+
`scripts/setup_gateway_plugin.sh`, β¦) and the simulation launchers, and adds
|
|
6
|
+
an interactive menu, a doctor, and a status/logs view on top.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
| Audience | Command |
|
|
11
|
+
|---|---|
|
|
12
|
+
| One-off (no install) | `npx agenticros` |
|
|
13
|
+
| Per-user global | `pnpm add -g agenticros` (or `npm install -g agenticros`) |
|
|
14
|
+
| Contributor (repo) | `./agenticros` from the repo root, or `./scripts/install_cli.sh` |
|
|
15
|
+
|
|
16
|
+
The `npx` and `npm` flows ship a snapshot of the entire AgenticROS monorepo
|
|
17
|
+
inside the published tarball. The first `agenticros init` copies that
|
|
18
|
+
snapshot into `~/agenticros` (configurable via `$AGENTICROS_HOME` or
|
|
19
|
+
`--install-dir`), then runs `pnpm install`, `pnpm build`, and `colcon build`
|
|
20
|
+
there. After init, every subsequent `agenticros` invocation operates against
|
|
21
|
+
`~/agenticros` as the workspace root.
|
|
22
|
+
|
|
23
|
+
Contributors working from a clone get a third "workspace mode": the CLI auto-
|
|
24
|
+
detects the `agenticros-monorepo` package.json walking upward from its install
|
|
25
|
+
location and uses the live sources / dist directly.
|
|
26
|
+
|
|
27
|
+
## Commands
|
|
28
|
+
|
|
29
|
+
### `agenticros` (no args)
|
|
30
|
+
|
|
31
|
+
Opens the interactive top-level menu. The menu adapts to the doctor's output:
|
|
32
|
+
if any red checks are present, "First-time setup" is moved to the top.
|
|
33
|
+
|
|
34
|
+
### `agenticros up [target]`
|
|
35
|
+
|
|
36
|
+
Bring up a robot stack. Targets:
|
|
37
|
+
|
|
38
|
+
| Target | What it does |
|
|
39
|
+
|-----------|-----|
|
|
40
|
+
| `real` | Runs `scripts/start_demo.sh`: RealSense camera, motor controller, MCP server. |
|
|
41
|
+
| `sim-amr` | Launches the simulated 2-wheel AMR (Phase 2 - WIP). |
|
|
42
|
+
| `sim-arm` | Launches the simulated UR5e arm + MoveIt2 (Phase 3 - WIP). |
|
|
43
|
+
|
|
44
|
+
Flags:
|
|
45
|
+
- `--ros-distro humble|jazzy|β¦` override ROS distro detection
|
|
46
|
+
- `--namespace <ns>` override the robot namespace
|
|
47
|
+
- `--rviz` open RViz alongside the sim
|
|
48
|
+
- `--no-camera` skip starting the RealSense camera (real target)
|
|
49
|
+
- `--no-motors` skip starting the motor controller (real target)
|
|
50
|
+
|
|
51
|
+
### `agenticros down [--keep-camera] [--keep-gateway]`
|
|
52
|
+
|
|
53
|
+
SIGTERMs every process recorded in `/tmp/agenticros-*.pid` and stops the
|
|
54
|
+
`openclaw-gateway.service` user unit (unless `--keep-gateway`). Also cleans
|
|
55
|
+
up stray `gz sim`, `rviz2`, and `parameter_bridge` processes.
|
|
56
|
+
|
|
57
|
+
### `agenticros init [--force] [--install-dir <path>]`
|
|
58
|
+
|
|
59
|
+
Idempotent first-time setup wizard. Each step queries doctor first and is
|
|
60
|
+
skipped (with a checkmark) when already done:
|
|
61
|
+
|
|
62
|
+
1. JS workspace deps (`pnpm install`)
|
|
63
|
+
2. JS workspace build (`pnpm build`)
|
|
64
|
+
3. ROS 2 workspace build (`colcon build --symlink-install`)
|
|
65
|
+
4. OpenClaw plugin install (via `scripts/setup_gateway_plugin.sh`)
|
|
66
|
+
5. Robot config (writes `~/.agenticros/config.json`)
|
|
67
|
+
6. OpenAI API key (paste once β `scripts/configure_agenticros.sh`)
|
|
68
|
+
7. Final `agenticros doctor` summary
|
|
69
|
+
|
|
70
|
+
Pass `--force` to re-run every step regardless of state.
|
|
71
|
+
|
|
72
|
+
### `agenticros doctor [--json]`
|
|
73
|
+
|
|
74
|
+
Runs every health check and prints a coloured table. With `--json`, emits the
|
|
75
|
+
same report as a structured object for CI / scripting:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"checks": [{ "id": "ros-distro", "label": "...", "severity": "green" }, β¦],
|
|
80
|
+
"summary": { "green": 10, "yellow": 1, "red": 0 }
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Exits non-zero if any check is red.
|
|
85
|
+
|
|
86
|
+
### `agenticros status [--json]`
|
|
87
|
+
|
|
88
|
+
Shows running components (camera / sim / mcp / rosbridge / openclaw-gateway)
|
|
89
|
+
and the last-used mode/namespace from `~/.agenticros/cli-state.json`.
|
|
90
|
+
|
|
91
|
+
### `agenticros logs [target]`
|
|
92
|
+
|
|
93
|
+
Tails one of: `camera`, `mcp`, `sim`, `rosbridge`, `gateway`. Without a
|
|
94
|
+
target, prints the list of available log targets. Defaults to follow mode
|
|
95
|
+
(`-f`); pass `--no-follow` to disable.
|
|
96
|
+
|
|
97
|
+
### `agenticros config [action] [key=value]`
|
|
98
|
+
|
|
99
|
+
Read or edit `~/.agenticros/config.json`. Actions:
|
|
100
|
+
|
|
101
|
+
| Action | Example | Effect |
|
|
102
|
+
|---|---|---|
|
|
103
|
+
| `show` | `agenticros config show` (or just `agenticros config`) | Pretty-print the file. |
|
|
104
|
+
| `set` | `agenticros config set robot.namespace=sim_robot` | Write a single key (dot-paths supported). |
|
|
105
|
+
| `edit` | `agenticros config edit` | Open in `$EDITOR`. |
|
|
106
|
+
| `reset` | `agenticros config reset` | Delete the file (with confirm). |
|
|
107
|
+
|
|
108
|
+
## Where state lives
|
|
109
|
+
|
|
110
|
+
| Path | Owner | Purpose |
|
|
111
|
+
|---|---|---|
|
|
112
|
+
| `~/.agenticros/config.json` | User | AgenticROS runtime config (transport mode, namespace, safety limits). |
|
|
113
|
+
| `~/.agenticros/cli-state.json` | CLI | Last-used mode/namespace for the menu's "(yesterday)" hint. |
|
|
114
|
+
| `~/agenticros/` | CLI (npm-install mode) | Copy of the monorepo, with built dist + colcon install. |
|
|
115
|
+
| `/tmp/agenticros-*.pid` | CLI | PIDs of background processes the CLI spawned. |
|
|
116
|
+
| `/tmp/agenticros-*.log` | CLI | Stdout/stderr from those processes. |
|
|
117
|
+
| `~/.openclaw/openclaw.json` | OpenClaw gateway | Plugin registration + per-plugin config (incl. AgenticROS). |
|
|
118
|
+
|
|
119
|
+
## Environment variables
|
|
120
|
+
|
|
121
|
+
| Variable | Default | Purpose |
|
|
122
|
+
|---|---|---|
|
|
123
|
+
| `AGENTICROS_HOME` | `~/agenticros` | Install root in npm-install mode. |
|
|
124
|
+
| `AGENTICROS_CONFIG_PATH` | (auto) | Override the path to `~/.agenticros/config.json`. |
|
|
125
|
+
| `AGENTICROS_ROBOT_NAMESPACE` | (from config) | Force a robot namespace at runtime. |
|
|
126
|
+
| `OPENAI_API_KEY` | (none) | If set, doctor reports green without requiring OpenClaw profile config. |
|
|
127
|
+
|
|
128
|
+
## Troubleshooting
|
|
129
|
+
|
|
130
|
+
- **`doctor` shows red checks** β run `agenticros init` to walk through every
|
|
131
|
+
step. Re-run `doctor` afterward.
|
|
132
|
+
- **`up` exits immediately** β `agenticros logs <component>` (the CLI now
|
|
133
|
+
records where every child wrote its output) and read the error in context.
|
|
134
|
+
- **`up sim-amr` warns "scripts/sim/run_sim.sh not found"** β simulation
|
|
135
|
+
support is delivered in CLI Phase 2; until then the message tells you when
|
|
136
|
+
to expect it.
|
|
137
|
+
- **`pnpm --filter agenticros build` builds two packages** β check the OpenClaw
|
|
138
|
+
plugin's `packages/agenticros/package.json`; its npm name should be
|
|
139
|
+
`@agenticros/openclaw`, not `agenticros`. If it's wrong, `pnpm --filter` will
|
|
140
|
+
match both. (Fixed in this repo as of June 2026.)
|