Catalog PyPI
PACKAGE EXPLORERView in registry

agent-ros-bridge

PyPI

Universal interface for AI agents to control ROS robots via natural language

agentsaiautomationnatural-languageopenclawroboticsrosros2
Versions collected1
Direct dependencies19From release 0.6.8
Last observed20 Oct, 23:13 UTC

README

Version 0.6.8 documentation

Agent ROS Bridge 🔒

Version Python Tests Coverage Safety Gate 2 License

The Safety-First Production Gateway for AI-to-Robot Integration
When robots matter, safety comes first.

Why Us? • Quick Start • Safety First • Comparison • Docs


Why Agent ROS Bridge?

Unlike diagnostic tools (NASA ROSA) or research platforms (ROS-LLM), Agent ROS Bridge is the only production-ready gateway with built-in safety validation.

The Safety Problem

Deploying LLM-controlled robots in production is dangerous:

  • AI hallucinations can damage equipment
  • Wrong commands can injure humans
  • No validation of AI decisions
  • No learning from operator corrections

Our Solution

🛡️ Safety-First Architecture:
├── Human-in-the-Loop (enforced by default)
├── Shadow Mode Validation (200+ hours required)
├── Simulation Testing (10K scenarios, 95.93% success)
├── Gradual Rollout (0% → 100% autonomy)
└── Emergency Stop (always available)

Comparison

FeatureAgent ROS BridgeNASA ROSAROS-LLM
Safety Validation✅ Shadow mode❌ None❌ None
Human-in-the-Loop✅ Enforced⚠️ Optional❌ No
Production Tests✅ 2,021 tests❓ Unknown❓ Unknown
Simulation✅ 10K scenarios⚠️ Basic❌ No
Multi-Protocol✅ 4 protocols❌ CLI only❌ ROS2 only
Fleet Support✅ Multi-robot❌ Single❌ Single
Published Research📝 Whitepaper in progress✅ arXiv✅ Nature

Full Comparison →


Quick Start

Installation

pip install agent-ros-bridge

Basic Usage

from agent_ros_bridge import RobotAgent

# Create agent with SAFETY enforced
agent = RobotAgent(
    device_id='bot1',
    llm_provider='moonshot',
    require_confirmation=True,  # Human approval required
)

# AI proposes, human approves, robot executes
result = agent.execute("Go to the kitchen")

print(f"Success: {result.success}")
print(f"AI confidence: {result.ai_confidence:.2f}")
print(f"Human approvals: {result.human_approvals}")

Output:

============================================================
🛡️  SAFETY STATUS
============================================================
Device: bot1 (mobile_robot)
Autonomous Mode: False ✅
Human-in-the-Loop: True ✅
Shadow Mode: True ✅
Validation Status: simulation_only
============================================================

🤖 AI Proposal: navigate_to(kitchen)
👤 Human: Approve? (y/n): y
✅ Executed successfully

Safety First

Safe-by-Default Configuration

# config/global_config.yaml
safety:
  autonomous_mode: false              # Human approval required
  human_in_the_loop: true             # All AI proposals need approval
  shadow_mode_enabled: true           # Collect validation data
  min_confidence_for_auto: 0.95       # High confidence threshold
  gradual_rollout_stage: 0            # Start at 0% autonomy
  safety_validation_status: "simulation_only"
  required_shadow_hours: 200.0        # Target for validation
  min_agreement_rate: 0.95            # Required agreement %

Deployment Stages

Stage 0: Simulation-Only (Current)
├── ✅ 10K scenarios tested
├── ✅ 95.93% success rate
└── ⚠️ No real-world validation yet

Stage 1: Supervised Operation
├── Human approves all actions
├── Shadow mode collects data
└── Target: 200+ hours, >95% agreement

Stage 2: Gradual Rollout
├── 10% → 25% → 50% → 75% → 100%
├── High confidence only
└── Monitor at each stage

Stage 3: Full Autonomy
├── After validation complete
├── Emergency stop always available
└── Continuous monitoring

Safety Documentation →


Architecture

