{"id":"0de419f0-c798-482b-8dd7-12e609c2c506","entityType":"agent","slug":"clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge","name":"Agent Ros Bridge","canonicalUrl":"https://www.xpersona.co/agent/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge","canonicalPath":"/agent/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge","generatedAt":"2026-10-10T06:30:31.173Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 624 downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn7865tvdsqd9pjav1n98at3qn80w4ws:agent-ros-bridge","sourceUrl":"https://clawhub.ai/kn7865tvdsqd9pjav1n98at3qn80w4ws/agent-ros-bridge","homepage":"https://clawhub.ai/kn7865tvdsqd9pjav1n98at3qn80w4ws/agent-ros-bridge","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/kn7865tvdsqd9pjav1n98at3qn80w4ws/agent-ros-bridge","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":56,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Agent Ros Bridge technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":624,"packageName":null,"latestVersion":"0.3.4","tractionLabel":"624 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-03-01T03:52:06.091Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-03-01T03:52:06.091Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-02T03:52:06.091Z","lastVerifiedAt":null,"highlights":[{"version":"0.3.4","createdAt":"2026-02-21T02:02:35.034Z","changelog":"- Major cleanup: removed 33 files including all example scripts, documentation (README.md, SECURITY.md, etc.), and dashboards. - Added new configuration files for various components (e.g., debug_config.yaml, fault_config.yaml, hal_config.yaml, openclaw_config.yaml, ros1_config.yaml, ros2_config.yaml, global_config.yaml). - Modified internal package structure and initialization files. - SKILL.md updated: reverted version and metadata to earlier state (from 0.3.3 to 0.3.2), and removed extended documentation.","fileCount":33,"zipByteSize":55610},{"version":"0.3.3","createdAt":"2026-02-15T14:50:59.007Z","changelog":"- Added PRODUCTION_CHECKLIST.md to the repository. - Updated install instructions in SKILL.md to include direct PyPI installation via pip. - Revised install metadata to specify PyPI package for easier installation. - Version bump to 0.3.3.","fileCount":58,"zipByteSize":94319},{"version":"0.3.2","createdAt":"2026-02-15T11:06:38.821Z","changelog":"- Added Docker mock example with `docker/Dockerfile.mock` for improved local testing and demos. - Updated installation instructions and recommendations for Docker usage in documentation. - Improved emphasis on security in documentation; clarified that JWT authentication is always required. - No breaking changes to functionality.","fileCount":null,"zipByteSize":null},{"version":"0.3.1","createdAt":"2026-02-15T10:39:58.533Z","changelog":"- Updated demo commands to focus on Docker-based quickstart, fleet, and arm examples. - Added new example files: `examples/auth/auth_demo.py` and `examples/quickstart/simulated_robot.py`. - Removed legacy mock demo files: `examples/auth/mock_bridge_auth.py` and `examples/quickstart/mock_bridge.py`. - Documentation now emphasizes JWT_SECRET as always required and clarifies that all demos are run in Docker containers with simulated robots.","fileCount":null,"zipByteSize":null},{"version":"0.3.0","createdAt":"2026-02-15T10:14:01.611Z","changelog":"**Security changes and Docker-first examples. JWT authentication is now always enforced and new Docker demo environments added.** - JWT authentication is now mandatory and cannot be disabled for any mode. - Example Docker Compose files added for quickstart, arm robot, and fleet demos (see `examples/`). - Example Dockerfile added for mock testing and development. - Environment variables streamlined; `MOCK_MODE` removed and security section updated. - All documentation and examples now emphasize isolation and security best practices.","fileCount":null,"zipByteSize":null},{"version":"0.2.5","createdAt":"2026-02-15T09:50:42.467Z","changelog":"- JWT_SECRET is now a required environment variable for production; bridge will not start without it unless MOCK_MODE=true. - Clarified environment variable descriptions to emphasize security and correct usage. - Removed \"env\" section's \"required: false\" for JWT_SECRET and set \"required: true\". - No changes to functionality or commands.","fileCount":null,"zipByteSize":null},{"version":"0.2.4","createdAt":"2026-02-15T09:42:26.399Z","changelog":"- Added support for optional MOCK_MODE, allowing authentication to be disabled for local testing. - Made JWT_SECRET environment variable optional when MOCK_MODE is enabled. - Introduced BRIDGE_HOST environment variable for specifying the bridge bind address. - Updated environment variable documentation for improved usability in local and production scenarios.","fileCount":null,"zipByteSize":null},{"version":"0.2.3","createdAt":"2026-02-15T09:31:09.024Z","changelog":"agent-ros-bridge 0.2.3 - Updated environment variable metadata to meet new schema and provide clearer descriptions for JWT_SECRET. - Metadata section restructured for more explicit OpenClaw compatibility. - No functional or command changes; update is documentation/metadata only.","fileCount":null,"zipByteSize":null}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn7865tvdsqd9pjav1n98at3qn80w4ws:agent-ros-bridge","setupComplexity":"low","setupSteps":["Install using `clawhub skill install kn7865tvdsqd9pjav1n98at3qn80w4ws:agent-ros-bridge` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/kn7865tvdsqd9pjav1n98at3qn80w4ws/agent-ros-bridge before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T06:30:31.172Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-kn7865tvdsqd9pjav1n98at3qn80w4ws-agent-ros-bridge/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: Agent Ros Bridge\n\nOwner: kn7865tvdsqd9pjav1n98at3qn80w4ws\n\nSummary: Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.\n\nTags: automation:0.3.3, bridge:0.3.3, embodied-intelligence:0.3.3, iot:0.3.3, latest:0.3.4, robotics:0.3.3, ros:0.3.3, ros2:0.3.3\n\nVersion history:\n\nv0.3.4 | 2026-02-21T02:02:35.034Z | auto\n\n- Major cleanup: removed 33 files including all example scripts, documentation (README.md, SECURITY.md, etc.), and dashboards.\n- Added new configuration files for various components (e.g., debug_config.yaml, fault_config.yaml, hal_config.yaml, openclaw_config.yaml, ros1_config.yaml, ros2_config.yaml, global_config.yaml).\n- Modified internal package structure and initialization files.\n- SKILL.md updated: reverted version and metadata to earlier state (from 0.3.3 to 0.3.2), and removed extended documentation.\n\nv0.3.3 | 2026-02-15T14:50:59.007Z | user\n\n- Added PRODUCTION_CHECKLIST.md to the repository.\n- Updated install instructions in SKILL.md to include direct PyPI installation via pip.\n- Revised install metadata to specify PyPI package for easier installation.\n- Version bump to 0.3.3.\n\nv0.3.2 | 2026-02-15T11:06:38.821Z | user\n\n- Added Docker mock example with `docker/Dockerfile.mock` for improved local testing and demos.\n- Updated installation instructions and recommendations for Docker usage in documentation.\n- Improved emphasis on security in documentation; clarified that JWT authentication is always required.\n- No breaking changes to functionality.\n\nv0.3.1 | 2026-02-15T10:39:58.533Z | user\n\n- Updated demo commands to focus on Docker-based quickstart, fleet, and arm examples.\n- Added new example files: `examples/auth/auth_demo.py` and `examples/quickstart/simulated_robot.py`.\n- Removed legacy mock demo files: `examples/auth/mock_bridge_auth.py` and `examples/quickstart/mock_bridge.py`.\n- Documentation now emphasizes JWT_SECRET as always required and clarifies that all demos are run in Docker containers with simulated robots.\n\nv0.3.0 | 2026-02-15T10:14:01.611Z | user\n\n**Security changes and Docker-first examples. JWT authentication is now always enforced and new Docker demo environments added.**\n\n- JWT authentication is now mandatory and cannot be disabled for any mode.\n- Example Docker Compose files added for quickstart, arm robot, and fleet demos (see `examples/`).\n- Example Dockerfile added for mock testing and development.\n- Environment variables streamlined; `MOCK_MODE` removed and security section updated.\n- All documentation and examples now emphasize isolation and security best practices.\n\nv0.2.5 | 2026-02-15T09:50:42.467Z | user\n\n- JWT_SECRET is now a required environment variable for production; bridge will not start without it unless MOCK_MODE=true.\n- Clarified environment variable descriptions to emphasize security and correct usage.\n- Removed \"env\" section's \"required: false\" for JWT_SECRET and set \"required: true\".\n- No changes to functionality or commands.\n\nv0.2.4 | 2026-02-15T09:42:26.399Z | user\n\n- Added support for optional MOCK_MODE, allowing authentication to be disabled for local testing.\n- Made JWT_SECRET environment variable optional when MOCK_MODE is enabled.\n- Introduced BRIDGE_HOST environment variable for specifying the bridge bind address.\n- Updated environment variable documentation for improved usability in local and production scenarios.\n\nv0.2.3 | 2026-02-15T09:31:09.024Z | user\n\nagent-ros-bridge 0.2.3\n\n- Updated environment variable metadata to meet new schema and provide clearer descriptions for JWT_SECRET.\n- Metadata section restructured for more explicit OpenClaw compatibility.\n- No functional or command changes; update is documentation/metadata only.\n\nv0.2.2 | 2026-02-15T08:49:13.530Z | user\n\n- Major cleanup: removed 22 configuration and script files related to setup, deployment, and demos.\n- The skill now has a leaner codebase, focusing on core bridge functionality.\n- Removed support for multiple hardware-specific configs and convenience scripts to streamline the repository.\n- No changes to the core API, commands, or documentation.\n\nv0.2.1 | 2026-02-15T08:08:06.359Z | user\n\n- Added security metadata and environment variable requirements, including JWT_SECRET, strengthening authentication setup and documenting security notes.\n- Introduced SECURITY.md and multiple example/demo files for actions, auth, metrics, and MQTT IoT integrations.\n- Added deployment and utility scripts for various platforms (Jetson, Raspberry Pi, WSL2) and Docker support.\n- Enhanced documentation with usage examples across demos and improved guidance for safe deployment.\n\nv0.2.0 | 2026-02-15T07:37:31.551Z | user\n\n## [0.2.0] - 2025-02-14\n\n### Added\n- Complete documentation suite (40,000+ words)\n- 7 self-contained examples with run.sh scripts\n- OpenClaw integration tests\n- ROS setup validation script\n- Production-grade repository structure\n\n### Changed\n- Reorganized demo/ → examples/ for clarity\n- Version normalization across all files\n- SKILL.md optimized for ClawHub\n\n### Removed\n- Legacy demo/greenhouse/ and demo/arm_manipulation/\n\nArchive index:\n\nArchive v0.3.4: 33 files, 55610 bytes\n\nFiles: __init__.py (98b), agent_ros_bridge/__init__.py (1990b), agent_ros_bridge/_version.py (704b), agent_ros_bridge/actions/__init__.py (16125b), agent_ros_bridge/fleet/__init__.py (421b), agent_ros_bridge/fleet/orchestrator.py (18060b), agent_ros_bridge/gateway_v2/__init__.py (996b), agent_ros_bridge/gateway_v2/__main__.py (6796b), agent_ros_bridge/gateway_v2/auth.py (6534b), agent_ros_bridge/gateway_v2/config.py (11533b), agent_ros_bridge/gateway_v2/connectors/__init__.py (36b), agent_ros_bridge/gateway_v2/connectors/ros1_connector.py (10605b), agent_ros_bridge/gateway_v2/connectors/ros2_connector.py (10460b), agent_ros_bridge/gateway_v2/core.py (18950b), agent_ros_bridge/gateway_v2/plugins/__init__.py (33b), agent_ros_bridge/gateway_v2/plugins/greenhouse_plugin.py (8820b), agent_ros_bridge/gateway_v2/transports/__init__.py (36b), agent_ros_bridge/gateway_v2/transports/grpc_transport.py (8137b), agent_ros_bridge/gateway_v2/transports/mqtt_transport.py (11011b), agent_ros_bridge/gateway_v2/transports/websocket.py (14032b), agent_ros_bridge/metrics/__init__.py (11768b), agent_ros_bridge/plugins/arm_robot.py (14934b), config/bridge-auth.yaml (542b), config/bridge.yaml (2067b), config/debug_config.yaml (280b), config/fault_config.yaml (295b), config/global_config.yaml (462b), config/hal_config.yaml (292b), config/openclaw_config.yaml (418b), config/ros1_config.yaml (243b), config/ros2_config.yaml (365b), SKILL.md (5960b), _meta.json (135b)\n\nFile v0.3.4:SKILL.md\n\n---\nname: agent-ros-bridge\nversion: 0.3.2\ndescription: Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.\nauthor: Agent ROS Bridge Team\nhomepage: https://github.com/webthree549-bot/agent-ros-bridge\nrepository: https://github.com/webthree549-bot/agent-ros-bridge.git\nlicense: MIT\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🤖\",\n        \"requires\": { \"bins\": [\"python3\"], \"env\": [\"JWT_SECRET\"] },\n        \"suggests\": { \"bins\": [\"docker\"] },\n        \"env\":\n          {\n            \"JWT_SECRET\":\n              {\n                \"description\": \"Required: Secret key for JWT authentication. Bridge will fail to start without this.\",\n                \"sensitive\": true,\n                \"required\": true,\n              },\n            \"BRIDGE_HOST\":\n              {\n                \"description\": \"Optional: Bind address (default: 127.0.0.1 for security)\",\n                \"sensitive\": false,\n                \"required\": false,\n              },\n          },\n        \"security\":\n          {\n            \"notes\": \"SECURITY-FIRST DESIGN: JWT authentication is always required and cannot be disabled. All examples run in Docker containers for isolation. Never expose to public networks without TLS and firewall rules.\",\n          },\n        \"install\":\n          [\n            {\n              \"id\": \"pip\",\n              \"kind\": \"pip\",\n              \"package\": \"agent-ros-bridge\",\n              \"label\": \"Agent ROS Bridge from PyPI\",\n            },\n            {\n              \"id\": \"docker\",\n              \"kind\": \"manual\",\n              \"label\": \"Docker Desktop (optional but recommended)\",\n              \"instruction\": \"For running examples in isolated containers. Install from https://www.docker.com/products/docker-desktop\",\n            },\n          ],\n        \"category\": \"robotics\",\n        \"tags\": [\"ros\", \"ros2\", \"robotics\", \"iot\", \"automation\", \"bridge\", \"embodied-intelligence\", \"arm\", \"navigation\"],\n      },\n  }\n\n---\n\n# 🤖 Agent ROS Bridge\n\n**Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.**\n\n[![CI](https://github.com/webthree549-bot/agent-ros-bridge/actions/workflows/ci.yml/badge.svg)](https://github.com/webthree549-bot/agent-ros-bridge/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/agent-ros-bridge.svg)](https://pypi.org/project/agent-ros-bridge/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## 🔐 Security-First Design\n\n**JWT authentication is always required and cannot be disabled.**\n\n```bash\n# Generate a secure secret (REQUIRED - no exceptions)\nexport JWT_SECRET=$(openssl rand -base64 32)\n```\n\nThe bridge will **fail to start** without JWT_SECRET. This is by design — security is not optional.\n\nSee [SECURITY.md](SECURITY.md) for complete security guidelines.\n\n---\n\n## Quick Start\n\n### Option 1: Docker Examples (Recommended for Testing)\n\nAll examples run in isolated Docker containers with simulated robots (no ROS installation needed).\n\n```bash\n# Clone repository\ngit clone https://github.com/webthree549-bot/agent-ros-bridge.git\ncd agent-ros-bridge\n\n# Generate JWT secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Run example in Docker\ncd examples/quickstart\ndocker-compose up\n\n# Test connection\ncurl http://localhost:8765/health\n```\n\n### Available Examples\n\n| Example | Description | Run |\n|---------|-------------|-----|\n| `examples/quickstart/` | Basic bridge with simulated robot | `docker-compose up` |\n| `examples/fleet/` | Multi-robot fleet coordination | `docker-compose up` |\n| `examples/arm/` | Robot arm control simulation | `docker-compose up` |\n\nAll examples:\n- Run in isolated Docker containers\n- Use JWT authentication (enforced)\n- Include simulated robots (no hardware needed)\n- Bind to localhost (127.0.0.1) by default\n\n### Option 2: Native Installation (Production)\n\n**Requirements:** Ubuntu 20.04/22.04 with ROS1 Noetic or ROS2 Humble/Jazzy\n\n```bash\n# Install from PyPI\npip install agent-ros-bridge\n\n# Set required secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start bridge\nagent-ros-bridge --config config/bridge.yaml\n```\n\nSee [docs/NATIVE_ROS.md](docs/NATIVE_ROS.md) for detailed native installation.\n\n---\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| **🔐 Security** | JWT auth always required, no bypass |\n| **🤖 Multi-Robot** | Fleet orchestration & coordination |\n| **🌐 Multi-Protocol** | WebSocket, MQTT, gRPC |\n| **🔄 Multi-ROS** | ROS1 + ROS2 simultaneously |\n| **🦾 Arm Control** | UR, xArm, Franka support |\n| **📊 Monitoring** | Prometheus + Grafana |\n\n---\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [User Manual](docs/USER_MANUAL.md) | Complete guide (23,000+ words) |\n| [API Reference](docs/API_REFERENCE.md) | Full API documentation |\n| [Native ROS](docs/NATIVE_ROS.md) | Ubuntu/ROS installation |\n| [Docker vs Native](docs/DOCKER_VS_NATIVE.md) | Deployment comparison |\n| [SECURITY.md](SECURITY.md) | Security policy |\n\n---\n\n## Usage\n\n### Python API\n\n```python\nfrom agent_ros_bridge import Bridge\nfrom agent_ros_bridge.gateway_v2.transports.websocket import WebSocketTransport\n\n# Bridge requires JWT_SECRET env var\nbridge = Bridge()\nbridge.transport_manager.register(WebSocketTransport({\"port\": 8765}))\nawait bridge.start()\n```\n\n### CLI\n\n```bash\n# Set required secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start bridge\nagent-ros-bridge --config config/bridge.yaml\n\n# Generate token for client\npython scripts/generate_token.py --secret $JWT_SECRET --role operator\n```\n\n---\n\n## Links\n\n- **Documentation:** https://github.com/webthree549-bot/agent-ros-bridge/tree/main/docs\n- **PyPI:** https://pypi.org/project/agent-ros-bridge/\n- **GitHub:** https://github.com/webthree549-bot/agent-ros-bridge\n- **Issues:** https://github.com/webthree549-bot/agent-ros-bridge/issues\n\n---\n\n**Security is not optional. JWT auth always required.**\n\nFile v0.3.4:_meta.json\n\n{\n  \"ownerId\": \"kn7865tvdsqd9pjav1n98at3qn80w4ws\",\n  \"slug\": \"agent-ros-bridge\",\n  \"version\": \"0.3.4\",\n  \"publishedAt\": 1771639355034\n}\n\nFile v0.3.4:config/bridge-auth.yaml\n\n# Agent ROS Bridge Configuration with Authentication Enabled\n\nbridge:\n  name: \"agent_ros_bridge\"\n  \n  transports:\n    websocket:\n      port: 8766\n      host: \"0.0.0.0\"\n      auth:\n        enabled: true\n        jwt_secret: \"8GpxD7Zp6L6bGl_bHbzLmNNaEpyKE3Sh1xEzO-dJfAo\"\n        jwt_expiry_hours: 24\n        api_keys:\n          \"ak_test123\":\n            user_id: \"test_user\"\n            roles: [\"operator\"]\n  \n  connectors:\n    ros:\n      auto_detect: false\n      endpoints: []\n\n  security:\n    enabled: false\n  \n  telemetry:\n    enabled: false\n\nFile v0.3.4:config/bridge.yaml\n\n# Agent ROS Bridge Configuration\n# Supports multiple ROS1/ROS2 endpoints (local and remote)\n\nbridge:\n  name: \"agent_ros_bridge\"\n  \n  transports:\n    websocket:\n      port: 8765\n      host: \"0.0.0.0\"\n      # Authentication settings\n      auth:\n        enabled: false  # Set to true to enable JWT/API key auth\n        jwt_secret: null  # Set via JWT_SECRET env var\n        jwt_expiry_hours: 24\n        api_keys: {}\n          # Example API keys:\n          # \"ak_1234567890abcdef\":\n          #   user_id: \"dashboard\"\n          #   roles: [\"operator\"]\n          # \"ak_0987654321fedcba\":\n          #   user_id: \"viewer\"\n          #   roles: [\"viewer\"]\n  \n  connectors:\n    ros:\n      # Auto-detect local ROS if no endpoints configured\n      auto_detect: true\n      \n      # Multiple ROS endpoints (local + remote)\n      # Uncomment and configure for mixed ROS1/ROS2 environments\n      endpoints: []\n        # Example 1: Local ROS2\n        # - id: \"local_ros2\"\n        #   ros_type: \"ros2\"\n        #   ros_distro: \"jazzy\"\n        #   host: \"localhost\"\n        #   domain_id: 0\n        #   auto_discover: true\n        \n        # Example 2: Local ROS1\n        # - id: \"local_ros1\"\n        #   ros_type: \"ros1\"\n        #   ros_distro: \"noetic\"\n        #   host: \"localhost\"\n        #   port: 11311\n        #   auto_discover: true\n        \n        # Example 3: Remote ROS2 robot\n        # - id: \"warehouse_bot_01\"\n        #   ros_type: \"ros2\"\n        #   ros_distro: \"humble\"\n        #   host: \"192.168.1.100\"\n        #   domain_id: 42\n        #   auto_discover: true\n        #   topics:\n        #     - \"/cmd_vel\"\n        #     - \"/odom\"\n        #     - \"/scan\"\n        \n        # Example 4: Dual ROS1 + ROS2\n        # - id: \"legacy_arm\"\n        #   ros_type: \"ros1\"\n        #   ros_distro: \"noetic\"\n        #   host: \"arm-robot.local\"\n        # - id: \"new_base\"\n        #   ros_type: \"ros2\"\n        #   ros_distro: \"humble\"\n        #   host: \"mobile-base.local\"\n        #   domain_id: 0\n\n  security:\n    enabled: false\n  \n  telemetry:\n    enabled: true\n    metrics_port: 9090\n\nFile v0.3.4:config/debug_config.yaml\n\n# Debug Config\nlogging:\n  level: \"INFO\"\n  console_logging: true\n  log_format: \"%(asctime)s - %(name)s - %(levelname)s - %(message)s\"\n  date_format: \"%Y-%m-%d %H:%M:%S\"\nmonitoring:\n  metrics: [\"cpu\", \"memory\", \"latency\"]\n  realtime_dashboard: true\ndebug:\n  mock_mode_default: false\n\nFile v0.3.4:config/fault_config.yaml\n\n# Fault Recovery Config\nglobal:\n  recovery_enabled: true\n  max_recovery_attempts: 5\n  recovery_delay: 1.0\n  fallback_strategy: \"safe_state\"\ncommunication:\n  ros_disconnect:\n    strategy: \"reconnect_node\"\n    max_retries: 5\n  openclaw_disconnect:\n    strategy: \"reconnect_tcp\"\n    max_retries: 10\n\nFile v0.3.4:config/global_config.yaml\n\n# Global Framework Config\nlogger:\n  log_dir: \"logs/\"\n  log_file: \"openclaw_ros_bridge.log\"\n  max_file_size: 10485760\n  max_rotated_logs: 5\n  file_save: true\nmonitor:\n  enabled: true\n  monitor_interval: 1.0\n  ros_topic: \"/openclaw/monitor/metrics\"\nplugin:\n  default_business_id: \"openclaw_001\"\n  auto_load: true\nrealtime:\n  enabled: false\n  priority: 90\n  cpu_affinity: [0,1]\nsystem:\n  node_respawn: true\n  fallback_strategy: \"safe_state\"\n  max_retry_attempts: 15\n\nFile v0.3.4:config/hal_config.yaml\n\n# HAL Config\nsensors:\n  dht22:\n    pin: 4\n    sample_freq: 1.0\n  usb_cam:\n    device: \"/dev/video0\"\n    resolution: \"640x480\"\nactuators:\n  l298n:\n    pins: [17, 18, 22, 23]\n    max_speed: 255\n  robotiq_2f_85:\n    serial_port: \"/dev/ttyUSB0\"\n    max_grip_force: 100\nglobal:\n  auto_detect: true\n\nFile v0.3.4:config/openclaw_config.yaml\n\n# OpenClaw v1.x/v2.x Config\ndefault_version: \"v2\"\nopenclaw_versions:\n  v1:\n    tcp_host: \"127.0.0.1\"\n    tcp_port: 8888\n    recv_buffer_size: 4096\n    send_timeout: 10\n    recv_timeout: 10\n    reconnect_attempts: 10\n  v2:\n    tcp_host: \"127.0.0.1\"\n    tcp_port: 9999\n    recv_buffer_size: 8192\n    send_timeout: 10\n    recv_timeout: 10\n    reconnect_attempts: 15\nglobal:\n  tcp_reconnect: true\n  heartbeat_interval: 3.0\n\nFile v0.3.4:config/ros1_config.yaml\n\n# ROS1 Noetic Config\nros1_versions:\n  noetic:\n    env_path: \"/opt/ros/noetic/setup.bash\"\n    build_cmd: \"catkin_make\"\n    catkin_ws: \"catkin_ws\"\n    node_prefix: \"ros1_\"\nglobal:\n  default_qos: 10\n  realtime:\n    enabled: false\n    priority: 80\n\nFile v0.3.4:config/ros2_config.yaml\n\n# ROS2 Humble/Jazzy Config\nros2_versions:\n  humble:\n    env_path: \"/opt/ros/humble/setup.bash\"\n    build_cmd: \"colcon build --symlink-install\"\n    node_prefix: \"ros2_\"\n  jazzy:\n    env_path: \"/opt/ros/jazzy/setup.bash\"\n    build_cmd: \"colcon build --symlink-install\"\n    node_prefix: \"ros2_\"\nglobal:\n  default_qos: 10\n  realtime:\n    enabled: false\n    priority: 90\n\nArchive v0.3.3: 58 files, 94319 bytes\n\nFiles: agent_ros_bridge/__init__.py (1990b), agent_ros_bridge/_version.py (704b), agent_ros_bridge/actions/__init__.py (16125b), agent_ros_bridge/fleet/__init__.py (421b), agent_ros_bridge/fleet/orchestrator.py (18060b), agent_ros_bridge/gateway_v2/__init__.py (996b), agent_ros_bridge/gateway_v2/__main__.py (6796b), agent_ros_bridge/gateway_v2/auth.py (6534b), agent_ros_bridge/gateway_v2/config.py (11533b), agent_ros_bridge/gateway_v2/connectors/__init__.py (36b), agent_ros_bridge/gateway_v2/connectors/ros1_connector.py (10605b), agent_ros_bridge/gateway_v2/connectors/ros2_connector.py (10460b), agent_ros_bridge/gateway_v2/core.py (18950b), agent_ros_bridge/gateway_v2/plugins/__init__.py (33b), agent_ros_bridge/gateway_v2/plugins/greenhouse_plugin.py (8820b), agent_ros_bridge/gateway_v2/transports/__init__.py (36b), agent_ros_bridge/gateway_v2/transports/grpc_transport.py (8137b), agent_ros_bridge/gateway_v2/transports/mqtt_transport.py (11011b), agent_ros_bridge/gateway_v2/transports/websocket.py (14032b), agent_ros_bridge/metrics/__init__.py (11768b), agent_ros_bridge/plugins/arm_robot.py (14934b), CHANGELOG.md (7093b), config/bridge-auth.yaml (542b), config/bridge.yaml (2067b), dashboards/grafana-dashboard.json (3079b), examples/actions/actions_demo.py (6742b), examples/actions/README.md (1203b), examples/actions/run.sh (724b), examples/arm/arm_demo.py (5770b), examples/arm/docker-compose.yml (422b), examples/arm/README.md (1351b), examples/arm/run.sh (857b), examples/auth/auth_demo.py (4545b), examples/auth/README.md (1004b), examples/auth/run.sh (1008b), examples/fleet/docker-compose.yml (413b), examples/fleet/fleet_demo.py (6855b), examples/fleet/README.md (1054b), examples/fleet/run.sh (940b), examples/metrics/metrics_demo.py (3885b), examples/metrics/README.md (1428b), examples/metrics/run.sh (693b), examples/mqtt_iot/mqtt_demo.py (5223b), examples/mqtt_iot/README.md (846b), examples/mqtt_iot/run.sh (571b), examples/quickstart/docker-compose.yml (541b), examples/quickstart/README.md (1471b), examples/quickstart/run.sh (1029b), examples/quickstart/simulated_robot.py (6244b), examples/README.md (2397b), PRODUCTION_CHECKLIST.md (2659b), pyproject.toml (6353b), README.md (3999b), scripts/generate_token.py (2847b), scripts/validate_ros_setup.py (12472b), SECURITY.md (2539b), SKILL.md (5955b), _meta.json (135b)\n\nFile v0.3.3:SKILL.md\n\n---\nname: agent-ros-bridge\nversion: 0.3.3\ndescription: Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.\nauthor: Agent ROS Bridge Team\nhomepage: https://github.com/webthree549-bot/agent-ros-bridge\nrepository: https://github.com/webthree549-bot/agent-ros-bridge.git\nlicense: MIT\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🤖\",\n        \"requires\": { \"bins\": [\"python3\"], \"env\": [\"JWT_SECRET\"] },\n        \"suggests\": { \"bins\": [\"docker\"] },\n        \"env\":\n          {\n            \"JWT_SECRET\":\n              {\n                \"description\": \"Required: Secret key for JWT authentication. Bridge will fail to start without this.\",\n                \"sensitive\": true,\n                \"required\": true\n              },\n            \"BRIDGE_HOST\":\n              {\n                \"description\": \"Optional: Bind address (default: 127.0.0.1 for security)\",\n                \"sensitive\": false,\n                \"required\": false\n              },\n          },\n        \"security\":\n          {\n            \"notes\": \"SECURITY-FIRST DESIGN: JWT authentication is always required and cannot be disabled. All examples run in Docker containers for isolation. Never expose to public networks without TLS and firewall rules.\",\n          },\n        \"install\":\n          [\n            {\n              \"id\": \"pip\",\n              \"kind\": \"pip\",\n              \"package\": \"agent-ros-bridge\",\n              \"label\": \"Agent ROS Bridge from PyPI\"\n            },\n            {\n              \"id\": \"docker\",\n              \"kind\": \"manual\",\n              \"label\": \"Docker Desktop (optional but recommended)\",\n              \"instruction\": \"For running examples in isolated containers. Install from https://www.docker.com/products/docker-desktop\"\n            }\n          ],\n        \"category\": \"robotics\",\n        \"tags\": [\"ros\", \"ros2\", \"robotics\", \"iot\", \"automation\", \"bridge\", \"embodied-intelligence\", \"arm\", \"navigation\"],\n      },\n  }\n\n---\n\n# 🤖 Agent ROS Bridge\n\n**Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.**\n\n[![CI](https://github.com/webthree549-bot/agent-ros-bridge/actions/workflows/ci.yml/badge.svg)](https://github.com/webthree549-bot/agent-ros-bridge/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/agent-ros-bridge.svg)](https://pypi.org/project/agent-ros-bridge/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## 🔐 Security-First Design\n\n**JWT authentication is always required and cannot be disabled.**\n\n```bash\n# Generate a secure secret (REQUIRED - no exceptions)\nexport JWT_SECRET=$(openssl rand -base64 32)\n```\n\nThe bridge will **fail to start** without JWT_SECRET. This is by design — security is not optional.\n\nSee [SECURITY.md](SECURITY.md) for complete security guidelines.\n\n---\n\n## Quick Start\n\n### Option 1: Docker Examples (Recommended for Testing)\n\nAll examples run in isolated Docker containers with simulated robots (no ROS installation needed).\n\n```bash\n# Clone repository\ngit clone https://github.com/webthree549-bot/agent-ros-bridge.git\ncd agent-ros-bridge\n\n# Generate JWT secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Run example in Docker\ncd examples/quickstart\ndocker-compose up\n\n# Test connection\ncurl http://localhost:8765/health\n```\n\n### Available Examples\n\n| Example | Description | Run |\n|---------|-------------|-----|\n| `examples/quickstart/` | Basic bridge with simulated robot | `docker-compose up` |\n| `examples/fleet/` | Multi-robot fleet coordination | `docker-compose up` |\n| `examples/arm/` | Robot arm control simulation | `docker-compose up` |\n\nAll examples:\n- Run in isolated Docker containers\n- Use JWT authentication (enforced)\n- Include simulated robots (no hardware needed)\n- Bind to localhost (127.0.0.1) by default\n\n### Option 2: Native Installation (Production)\n\n**Requirements:** Ubuntu 20.04/22.04 with ROS1 Noetic or ROS2 Humble/Jazzy\n\n```bash\n# Install from PyPI\npip install agent-ros-bridge\n\n# Set required secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start bridge\nagent-ros-bridge --config config/bridge.yaml\n```\n\nSee [docs/NATIVE_ROS.md](docs/NATIVE_ROS.md) for detailed native installation.\n\n---\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| **🔐 Security** | JWT auth always required, no bypass |\n| **🤖 Multi-Robot** | Fleet orchestration & coordination |\n| **🌐 Multi-Protocol** | WebSocket, MQTT, gRPC |\n| **🔄 Multi-ROS** | ROS1 + ROS2 simultaneously |\n| **🦾 Arm Control** | UR, xArm, Franka support |\n| **📊 Monitoring** | Prometheus + Grafana |\n\n---\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [User Manual](docs/USER_MANUAL.md) | Complete guide (23,000+ words) |\n| [API Reference](docs/API_REFERENCE.md) | Full API documentation |\n| [Native ROS](docs/NATIVE_ROS.md) | Ubuntu/ROS installation |\n| [Docker vs Native](docs/DOCKER_VS_NATIVE.md) | Deployment comparison |\n| [SECURITY.md](SECURITY.md) | Security policy |\n\n---\n\n## Usage\n\n### Python API\n\n```python\nfrom agent_ros_bridge import Bridge\nfrom agent_ros_bridge.gateway_v2.transports.websocket import WebSocketTransport\n\n# Bridge requires JWT_SECRET env var\nbridge = Bridge()\nbridge.transport_manager.register(WebSocketTransport({\"port\": 8765}))\nawait bridge.start()\n```\n\n### CLI\n\n```bash\n# Set required secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start bridge\nagent-ros-bridge --config config/bridge.yaml\n\n# Generate token for client\npython scripts/generate_token.py --secret $JWT_SECRET --role operator\n```\n\n---\n\n## Links\n\n- **Documentation:** https://github.com/webthree549-bot/agent-ros-bridge/tree/main/docs\n- **PyPI:** https://pypi.org/project/agent-ros-bridge/\n- **GitHub:** https://github.com/webthree549-bot/agent-ros-bridge\n- **Issues:** https://github.com/webthree549-bot/agent-ros-bridge/issues\n\n---\n\n**Security is not optional. JWT auth always required.**\n\nFile v0.3.3:examples/actions/README.md\n\n# ROS Actions Example\n\n**Long-running tasks with progress feedback.**\n\n## What It Does\n\nDemonstrates ROS Actions for navigation and manipulation with real-time progress updates.\n\n## Requirements\n\n- Python 3.8+\n- `agent-ros-bridge` installed\n\n## Run\n\n```bash\n./run.sh --action navigate\n```\n\nOr:\n```bash\n./run.sh --action manipulate\n```\n\n## Test\n\n```bash\n# In another terminal\nwscat -c ws://localhost:8773\n\n# Navigate to pose\n{\"command\": {\"action\": \"actions.navigate\", \"parameters\": {\"x\": 5.0, \"y\": 3.0, \"theta\": 1.57}}}\n\n# Follow trajectory\n{\"command\": {\"action\": \"actions.follow_trajectory\", \"parameters\": {\"waypoints\": [[0,0], [1,1], [2,2]]}}}\n```\n\n## What's Happening\n\nThis demonstrates:\n- **Goal Submission**: Send long-running tasks\n- **Progress Feedback**: Real-time status updates\n- **Cancellation**: Preempt running actions\n- **Result Handling**: Success/failure outcomes\n\n## Action Types\n\n| Action | Description |\n|--------|-------------|\n| `navigate` | Navigate to pose (Nav2) |\n| `manipulate` | Follow joint trajectory (MoveIt) |\n| `follow_trajectory` | Waypoint following |\n\n## Next Steps\n\n- Read [User Manual - ROS Actions](../../docs/USER_MANUAL.md#ros-actions)\n- Try with real Nav2/MoveIt\n\nFile v0.3.3:examples/arm/README.md\n\n# Arm Robot Example\n\n**Robotic arm manipulation demo.**\n\n## What It Does\n\nDemonstrates control of UR, xArm, or Franka robotic arms with joint and Cartesian control.\n\n## Requirements\n\n- Python 3.8+\n- `agent-ros-bridge` installed\n\n## Run\n\n```bash\n./run.sh --arm-type ur --demo pick_place\n```\n\nOptions:\n- `--arm-type ur|xarm|franka`\n- `--ros-version ros1|ros2`\n- `--demo pick_place|interactive|state`\n\n## Test\n\n```bash\n# In another terminal\nwscat -c ws://localhost:8772\n\n# Move joints\n{\"command\": {\"action\": \"arm.move_joints\", \"parameters\": {\"joints\": [0, -1.57, 0, -1.57, 0, 0]}}}\n\n# Cartesian move\n{\"command\": {\"action\": \"arm.move_cartesian\", \"parameters\": {\"x\": 0.5, \"y\": 0.2, \"z\": 0.1}}}\n\n# Control gripper\n{\"command\": {\"action\": \"arm.gripper\", \"parameters\": {\"position\": 0.8}}}\n```\n\n## What's Happening\n\nThis demonstrates:\n- **Joint Control**: Move individual joints\n- **Cartesian Control**: Move end-effector to position\n- **Gripper Control**: Open/close gripper\n- **Trajectory Execution**: Multi-waypoint paths\n\n## Supported Arms\n\n| Arm | Type | ROS Versions |\n|-----|------|--------------|\n| Universal Robots | UR5, UR10, UR3e | ROS1/ROS2 |\n| UFACTORY | xArm6, xArm7 | ROS2 |\n| Franka | Panda | ROS2 |\n\n## Next Steps\n\n- Read [User Manual - Arm Robots](../../docs/USER_MANUAL.md#robot-arms)\n- Connect to real arm hardware\n- Try MoveIt integration\n\nFile v0.3.3:examples/auth/README.md\n\n# Authentication Example\n\n**JWT token-based security demo.**\n\n## What It Does\n\nRuns the bridge with JWT authentication enabled. Shows how to secure robot access.\n\n## Requirements\n\n- Python 3.8+\n- `agent-ros-bridge` installed\n\n## Run\n\n```bash\n./run.sh\n```\n\n## Test\n\n```bash\n# Generate a token (in another terminal)\npython ../../scripts/generate_token.py --secret my-secret-key --role operator\n\n# Connect with token\nwscat -c \"ws://localhost:8768?token=YOUR_TOKEN_HERE\"\n\n# Without token (will fail)\nwscat -c ws://localhost:8768\n```\n\n## What's Happening\n\nThis demonstrates:\n- **JWT Authentication**: Tokens required for connection\n- **Role-Based Access**: Admin, operator, viewer roles\n- **Token Generation**: How to create valid tokens\n\n## Roles\n\n| Role | Permissions |\n|------|-------------|\n| `admin` | Full control |\n| `operator` | Control robots |\n| `viewer` | Read-only |\n\n## Next Steps\n\n- Read [User Manual - Security](../../docs/USER_MANUAL.md#security-hardening)\n- Integrate with your auth provider\n\nFile v0.3.3:examples/fleet/README.md\n\n# Fleet Example\n\n**Multi-robot fleet orchestration demo.**\n\n## What It Does\n\nSimulates a fleet of 4 robots with task allocation, load balancing, and real-time metrics.\n\n## Requirements\n\n- Python 3.8+\n- `agent-ros-bridge` installed\n\n## Run\n\n```bash\n./run.sh\n```\n\n## Test\n\n```bash\n# In another terminal\nwscat -c ws://localhost:8771\n\n# Submit a navigation task\n{\"command\": {\"action\": \"fleet.submit_task\", \"parameters\": {\"type\": \"navigate\", \"target_location\": \"zone_a\", \"priority\": 5}}}\n\n# Check fleet status\n{\"command\": {\"action\": \"fleet.status\"}}\n\n# Get metrics\n{\"command\": {\"action\": \"fleet.metrics\"}}\n```\n\n## What's Happening\n\nThis demonstrates:\n- **Task Allocation**: Tasks assigned to available robots\n- **Load Balancing**: Work distributed across fleet\n- **Priority Queue**: Higher priority tasks served first\n- **Real-time Metrics**: Fleet utilization tracking\n\nAll simulated — no real robots needed.\n\n## Next Steps\n\n- Read the [Fleet Management guide](../../docs/USER_MANUAL.md#fleet-management)\n- Try [authentication](../auth/) for secure fleets\n\nFile v0.3.3:examples/metrics/README.md\n\n# Metrics Example\n\n**Prometheus monitoring and Grafana dashboards.**\n\n## What It Does\n\nExposes robot metrics for Prometheus scraping with a pre-built Grafana dashboard.\n\n## Requirements\n\n- Python 3.8+\n- `agent-ros-bridge` installed\n\n## Run\n\n```bash\n./run.sh\n```\n\n## View Metrics\n\n```bash\n# Raw metrics\ncurl http://localhost:9090/metrics\n\n# Specific metrics\ncurl http://localhost:9090/metrics | grep agent_ros_bridge_robots_online\ncurl http://localhost:9090/metrics | grep agent_ros_bridge_tasks_completed\n```\n\n## Grafana Setup\n\n1. Start Grafana: `docker run -p 3000:3000 grafana/grafana`\n2. Open http://localhost:3000 (admin/admin)\n3. Add Prometheus data source: http://host.docker.internal:9090\n4. Import dashboard: `../../dashboards/grafana-dashboard.json`\n\n## What's Happening\n\nThis demonstrates:\n- **Prometheus Metrics**: Standard exposition format\n- **Robot Telemetry**: Online count, battery, location\n- **Task Metrics**: Completion rate, duration\n- **System Health**: Message throughput, latency\n\n## Key Metrics\n\n| Metric | Description |\n|--------|-------------|\n| `robots_online` | Currently connected robots |\n| `tasks_completed_total` | Cumulative task count |\n| `task_duration_seconds` | Task execution time |\n| `messages_sent_total` | Bridge message throughput |\n\n## Next Steps\n\n- Import dashboard in production Grafana\n- Set up alerting rules\n- Read [User Manual - Monitoring](../../docs/USER_MANUAL.md#monitoring)\n\nFile v0.3.3:examples/mqtt_iot/README.md\n\n# MQTT IoT Example\n\n**IoT sensor integration via MQTT.**\n\n## What It Does\n\nDemonstrates connecting IoT sensors to the bridge via MQTT protocol.\n\n## Requirements\n\n- Python 3.8+\n- `agent-ros-bridge` installed\n- MQTT broker (optional - uses mock if not available)\n\n## Run\n\n```bash\n./run.sh\n```\n\n## Test\n\n```bash\n# If you have mosquitto\nmosquitto_pub -t \"robots/tb4_001/cmd\" -m '{\"action\": \"move\", \"parameters\": {\"direction\": \"forward\"}}'\n\n# Or use the bridge's MQTT transport\npython mqtt_demo.py\n```\n\n## What's Happening\n\nThis demonstrates:\n- **MQTT Transport**: Pub/sub messaging\n- **IoT Integration**: Sensor data ingestion\n- **Protocol Bridge**: MQTT to WebSocket gateway\n\n## Next Steps\n\n- Set up [Mosquitto](https://mosquitto.org/) broker\n- Integrate with industrial sensors\n- Read [User Manual - MQTT](../../docs/USER_MANUAL.md#mqtt-transport)\n\nFile v0.3.3:examples/quickstart/README.md\n\n# Quickstart Example\n\n**The fastest way to see Agent ROS Bridge in action.**\n\n## What It Does\n\nRuns a simulated robot bridge in an isolated Docker container that responds to WebSocket commands. No ROS installation required.\n\n## Requirements\n\n- Docker Desktop\n- JWT_SECRET environment variable\n\n## Run\n\n```bash\n# Set required JWT secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Run in Docker (isolated, secure)\ndocker-compose up\n\n# Or run the Python script directly (requires JWT_SECRET)\nexport JWT_SECRET=$(openssl rand -base64 32)\npython simulated_robot.py\n```\n\n## Test\n\n```bash\n# Generate a token\npython ../../scripts/generate_token.py --secret $JWT_SECRET --role operator\n\n# Connect with token\nwscat -c \"ws://localhost:8765?token=YOUR_TOKEN_HERE\"\n\n# Then type:\n{\"command\": {\"action\": \"list_robots\"}}\n{\"command\": {\"action\": \"ping\"}}\n```\n\n## What's Happening\n\nThis runs the bridge with a **simulated robot** — a safe testing environment that behaves like real ROS but without any ROS installation. JWT authentication is always enforced. Perfect for:\n- First-time users\n- Testing the bridge API\n- Development without hardware\n\n## Security Note\n\nThis example requires JWT_SECRET and uses authentication. The Docker container provides network isolation.\n\n## Next Steps\n\n- Try the [fleet example](../fleet/) for multi-robot\n- Try the [auth example](../auth/) for JWT security examples\n- See [Docker vs Native](../../docs/DOCKER_VS_NATIVE.md) for deployment options\n\nFile v0.3.3:examples/README.md\n\n# Agent ROS Bridge - Examples\n\n**Ready-to-run examples demonstrating all features.**\n\n## Quick Start\n\nAll examples run in **Docker containers** for security and isolation.\n\n```bash\n# Set required JWT secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start here - Docker-based, secure\ncd quickstart\ndocker-compose up\n```\n\n## Examples Overview\n\n| Example | What It Shows | Runtime | Time to Launch |\n|---------|--------------|---------|----------------|\n| [quickstart](./quickstart/) | Basic bridge usage | Docker | 10 seconds |\n| [fleet](./fleet/) | Multi-robot coordination | Docker | 10 seconds |\n| [auth](./auth/) | JWT authentication | Docker | 10 seconds |\n| [arm](./arm/) | Robotic arm control | Docker | 10 seconds |\n\n## Running Any Example\n\n```bash\ncd <example-name>\n\n# Set JWT secret (required)\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Run in Docker\ndocker-compose up\n```\n\nEach example:\n- Runs in an **isolated Docker container**\n- **Requires JWT_SECRET** (authentication always enforced)\n- Uses **simulated robots** (no ROS installation needed)\n- Binds to **localhost only** by default\n\n## What These Examples Use\n\nAll examples use **simulated robot environments** in Docker containers:\n- Respond to real WebSocket/MQTT commands\n- Behave like real ROS systems\n- Require JWT authentication (no exceptions)\n- Run in network isolation\n\nThis lets you:\n- Learn the API securely\n- Test integrations quickly\n- Develop without hardware\n\n## Security First\n\n**JWT_SECRET is always required.** Examples will fail to start without it.\n\n```bash\n# Generate a secure secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n```\n\n## Production Deployment\n\nWhen you're ready for real robots:\n\n| Deployment | See |\n|------------|-----|\n| Native Ubuntu + ROS | [NATIVE_ROS.md](../docs/NATIVE_ROS.md) |\n| Docker containers | [DOCKER_VS_NATIVE.md](../docs/DOCKER_VS_NATIVE.md) |\n| Cloud (AWS/GCP) | [User Manual - Deployment](../docs/USER_MANUAL.md) |\n\n## Troubleshooting\n\n**Port already in use?**\n```bash\n# Find and kill process\nlsof -i :8765\nkill <PID>\n```\n\n**Docker not running?**\n```bash\n# Start Docker Desktop\ndocker ps\n```\n\n## Contributing\n\nAdd new examples by creating a folder with:\n- `README.md` — What it does, how to run\n- `docker-compose.yml` — Docker orchestration\n- `run.sh` — Executable launch script (optional)\n- `*.py` — Example code\n\nSee [CONTRIBUTING.md](../CONTRIBUTING.md)\n\nFile v0.3.3:README.md\n\n# Agent ROS Bridge\n\n**Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.**\n\n[![CI](https://github.com/webthree549-bot/agent-ros-bridge/actions/workflows/ci.yml/badge.svg)](https://github.com/webthree549-bot/agent-ros-bridge/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/agent-ros-bridge.svg)](https://pypi.org/project/agent-ros-bridge/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## 🔐 Security-First Design\n\n**JWT authentication is always required and cannot be disabled.**\n\n```bash\n# Generate a secure secret (REQUIRED - no exceptions)\nexport JWT_SECRET=$(openssl rand -base64 32)\n```\n\nThe bridge will **fail to start** without JWT_SECRET. This is by design — security is not optional.\n\nSee [SECURITY.md](SECURITY.md) for complete security guidelines.\n\n---\n\n## Quick Start\n\n### Production (Native ROS)\n\n**Requirements:** Ubuntu 20.04/22.04 with ROS1 Noetic or ROS2 Humble/Jazzy\n\n```bash\n# Install\npip install agent-ros-bridge\n\n# Set required secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start bridge\nagent-ros-bridge --config config/bridge.yaml\n```\n\n### Docker Examples (Recommended for Testing)\n\nAll examples run in isolated Docker containers with simulated robots (no ROS installation needed).\n\n```bash\n# Clone repository\ngit clone https://github.com/webthree549-bot/agent-ros-bridge.git\ncd agent-ros-bridge\n\n# Generate JWT secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Run example in Docker\ncd examples/quickstart\ndocker-compose up\n\n# Test connection\ncurl http://localhost:8765/health\n```\n\n### Available Docker Examples\n\n| Example | Description | Run |\n|---------|-------------|-----|\n| `examples/quickstart/` | Basic bridge | `docker-compose up` |\n| `examples/fleet/` | Multi-robot fleet | `docker-compose up` |\n| `examples/arm/` | Robot arm control | `docker-compose up` |\n\nAll examples include:\n- Isolated Docker container\n- Pre-configured JWT auth\n- Simulated robot environment\n- Localhost-only binding (127.0.0.1)\n\n---\n\n## Installation\n\n### Via PyPI (Production)\n\n```bash\npip install agent-ros-bridge\n```\n\n### Via ClawHub\n\n```bash\nopenclaw skills add agent-ros-bridge\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/webthree549-bot/agent-ros-bridge.git\ncd agent-ros-bridge\npip install -e \".[dev]\"\n```\n\n---\n\n## Usage\n\n### Python API\n\n```python\nfrom agent_ros_bridge import Bridge\nfrom agent_ros_bridge.gateway_v2.transports.websocket import WebSocketTransport\n\n# Bridge requires JWT_SECRET env var\nbridge = Bridge()\nbridge.transport_manager.register(WebSocketTransport({\"port\": 8765}))\nawait bridge.start()\n```\n\n### CLI\n\n```bash\n# Set required secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start bridge\nagent-ros-bridge --config config/bridge.yaml\n\n# Generate token for client\npython scripts/generate_token.py --secret $JWT_SECRET --role operator\n```\n\n---\n\n## Features\n\n- **Security-First**: JWT auth always required, no bypass\n- **Multi-Protocol**: WebSocket, gRPC, MQTT\n- **Multi-ROS**: ROS1 Noetic + ROS2 Humble/Jazzy\n- **Fleet Orchestration**: Multi-robot coordination\n- **Arm Control**: UR, xArm, Franka manipulation\n- **Docker Examples**: Isolated testing environments\n- **Production Ready**: Native Ubuntu deployment\n\n---\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [User Manual](docs/USER_MANUAL.md) | Complete guide (23,000+ words) |\n| [API Reference](docs/API_REFERENCE.md) | Full API documentation |\n| [Native ROS](docs/NATIVE_ROS.md) | Ubuntu/ROS installation |\n| [Multi-ROS](docs/MULTI_ROS.md) | Fleet management |\n| [Docker vs Native](docs/DOCKER_VS_NATIVE.md) | Deployment comparison |\n| [SECURITY.md](SECURITY.md) | Security policy |\n\n---\n\n## Development\n\n```bash\n# Install dev dependencies\npip install -e \".[dev]\"\n\n# Run tests\nmake test\n\n# Build package\nmake build\n```\n\n---\n\n## License\n\n[MIT License](LICENSE)\n\n---\n\n**Security is not optional. JWT auth always required.**\n\nFile v0.3.3:_meta.json\n\n{\n  \"ownerId\": \"kn7865tvdsqd9pjav1n98at3qn80w4ws\",\n  \"slug\": \"agent-ros-bridge\",\n  \"version\": \"0.3.3\",\n  \"publishedAt\": 1771167059007\n}\n\nFile v0.3.3:CHANGELOG.md\n\n# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),\nand this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n\n## [Unreleased]\n\n### Added\n- None\n\n### Changed\n- None\n\n### Deprecated\n- None\n\n### Removed\n- None\n\n### Fixed\n- None\n\n### Security\n- None\n\n## [0.3.3] - 2025-02-15\n\n### Release & Submission\n- Production release for ClawHub submission\n- All documentation consistency fixes complete\n- Security model finalized: JWT always required\n- Ready for public distribution\n\n## [0.3.1] - 2025-02-15\n\n### Documentation Consistency Fix\n- **CRITICAL**: Removed all remaining \"mock mode\" references from documentation\n- Renamed files: `mock_bridge.py` → `simulated_robot.py`, `mock_bridge_auth.py` → `auth_demo.py`\n- Updated all README files to remove mock mode references\n- Updated SKILL.md commands section (removed `demo mock`, added `demo quickstart`)\n- Fixed docker-compose.yml files to use `--simulated` instead of `--mock`\n- Updated print statements in example scripts\n- All examples now consistently use \"simulated\" terminology\n\n## [0.3.0] - 2025-02-15\n\n### ⚠️ BREAKING CHANGES\n\n#### Removed: Mock Mode\n- **Mock mode has been completely removed**\n- Authentication is now **always required** with no bypass option\n- Bridge will fail to start without JWT_SECRET\n\n#### Changed: Example Deployment\n- All examples now run in **Docker containers only**\n- No more native mock mode execution\n- Examples provide isolated, secure testing environments\n\n#### Changed: Default Bind Address\n- Default changed from `0.0.0.0` to `127.0.0.1` (localhost only)\n- Reduces accidental network exposure\n\n### Security Improvements\n- **Mandatory authentication**: No way to disable auth\n- **Docker isolation**: All examples run in containers\n- **Simplified security model**: JWT_SECRET always required\n- **No ambiguous states**: Clear security posture\n\n### Documentation\n- Updated README for Docker-only examples\n- Updated SECURITY.md with new security model\n- Created docker-compose.yml files for all examples\n\n## [0.2.4] - 2025-02-15\n\n### Documentation Fixes\n- Fixed README to reference correct entry points (agent-ros-bridge CLI)\n- Clarified JWT_SECRET required for production, optional for mock mode\n- Added MOCK_MODE and BRIDGE_HOST env variables to SKILL.md\n- Fixed requires/env metadata to show JWT_SECRET as optional\n- Improved security documentation clarity\n\n## [0.2.3] - 2025-02-15\n\n### ClawHub Submission\n- Reformatted SKILL.md metadata for registry compatibility\n- Fresh release to trigger new security scan\n- Optimized submission package structure\n\n## [0.2.2] - 2025-02-15\n\n### Security & Documentation\n- Removed curl|bash install pattern from README (security best practice)\n- Added mock mode security warnings (localhost-only recommendation)\n- Added BRIDGE_HOST=127.0.0.1 guidance for testing\n- Synced _version.py auto-generated file\n- Cleaned submission package for ClawHub\n\n## [0.2.1] - 2025-02-14\n\n### Security (Critical)\n- **BREAKING**: Authentication now enabled by default (was disabled)\n- **BREAKING**: JWT_SECRET now required when auth enabled (no auto-generation)\n- Added JWT_SECRET to SKILL.md required environment variables\n- Added security warnings to README and run.sh scripts\n- Authenticator now fails fast if JWT_SECRET not set (vs auto-generating)\n- Added SECURITY.md policy document\n\n## [0.2.0] - 2025-02-14\n\n### Added\n- **Comprehensive documentation suite** (40,000+ words)\n  - User Manual (23,000+ words) - Installation, tutorials, troubleshooting\n  - API Reference (13,000+ words) - Complete API documentation\n  - Docker vs Native deployment guide\n  - DDS Architecture documentation\n  - Multi-ROS fleet management guide\n  - Repository structure documentation\n- **7 self-contained examples** with READMEs and run.sh scripts\n  - quickstart/ - Basic bridge usage (30-second launch)\n  - fleet/ - Multi-robot coordination\n  - auth/ - JWT authentication\n  - mqtt_iot/ - IoT sensor integration\n  - actions/ - ROS navigation/actions\n  - arm/ - Robotic arm control (UR, xArm, Franka)\n  - metrics/ - Prometheus monitoring\n- **ROS setup validation script** (`scripts/validate_ros_setup.py`)\n  - Checks ROS1/ROS2 installation\n  - Validates agent-ros-bridge imports\n  - Color-coded pass/warning/fail output\n- **OpenClaw integration tests** (`tests/test_openclaw_integration.py`)\n  - Validates SKILL.md manifest\n  - Tests all module imports\n  - Verifies basic functionality\n- **Production-grade repository structure**\n  - Clean separation of source/build artifacts\n  - Makefile with comprehensive targets\n  - CONTRIBUTING.md with development workflow\n  - 155 source files, 0 build artifacts in git\n\n### Changed\n- **BREAKING**: Reorganized `demo/` → `examples/` for clarity\n  - Each example is self-contained with README and run.sh\n  - Updated all documentation references\n  - Added `make example-*` targets\n- **Version normalization** across all files (0.1.0 → 0.2.0)\n- **SKILL.md optimized** for OpenClaw integration\n  - Added commands section for `openclaw run` support\n  - Enhanced metadata for ClawHub discovery\n- **Makefile enhanced**\n  - Added example runners (make example-quickstart, etc.)\n  - Improved clean target (removes all build artifacts)\n  - Added validation target\n\n### Removed\n- Legacy `demo/greenhouse/` (unused)\n- Legacy `demo/arm_manipulation/` (superseded by examples/arm/)\n- Old `demo/__init__.py` structure\n\n### Fixed\n- Git push issues (configured HTTP/1.1)\n- README duplicate sections removed\n- Project structure diagram updated\n\n## [0.1.0] - 2025-02-14\n\n### Added\n- Initial PyPI release\n- New Gateway v2 architecture with multi-protocol support (WebSocket, gRPC, MQTT, TCP)\n- Plugin system with hot-reload capability\n- Multi-robot fleet management\n- ROS2 connector with auto-discovery\n- Greenhouse demo plugin\n- Comprehensive CI/CD pipeline with GitHub Actions\n- Docker multi-architecture builds (amd64, arm64)\n- Security scanning with Trivy and Bandit\n- Pre-commit hooks for code quality\n- Full test suite with pytest\n- Documentation site with MkDocs\n\n### Changed\n- Refactored from single-purpose TCP bridge to universal robot gateway\n- Improved configuration system with YAML/JSON/Env support\n- Enhanced error handling and logging\n\n### Security\n- Added security scanning to CI pipeline\n- Implemented authentication framework\n\n## [1.0.0] - 2024-01-15\n\n### Added\n- Initial release of OpenClaw ROS Bridge\n- ROS1 Noetic and ROS2 Humble/Jazzy support\n- Hardware Abstraction Layer (HAL)\n- Fault self-recovery mechanisms\n- Real-time scheduling support\n- Docker containerization\n- Mock mode for testing without hardware\n- TCP server for OpenClaw integration\n- Greenhouse demo application\n- Complete test suite (unit + integration)\n- Documentation and deployment scripts\n\n[Unreleased]: https://github.com/webthree549-bot/agent-ros-bridge/compare/v0.1.0...HEAD\n[0.1.0]: https://github.com/webthree549-bot/agent-ros-bridge/releases/tag/v0.1.0\n[1.0.0]: https://github.com/webthree549-bot/openclaw-ros-bridge/releases/tag/v1.0.0","readmeExcerpt":"Skill: Agent Ros Bridge Owner: kn7865tvdsqd9pjav1n98at3qn80w4ws Summary: Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems. Tags: automation:0.3.3, bridge:0.3.3, embodied-intelligence:0.3.3, iot:0.3.3, latest:0.3.4, robotics:0.3.3, ros:0.3.3, ros2:0.3.3 Version history: v0.3.4 | 2026-02-21T02:02:35.034Z | auto - Major cleanup: removed 33 files including all example scripts, ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Generate a secure secret (REQUIRED - no exceptions)\nexport JWT_SECRET=$(openssl rand -base64 32)"},{"language":"bash","snippet":"curl http://localhost:8765/health"},{"language":"bash","snippet":"# Clone repository\ngit clone https://github.com/webthree549-bot/agent-ros-bridge.git\ncd agent-ros-bridge\n\n# Generate JWT secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Run example in Docker\ncd examples/quickstart\ndocker-compose up\n\n# Test connection\ncurl http://localhost:8765/health"},{"language":"bash","snippet":"# Install from PyPI\npip install agent-ros-bridge\n\n# Set required secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start bridge\nagent-ros-bridge --config config/bridge.yaml"},{"language":"python","snippet":"from agent_ros_bridge import Bridge\nfrom agent_ros_bridge.gateway_v2.transports.websocket import WebSocketTransport\n\n# Bridge requires JWT_SECRET env var\nbridge = Bridge()\nbridge.transport_manager.register(WebSocketTransport({\"port\": 8765}))\nawait bridge.start()"},{"language":"bash","snippet":"# Set required secret\nexport JWT_SECRET=$(openssl rand -base64 32)\n\n# Start bridge\nagent-ros-bridge --config config/bridge.yaml\n\n# Generate token for client\npython scripts/generate_token.py --secret $JWT_SECRET --role operator"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: agent-ros-bridge\nversion: 0.3.2\ndescription: Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.\nauthor: Agent ROS Bridge Team\nhomepage: https://github.com/webthree549-bot/agent-ros-bridge\nrepository: https://github.com/webthree549-bot/agent-ros-bridge.git\nlicense: MIT\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🤖\",\n        \"requires\": { \"bins\": [\"python3\"], \"env\": [\"JWT_SECRET\"] },\n        \"suggests\": { \"bins\": [\"docker\"] },\n        \"env\":\n          {\n            \"JWT_SECRET\":\n              {\n                \"description\": \"Required: Secret key for JWT authentication. Bridge will fail to start without this.\",\n                \"sensitive\": true,\n                \"required\": true,\n              },\n            \"BRIDGE_HOST\":\n              {\n                \"description\": \"Optional: Bind address (default: 127.0.0.1 for security)\",\n                \"sensitive\": false,\n                \"required\": false,\n              },\n          },\n        \"security\":\n          {\n            \"notes\": \"SECURITY-FIRST DESIGN: JWT authentication is always required and cannot be disabled. All examples run in Docker containers for isolation. Never expose to public networks without TLS and firewall rules.\",\n          },\n        \"install\":\n          [\n            {\n              \"id\": \"pip\",\n              \"kind\": \"pip\",\n              \"package\": \"agent-ros-bridge\",\n              \"label\": \"Agent ROS Bridge from PyPI\",\n            },\n            {\n              \"id\": \"docker\",\n              \"kind\": \"manual\",\n              \"label\": \"Docker Desktop (optional but recommended)\",\n              \"instruction\": \"For running examples in isolated containers. Install from https://www.docker.com/products/docker-desktop\",\n            },\n          ],\n        \"category\": \"robotics\",\n        \"tags\": [\"ros\", \"ros2\", \"robotics\", \"iot\", \"automation\", \"bridge\", \"embodied-intelligence\", \"arm\", \"navigation\"],\n      },\n  }\n\n---\n\n# 🤖 Agent ROS Bridge\n\n**Universal ROS1/ROS2 bridge for AI agents to control robots and embodied intelligence systems.**\n\n[![CI](https://github.com/webthree549-bot/agent-ros-bridge/actions/workflows/ci.yml/badge.svg)](https://github.com/webthree549-bot/agent-ros-bridge/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/agent-ros-bridge.svg)](https://pypi.org/project/agent-ros-bridge/)\n[![License](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## 🔐 Security-First Design\n\n**JWT authentication is always required and cannot be disabled.**\n\n```bash\n# Generate a secure secret (REQUIRED - no exceptions)\nexport JWT_SECRET=$(openssl rand -base64 32)\n```\n\nThe bridge will **fail to start** without JWT_SECRET. This is by design — security is not optional.\n\nSee [SECURITY.md](SECURITY.md) for complete security guidelines.\n\n---\n\n## Quick Start\n\n### Option 1: Docker Examples (Recommended for Testing)\n\nAll examples run in isolated Docker containers with simulated robo"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7865tvdsqd9pjav1n98at3qn80w4ws\",\n  \"slug\": \"agent-ros-bridge\",\n  \"version\": \"0.3.4\",\n  \"publishedAt\": 1771639355034\n}"},{"path":"config/bridge-auth.yaml","content":"# Agent ROS Bridge Configuration with Authentication Enabled\n\nbridge:\n  name: \"agent_ros_bridge\"\n  \n  transports:\n    websocket:\n      port: 8766\n      host: \"0.0.0.0\"\n      auth:\n        enabled: true\n        jwt_secret: \"8GpxD7Zp6L6bGl_bHbzLmNNaEpyKE3Sh1xEzO-dJfAo\"\n        jwt_expiry_hours: 24\n        api_keys:\n          \"ak_test123\":\n            user_id: \"test_user\"\n            roles: [\"operator\"]\n  \n  connectors:\n    ros:\n      auto_detect: false\n      endpoints: []\n\n  security:\n    enabled: false\n  \n  telemetry:\n    enabled: false"},{"path":"config/bridge.yaml","content":"# Agent ROS Bridge Configuration\n# Supports multiple ROS1/ROS2 endpoints (local and remote)\n\nbridge:\n  name: \"agent_ros_bridge\"\n  \n  transports:\n    websocket:\n      port: 8765\n      host: \"0.0.0.0\"\n      # Authentication settings\n      auth:\n        enabled: false  # Set to true to enable JWT/API key auth\n        jwt_secret: null  # Set via JWT_SECRET env var\n        jwt_expiry_hours: 24\n        api_keys: {}\n          # Example API keys:\n          # \"ak_1234567890abcdef\":\n          #   user_id: \"dashboard\"\n          #   roles: [\"operator\"]\n          # \"ak_0987654321fedcba\":\n          #   user_id: \"viewer\"\n          #   roles: [\"viewer\"]\n  \n  connectors:\n    ros:\n      # Auto-detect local ROS if no endpoints configured\n      auto_detect: true\n      \n      # Multiple ROS endpoints (local + remote)\n      # Uncomment and configure for mixed ROS1/ROS2 environments\n      endpoints: []\n        # Example 1: Local ROS2\n        # - id: \"local_ros2\"\n        #   ros_type: \"ros2\"\n        #   ros_distro: \"jazzy\"\n        #   host: \"localhost\"\n        #   domain_id: 0\n        #   auto_discover: true\n        \n        # Example 2: Local ROS1\n        # - id: \"local_ros1\"\n        #   ros_type: \"ros1\"\n        #   ros_distro: \"noetic\"\n        #   host: \"localhost\"\n        #   port: 11311\n        #   auto_discover: true\n        \n        # Example 3: Remote ROS2 robot\n        # - id: \"warehouse_bot_01\"\n        #   ros_type: \"ros2\"\n        #   ros_distro: \"humble\"\n        #   host: \"192.168.1.100\"\n        #   domain_id: 42\n        #   auto_discover: true\n        #   topics:\n        #     - \"/cmd_vel\"\n        #     - \"/odom\"\n        #     - \"/scan\"\n        \n        # Example 4: Dual ROS1 + ROS2\n        # - id: \"legacy_arm\"\n        #   ros_type: \"ros1\"\n        #   ros_distro: \"noetic\"\n        #   host: \"arm-robot.local\"\n        # - id: \"new_base\"\n        #   ros_type: \"ros2\"\n        #   ros_distro: \"humble\"\n        #   host: \"mobile-base.local\"\n        #   domain_id: 0\n\n  security:\n    enabled: false\n  \n  telemetry:\n    enabled: true\n    metrics_port: 9090"},{"path":"config/debug_config.yaml","content":"# Debug Config\nlogging:\n  level: \"INFO\"\n  console_logging: true\n  log_format: \"%(asctime)s - %(name)s - %(levelname)s - %(message)s\"\n  date_format: \"%Y-%m-%d %H:%M:%S\"\nmonitoring:\n  metrics: [\"cpu\", \"memory\", \"latency\"]\n  realtime_dashboard: true\ndebug:\n  mock_mode_default: false"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1342,"uniquenessScore":42,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:30:31.173Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}