No version for distro humble showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
rolling

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).
No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

reductstore_agent repository

reductstore_agent

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/reductstore/reductstore_agent.git
VCS Type git
VCS Version main
Last Updated 2025-10-06
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
reductstore_agent 0.2.0

README

reductstore_agent

ROS 2 Jazzy & Rolling

reductstore_agent is a ROS 2 node that records selected topics into ReductStore, a high-performance storage and streaming solution. ReductStore is an ELT-based system for robotics and industrial IoT data acquisition. It ingests and streams time-series data of any size—images, sensor readings, logs, files, MCAP, ROS bags—and stores it with time indexing and labels for ultra-fast retrieval and management.

This agent is fully configurable via YAML and designed to solve storage, bandwidth, and workflow limitations commonly found in field robotics. It streams data to ReductStore in near real-time with optional compression, splitting, dynamic labeling, and per-pipeline controls.

System Requirements

To use this agent, you must have a running instance of ReductStore. You can start a local instance using Docker, install it via Snap or from binaries. Refer to the official guide for setup instructions: ReductStore Getting Started Guide

This agent is tested with:

  • ROS 2: Jazzy and Rolling
  • OS: Ubuntu 24.04 (Noble)
  • Python: 3.12

Motivation

  • Continuous recording: Prevent oversized rosbag files by splitting recordings by time, size, or topic groups.
  • Bandwidth constraints: Filter and compress data before optionally replicating to a central server or the cloud.
  • Manual workflows: Replace manual drive swaps, custom scripts, and bag handling with automated data management.
  • Lack of filtering: Apply dynamic labels (e.g., mission ID) to tag, search, and retrieve specific data segments.
  • Ubuntu Core: Future Snap integration to support deployment as part of the Ubuntu Core observability stack.

Structure

The agent is configured using a YAML file. Each pipeline is an independent logging unit (only one type of pipeline is supported at the moment where all topics are recorded continuously without filtering).

/**/*:
  ros__parameters:
    storage: # local ReductStore instance
      url: "http://localhost:8383"
      api_token: "access_token"
      bucket: "ros_data"
      quota_type: "FIFO"
      quota_size: "200GB"
    pipelines:
      telemetry:
        filename_mode: "timestamp"
        include_topics:
          - "/camera/.*"
        exclude_topics:
          - "/camera/ignore"
        static_labels:
          source: telemetry
          robot: alpha
        split:
          max_duration_s: 3600
          max_size_bytes: 10000

See the Configuration section for details on available parameters.

Installing

This package requires Python dependencies (reduct-py, mcap, mcap-ros2-support) that are not provided by ROS 2. To keep them isolated while still allowing colcon and ros2 (installed system-wide) to work, we create a virtual environment with:

python3 -m venv .venv --system-site-packages

The --system-site-packages flag is important because it lets the venv access ROS’s system-installed Python packages (rclpy, rosbag2_py, etc.). Without it, colcon and ROS Python APIs won’t be visible inside the venv, and ros2 run would fail to find your node.

Build and Run

# 1. Create a workspace and clone the repository
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/reductstore/reductstore_agent.git
cd ..

# 2. Install system dependencies
rosdep install --from-paths src --ignore-src -r -y

# 3. Create and activate the virtual environment
python3 -m venv .venv --system-site-packages
source .venv/bin/activate

# 4. Install Python dependencies
pip install -U reduct-py mcap mcap-ros2-support

# 5. Build the package with colcon using the venv Python
python -m colcon build --symlink-install

# 6. Source the workspace and run the node
source install/setup.bash
ros2 run reductstore_agent recorder --ros-args --params-file ./config/params.yml

There is also a Snap package available for easier installation and updates.

Configuration

The configuration file is a YAML file that defines the storage settings and pipelines. The storage section contains ReductStore connection details, and the pipelines section defines the individual pipelines for recording data.

File truncated at 100 lines see the full file

CONTRIBUTING

Any contribution that you make to this repository will be under the MIT license, as dictated by that license.

Any contribution that you make to this repository will be under the MIT license, as dictated by that [license](https://opensource.org/licenses/MIT).