AI Agents ─┬─ WebSocket ─┐
           ├─ gRPC ──────┼──► ┌─────────────┐
           ├─ MQTT ──────┤    │   Gateway   │
           └─ TCP ───────┘    └──────┬──────┘
                                     │
                    ┌────────────────┼────────────────┐
                    ▼                ▼                ▼
            ┌──────────────┐  ┌──────────────┐  ┌──────────┐
            │Safety Layer  │  │ Shadow Mode  │  │  ROS1/   │
            │(Validation)  │  │ (Data Coll.) │  │  ROS2    │
            └──────────────┘  └──────────────┘  └──────────┘

Key Components

ComponentPurposeStatus
GatewayMulti-protocol support✅ Stable
Safety LayerValidation & enforcement✅ Implemented
Shadow ModeAI-human decision logging✅ Active
Simulation10K scenario testing✅ Complete
FleetMulti-robot orchestration✅ Beta

Features

🛡️ Safety & Validation

  • Shadow Mode - Log AI proposals vs human decisions
  • Human-in-the-Loop - Enforced by default
  • Simulation Testing - 10K scenarios before deployment
  • Gradual Rollout - Increase autonomy slowly
  • Emergency Stop - Always available

🌐 Multi-Protocol

  • WebSocket - Real-time bidirectional
  • gRPC - High-performance RPC
  • MQTT - IoT messaging
  • TCP - Raw socket support

🤖 Universal Support

  • Mobile Robots - Navigation, mapping
  • Drones - Flight control, aerial missions
  • Robot Arms - Manipulation, grasping
  • Humanoids - Walking, balancing
  • Sensors - Data collection, monitoring

🧠 AI Integration

  • Multi-LLM - OpenAI, Moonshot, Anthropic
  • Intent Parsing - Natural language understanding
  • Context Awareness - Scene understanding
  • Multi-Language - English, Chinese, +4 more

Documentation


Web Dashboard

Agent ROS Bridge includes a modern web dashboard for robot control and monitoring.

Features

  • 🎮 Robot Control - D-pad interface, natural language commands
  • 📊 Real-time Telemetry - Position, velocity, battery, sensors
  • 🧠 Shadow Mode Metrics - AI-human agreement tracking
  • 🛡️ Safety Status - Validation gates, deployment readiness
  • 🚁 Fleet Management - Multi-robot coordination

Quick Start

# Start bridge + web dashboard
docker-compose --profile web up -d

# Access dashboard
open http://localhost:8081

Option 2: Host (Development)

# Start bridge
agent-ros-bridge --websocket-port 8765

# In another terminal, serve dashboard
cd agent_ros_bridge/web
python3 -m http.server 8081

# Access dashboard
open http://localhost:8081

Dashboard URLs

DashboardURLPurpose
Control Dashboardhttp://localhost:8081Robot control + shadow metrics
3D Visualizationhttp://localhost:8080Gazebo/3D view (in ros2_jazzy)
Grafanahttp://localhost:3000System monitoring

WebSocket Connection

The dashboard connects to the bridge via WebSocket:

  • URL: ws://localhost:8765
  • Protocol: JSON messages
  • Auth: JWT token (if enabled)

Full Dashboard Guide →


Installation

Prerequisites

  • Python 3.11+
  • ROS1 (Noetic) or ROS2 (Humble/Jazzy)
  • Docker (optional, for simulation)

PyPI Install

pip install agent-ros-bridge

Docker Install

docker pull agent-ros-bridge:jazzy-with-nav2
docker run -it agent-ros-bridge:jazzy-with-nav2

Development Install

git clone https://github.com/webthree549-bot/agent-ros-bridge.git
cd agent-ros-bridge
pip install -e ".[dev]"

Testing

# Run all tests
pytest tests/ -v

# Run with coverage
pytest tests/ --cov=agent_ros_bridge --cov-report=html

# Run safety-critical tests only
pytest tests/unit/safety/ -v

# Run simulation tests (requires Docker)
pytest tests/e2e/ -v

Current Status:

  • 2,021 tests passing
  • 65% code coverage
  • Gate 2 validation: PASSED (95.93% success)

Safety Certification Roadmap

MilestoneTargetStatus
Shadow Mode Data200 hours🟡 In Progress (0 hrs)
Agreement Rate>95%🟡 In Progress (0%)
Simulation Validation10K scenarios✅ PASSED (95.93%)
ISO 10218 ReviewQ3 2026⏳ Planned
Insurance ReviewQ4 2026⏳ Planned

Community


Citation

