![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
clearpath_diagnostics |
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
Messages
Services
Plugins
Recent questions tagged foxglove_bridge at Robotics Stack Exchange
![]() |
foxglove_bridge package from foxglove_bridge repofoxglove_bridge |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.8.5 |
License | MIT |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/foxglove/ros-foxglove-bridge.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-06-30 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Foxglove
Authors
- Foxglove
foxglove_bridge
High performance ROS 1 and ROS 2 WebSocket bridge using the Foxglove WebSocket protocol, written in C++.
Motivation
Live debugging of ROS systems has traditionally relied on running ROS tooling such as rviz. This requires either a GUI and connected peripherals on the robot, or replicating the same ROS environment on a network-connected development machine including the same version of ROS, all custom message definitions, etc. To overcome this limitation and allow remote debugging from web tooling or non-ROS systems, rosbridge was developed. However, rosbridge suffers from performance problems with high frequency topics and/or large messages, and the protocol does not support full visibility into ROS systems such as interacting with parameters or seeing the full graph of publishers and subscribers.
The foxglove_bridge
uses the Foxglove WebSocket protocol, a similar protocol to rosbridge but with the ability to support additional schema formats such as ROS 2 .msg
and ROS 2 .idl
, parameters, graph introspection, and non-ROS systems. The bridge is written in C++ and designed for high performance with low overhead to minimize the impact to your robot stack.
Installation
Note: This project is under active development and binary releases of foxglove_bridge
might be quite outdated. For the latest features and bug fixes, consider building foxglove_bridge from source.
The foxglove_bridge
package is available for ROS 1 Melodic and Noetic, and ROS 2 Humble and Rolling. Earlier releases of ROS will not be supported due to API design and/or performance limitations. The package can be installed with the following command:
sudo apt install ros-$ROS_DISTRO-foxglove-bridge
Running the bridge
To run the bridge node, it is recommended to use the provided launch file:
ROS 1
roslaunch --screen foxglove_bridge foxglove_bridge.launch port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find foxglove_bridge)/launch/foxglove_bridge.launch">
<arg name="port" value="8765" />
<!-- ... other arguments ... -->
</include>
</launch>
ROS 2
ros2 launch foxglove_bridge foxglove_bridge_launch.xml port:=8765
<launch>
<!-- Including in another launch file -->
<include file="$(find-pkg-share foxglove_bridge)/launch/foxglove_bridge_launch.xml">
<arg name="port" value="8765"/>
<!-- ... other arguments ... -->
</include>
</launch>
Configuration
Parameters are provided to configure the behavior of the bridge. These parameters must be set at initialization through a launch file or the command line, they cannot be modified at runtime.
-
port: The TCP port to bind the WebSocket server to. Must be a valid TCP port number, or 0 to use a random port. Defaults to
8765
. -
address: The host address to bind the WebSocket server to. Defaults to
0.0.0.0
, listening on all interfaces by default. Change this to127.0.0.1
(or::1
for IPv6) to only accept connections from the local machine. -
tls: If
true
, use Transport Layer Security (TLS) for encrypted communication. Defaults tofalse
. -
certfile: Path to the certificate to use for TLS. Required when tls is set to
true
. Defaults to""
. -
keyfile: Path to the private key to use for TLS. Required when tls is set to
true
. Defaults to""
. -
topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted topic names. Defaults to
[".*"]
. -
service_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted service names. Defaults to
[".*"]
. -
param_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted parameter names. Defaults to
[".*"]
. -
client_topic_whitelist: List of regular expressions (ECMAScript grammar) of whitelisted client-published topic names. Defaults to
[".*"]
. -
send_buffer_limit: Connection send buffer limit in bytes. Messages will be dropped when a connection’s send buffer reaches this limit to avoid a queue of outdated messages building up. Defaults to
10000000
(10 MB). -
use_compression: Use websocket compression (permessage-deflate). It is recommended to leave this turned off as it increases CPU usage and per-message compression often yields low compression ratios for robotics data. Defaults to
false
. -
capabilities: List of supported server capabilities. Defaults to
[clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]
. -
asset_uri_allowlist: List of regular expressions (ECMAScript grammar) of allowed asset URIs. Uses the resource_retriever to resolve
package://
,file://
orhttp(s)://
URIs. Note that this list should be carefully configured such that no confidential files are accidentally exposed over the websocket connection. As an extra security measure, URIs containing two consecutive dots (..
) are disallowed as they could be used to construct URIs that would allow retrieval of confidential files if the allowlist is not configured strict enough (e.g.package://<pkg_name>/../../../secret.txt
). Defaults to["^package://(?:[-\w%]+/)*[-\w%]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$"]
. - (ROS 1) max_update_ms: The maximum number of milliseconds to wait in between polling
roscore
for new topics, services, or parameters. Defaults to5000
. - (ROS 1) service_type_retrieval_timeout_ms: Max number of milliseconds for retrieving a services type information. Defaults to
250
. - (ROS 2) num_threads: The number of threads to use for the ROS node executor. This controls the number of subscriptions that can be processed in parallel. 0 means one thread per CPU core. Defaults to
0
. - (ROS 2) min_qos_depth: Minimum depth used for the QoS profile of subscriptions. Defaults to
1
. This is to set a lower limit for a subscriber’s QoS depth which is computed by summing up depths of all publishers. See also #208. - (ROS 2) max_qos_depth: Maximum depth used for the QoS profile of subscriptions. Defaults to
25
. - (ROS 2) best_effort_qos_topic_whitelist: List of regular expressions (ECMAScript) for topics that should be forced to use ‘best_effort’ QoS. Unmatched topics will use ‘reliable’ QoS if ALL publishers are ‘reliable’, ‘best_effort’ if any publishers are ‘best_effort’. Defaults to
["(?!)"]
(match nothing). - (ROS 2) include_hidden: Include hidden topics and services. Defaults to
false
. - (ROS 2) disable_load_message: Do not publish as loaned message when publishing a client message. Defaults to
true
. - (ROS 2) ignore_unresponsive_param_nodes: Avoid requesting parameters from previously unresponsive nodes. Defaults to
true
.
Building from source
Fetch source and install dependencies
```bash cd <path/to/your/ros_ws> git clone https://github.com/foxglove/ros-foxglove-bridge.git src/ros-foxglove-bridge rosdep update
File truncated at 100 lines see the full file
Changelog for package foxglove_bridge
0.8.5 (2025-05-15)
- fix rolling/kilted builds due to resource_retriever API changes (#351)
- avoid requesting parameters from unresponsive nodes (#345)
- Update default [asset_uri_allowlist]{.title-ref} parameter to allow dashes (#347)
- reorganize devcontainer dockerfile (#350)
- Use RCLCPP_VERSION_GTE from rclcpp/version.h in generic_client.cpp (#344)
- Fixed logging typo (#343)
- Contributors: Hans-Joachim Krauch, Meet Gandhi, johannesschrimpf
0.8.4 (2025-02-21)
- also advertise channels for ROS1 topics without publishers (#341)
- Contributors: Hans-Joachim Krauch
0.8.3 (2025-02-03)
- add best_effort_qos_topic_whitelist param (#329)
- Add missing functional include in message_definition_cache.cpp (#334)
- Contributors: David Revay, Silvio Traversaro
0.8.2 (2024-12-1)
- Fix "no matching function" error on yocto kirkstone (#331)
- Contributors: Graham Harison
0.8.1 (2024-11-26)
- Improve Error Reporting and Reduce Log Redundancy (#327)
- Contributors: Robin Dumas
0.8.0 (2024-07-31)
- Fix usage of deprecated AsyncParametersClient constructor (#319)
- Add ROS2 JSON publishing support (#307)
- Contributors: Davide Faconti, Hans-Joachim Krauch
0.7.10 (2024-07-12)
- Make ROS1 service type retrieval more robust (#316)
- Contributors: Hans-Joachim Krauch
0.7.9 (2024-07-05)
- Fix parsing of IDL message definitions (#313)
- Support publishing client message as loaned message (#314)
- fix: remove extra ";" in websocket_server.hpp (#311)
- Fix rolling smoke tests crashing (#309)
- Contributors: Andrey Milko, Hans-Joachim Krauch
0.7.8 (2024-06-11)
- Fix srv definition parsing failing due to carriage return (#303)
- Contributors: Hans-Joachim Krauch
0.7.7 (2024-05-21)
- send service call failure operation (#298)
- Fix service definition parsing on ROS rolling (#293)
- Update docs to discourage users from using websocket compression (#297)
- Update README.md to remove '$ ' so that you can copy and run command (#294)
- Fix typo in ROS2 launch file example (#296)
- Contributors: Felipe Galindo, Hans-Joachim Krauch, Jacob Bandes-Storch, Roman Shtylman
0.7.6 (2024-02-26)
- Fix rolling builds (#289)
- Remove dual ROS 1+2 devcontainer, remove ROS Galactic from the support matrix (#285)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
- ros1_foxglove_bridge/launch/foxglove_bridge.launch
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- max_update_ms [default: 5000]
- send_buffer_limit [default: 10000000]
- nodelet_manager [default: foxglove_nodelet_manager]
- num_threads [default: 0]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- asset_uri_allowlist [default: ['^package://(?:[-\w%]+/)*[-\w%.]+\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- service_type_retrieval_timeout_ms [default: 250]
- ros2_foxglove_bridge/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]
- ros2_foxglove_bridge_sdk/launch/foxglove_bridge_launch.xml
-
- port [default: 8765]
- address [default: 0.0.0.0]
- tls [default: false]
- certfile [default: ]
- keyfile [default: ]
- topic_whitelist [default: ['.*']]
- param_whitelist [default: ['.*']]
- service_whitelist [default: ['.*']]
- client_topic_whitelist [default: ['.*']]
- min_qos_depth [default: 1]
- max_qos_depth [default: 10]
- num_threads [default: 0]
- send_buffer_limit [default: 10000000]
- use_sim_time [default: false]
- capabilities [default: [clientPublish,parameters,parametersSubscribe,services,connectionGraph,assets]]
- include_hidden [default: false]
- asset_uri_allowlist [default: ['^package://(?:[-\\w%]+/)*[-\\w%.]+\\.(?:dae|fbx|glb|gltf|jpeg|jpg|mtl|obj|png|stl|tif|tiff|urdf|webp|xacro)$']]
- ignore_unresponsive_param_nodes [default: true]