📦

ReductBridge for IIoT

By ReductStore

View on Snapcraft.io
Version0.3.1-gitdf0e78d
Revision15
Size4.3 MB
LicenseApache-2.0
Confinementstrict
Basecore22

ReductBridge bridges live robotics and IIoT data in ReductStore


# Reduct Bridge

[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/reductstore/reduct-bridge)](https://github.com/reductstore/reduct-bridge/releases/latest)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/reductstore/reduct-bridge/ci.yml?branch=main)](https://github.com/reductstore/reduct-bridge/actions)
[![Docker Pulls](https://img.shields.io/docker/pulls/reduct/bridge)](https://hub.docker.com/r/reduct/bridge)
[![GitHub all releases](https://img.shields.io/github/downloads/reductstore/reduct-bridge/total)](https://github.com/reductstore/reduct-bridge/releases/latest)
[![codecov](https://codecov.io/gh/reductstore/reduct-bridge/branch/main/graph/badge.svg)](https://codecov.io/gh/reductstore/reduct-bridge)

ReductBridge bridges live robotics and IIoT data with long-term storage in ReductStore.
You can configure the bridge using a simple TOML file to define inputs, pipelines, and remotes.
Inputs produce data, pipelines route and modify it, and remotes store it.

## Inputs

An input is a data source. It reads data from a system and produces records for the bridge.

Supported input types include:

- [HTTP](src/input/http/README.md) - poll HTTP/HTTPS endpoints on a fixed interval and store response payloads with optional JSON/header label mapping.
- [Metrics](src/input/metrics/README.md) - collect host CPU, memory, and disk metrics as JSON records.
- [MQTT](src/input/mqtt/README.md) - subscribe to MQTT v3/v5 topics over mqtt:// or mqtts:// and store raw payloads with optional payload/property label mapping.
- [Shell](src/input/shell/README.md) - run shell commands on a fixed interval and store output lines as records.
- [ROS1](src/input/ros1/README.md) - subscribe to ROS1 topics, store ROS messages, and extract labels from message fields.
- [ROS2](src/input/ros2/README.md) - subscribe to ROS2 topics, store serialized CDR payloads, and extract labels from decoded message fields.

## Remotes

A remote is a data destination. It receives records from pipelines and writes them to external storage.

Supported remote types include:

- [ReductStore](src/remote/reduct/README.md) - write pipeline records and attachments to ReductStore with configurable batching.

## Pipelines

Pipelines connect one or more inputs to one remote.

``toml
# Pipeline definition path:
# [pipelines.<pipelinename>]
[pipelines.telemetry]

# Required: remote name from [[remotes.*]].
remote = "local"

# Required: one or more input names from [inputs.*.*].
inputs = ["ros
local"]

# Optional label rules (default = []):
# 1) Static labels:
# { static = { source = "robot" }, to = "*" }
# - adds labels to matching target entries
# 2) Copy labels from one entry to another:
# { from = "time", labels = ["timestamp"], to = "echo" }
# - remembers labels seen on matching source entries
# - applies them to matching target entries
labels = [
{ static = { source = "ros1" }, to = "*" }
]
`

## Supported Formats

ReductBridge supports different payload formats.
Support means ReductBridge can parse payloads, extract labels, and, when schema information is available, store that schema in ReductStore.

- JSON: find values by field path (example: [examples/mqttconfig.toml](examples/mqttconfig.toml)).
- HTTP input: poll HTTP/HTTPS endpoints and extract optional header/JSON labels (example: [examples/httpconfig.toml](examples/httpconfig.toml)).
- Protobuf: find values by field path (with schema) or by field ID/type (example: [examples/mqttprotobufconfig.toml](examples/mqttprotobufconfig.toml)).
- ROS formats: decode ROS message payloads for labels and store the payloads as records (example: [examples/rosconfig.toml](examples/rosconfig.toml)).

## Installation

ReductBridge is published in build types named after Cargo feature bundles:
ros1, ros2, and iot`.
Choose the build type for the input family you need.

### Build Types

Published packages and Docker images are split into these build types so each artifact only includes the dependencies needed for its input family.

| B...

Update History

0.3.0-gitaa4fb73 (12)0.3.1-gitdf0e78d (15)
4 Jun 2026, 09:30 UTC
0.2.1-git96928c5 (6)0.3.0-gitaa4fb73 (12)
2 Jun 2026, 10:15 UTC
0.2.0-git5cc34b9 (3)0.2.1-git96928c5 (6)
19 May 2026, 14:00 UTC
0.1.2-git61067c5 (1)0.2.0-git5cc34b9 (3)
11 May 2026, 08:45 UTC
0.1.2-git61067c5 (1)
4 May 2026, 14:45 UTC

Published4 May 2026, 14:38 UTC

Last updated4 Jun 2026, 09:12 UTC

First seen4 May 2026, 14:45 UTC