If you use Agent ROS Bridge in research, please cite:

@software{agent_ros_bridge,
  title = {Agent ROS Bridge: Safety-First Production Gateway for AI-to-Robot Integration},
  author = {Agent ROS Bridge Contributors},
  year = {2026},
  url = {https://github.com/webthree549-bot/agent-ros-bridge}
}

License

MIT License - See LICENSE for details.


Built with safety in mind for production robotics deployments.
When robots matter, safety comes first.

Downloads & popularity

3downloads
1-day window · source-reported counts20 Oct 2026
4321.50
2026-07-23: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-07-23–2026-07-232026-07-24: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-07-24–2026-07-242026-07-27: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-07-27–2026-07-272026-07-29: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-07-29–2026-07-292026-08-02: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-02–2026-08-022026-08-03: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-03–2026-08-032026-08-04: 3 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-04–2026-08-042026-08-05: 4 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-05–2026-08-052026-08-07: 7 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-07–2026-08-072026-08-08: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-08–2026-08-082026-08-09: 12 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-09–2026-08-092026-08-10: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-10–2026-08-102026-08-11: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-11–2026-08-112026-08-12: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-12–2026-08-122026-08-13: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-13–2026-08-132026-08-14: 6 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-14–2026-08-142026-08-15: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-15–2026-08-152026-08-16: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-16–2026-08-162026-08-17: 3 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-17–2026-08-172026-08-21: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-21–2026-08-212026-08-23: 3 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-23–2026-08-232026-08-24: 5 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-24–2026-08-242026-08-25: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-25–2026-08-252026-08-26: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-26–2026-08-262026-08-28: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-28–2026-08-282026-08-29: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-29–2026-08-292026-08-31: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-08-31–2026-08-312026-09-01: 4 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-01–2026-09-012026-09-07: 42 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-07–2026-09-072026-09-08: 3 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-08–2026-09-082026-09-10: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-10–2026-09-102026-09-14: 7 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-14–2026-09-142026-09-15: 12 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-15–2026-09-152026-09-16: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-16–2026-09-162026-09-20: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-20–2026-09-202026-09-21: 43 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-21–2026-09-212026-09-22: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-22–2026-09-222026-09-23: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-23–2026-09-232026-09-26: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-26–2026-09-262026-09-27: 21 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-27–2026-09-272026-09-28: 8 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-28–2026-09-282026-09-30: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-09-30–2026-09-302026-10-01: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-01–2026-10-012026-10-02: 6 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-02–2026-10-022026-10-04: 22 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-04–2026-10-042026-10-05: 4 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-05–2026-10-052026-10-06: 13 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-06–2026-10-062026-10-08: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-08–2026-10-082026-10-09: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-09–2026-10-092026-10-10: 18 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-10–2026-10-102026-10-11: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-11–2026-10-112026-10-12: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-12–2026-10-122026-10-13: 2 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-13–2026-10-132026-10-14: 7 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-14–2026-10-142026-10-15: 6 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-15–2026-10-152026-10-16: 1 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-16–2026-10-162026-10-17: 11 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-17–2026-10-172026-10-18: 5 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-18–2026-10-182026-10-20: 3 · observed 2026-10-21T12:29:40.4275323Z · period 2026-10-20–2026-10-20
23 Jul20 Oct

pypistats · 59 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-20 – 2026-10-2032026-10-21T12:29:40.4275323Z
2026-10-18 – 2026-10-1852026-10-21T12:29:40.4275323Z
2026-10-17 – 2026-10-17112026-10-21T12:29:40.4275323Z
2026-10-16 – 2026-10-1612026-10-21T12:29:40.4275323Z
2026-10-15 – 2026-10-1562026-10-21T12:29:40.4275323Z
2026-10-14 – 2026-10-1472026-10-21T12:29:40.4275323Z
2026-10-13 – 2026-10-1322026-10-21T12:29:40.4275323Z
2026-10-12 – 2026-10-1222026-10-21T12:29:40.4275323Z
2026-10-11 – 2026-10-1122026-10-21T12:29:40.4275323Z
2026-10-10 – 2026-10-10182026-10-21T12:29:40.4275323Z
2026-10-09 – 2026-10-0922026-10-21T12:29:40.4275323Z
2026-10-08 – 2026-10-0812026-10-21T12:29:40.4275323Z
2026-10-06 – 2026-10-06132026-10-21T12:29:40.4275323Z
2026-10-05 – 2026-10-0542026-10-21T12:29:40.4275323Z
2026-10-04 – 2026-10-04222026-10-21T12:29:40.4275323Z
2026-10-02 – 2026-10-0262026-10-21T12:29:40.4275323Z
2026-10-01 – 2026-10-0122026-10-21T12:29:40.4275323Z
2026-09-30 – 2026-09-3022026-10-21T12:29:40.4275323Z
2026-09-28 – 2026-09-2882026-10-21T12:29:40.4275323Z
2026-09-27 – 2026-09-27212026-10-21T12:29:40.4275323Z
2026-09-26 – 2026-09-2612026-10-21T12:29:40.4275323Z
2026-09-23 – 2026-09-2312026-10-21T12:29:40.4275323Z
2026-09-22 – 2026-09-2222026-10-21T12:29:40.4275323Z
2026-09-21 – 2026-09-21432026-10-21T12:29:40.4275323Z
2026-09-20 – 2026-09-2022026-10-21T12:29:40.4275323Z
2026-09-16 – 2026-09-1612026-10-21T12:29:40.4275323Z
2026-09-15 – 2026-09-15122026-10-21T12:29:40.4275323Z
2026-09-14 – 2026-09-1472026-10-21T12:29:40.4275323Z
2026-09-10 – 2026-09-1012026-10-21T12:29:40.4275323Z
2026-09-08 – 2026-09-0832026-10-21T12:29:40.4275323Z
2026-09-07 – 2026-09-07422026-10-21T12:29:40.4275323Z
2026-09-01 – 2026-09-0142026-10-21T12:29:40.4275323Z
2026-08-31 – 2026-08-3112026-10-21T12:29:40.4275323Z
2026-08-29 – 2026-08-2912026-10-21T12:29:40.4275323Z
2026-08-28 – 2026-08-2812026-10-21T12:29:40.4275323Z
2026-08-26 – 2026-08-2622026-10-21T12:29:40.4275323Z
2026-08-25 – 2026-08-2512026-10-21T12:29:40.4275323Z
2026-08-24 – 2026-08-2452026-10-21T12:29:40.4275323Z
2026-08-23 – 2026-08-2332026-10-21T12:29:40.4275323Z
2026-08-21 – 2026-08-2112026-10-21T12:29:40.4275323Z
2026-08-17 – 2026-08-1732026-10-21T12:29:40.4275323Z
2026-08-16 – 2026-08-1612026-10-21T12:29:40.4275323Z
2026-08-15 – 2026-08-1522026-10-21T12:29:40.4275323Z
2026-08-14 – 2026-08-1462026-10-21T12:29:40.4275323Z
2026-08-13 – 2026-08-1312026-10-21T12:29:40.4275323Z
2026-08-12 – 2026-08-1212026-10-21T12:29:40.4275323Z
2026-08-11 – 2026-08-1112026-10-21T12:29:40.4275323Z
2026-08-10 – 2026-08-1022026-10-21T12:29:40.4275323Z
2026-08-09 – 2026-08-09122026-10-21T12:29:40.4275323Z
2026-08-08 – 2026-08-0822026-10-21T12:29:40.4275323Z
2026-08-07 – 2026-08-0772026-10-21T12:29:40.4275323Z
2026-08-05 – 2026-08-0542026-10-21T12:29:40.4275323Z
2026-08-04 – 2026-08-0432026-10-21T12:29:40.4275323Z
2026-08-03 – 2026-08-0312026-10-21T12:29:40.4275323Z
2026-08-02 – 2026-08-0212026-10-21T12:29:40.4275323Z
2026-07-29 – 2026-07-2922026-10-21T12:29:40.4275323Z
2026-07-27 – 2026-07-2722026-10-21T12:29:40.4275323Z
2026-07-24 – 2026-07-2422026-10-21T12:29:40.4275323Z
2026-07-23 – 2026-07-2312026-10-21T12:29:40.4275323Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.6.813 Apr 202619

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

PENDING
webthree549-bot/agent-ros-bridge

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 23:13 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:295843f965d0dba0f7be56ba9782048e05f6365bfb42d694febb9939ada7e657