Any Data Format
Store multimodal time-indexed data of any size: images, video, LiDAR, IMU, logs, files, ROS bags and more.
Fleet Scale Collection
Collect from many robots or devices and replicate to the cloud over intermittent connectivity.
Lower Cost at Scale
Use S3 compatible blob storage and batch records into fewer objects to reduce storage and API costs.
Best Performance
High throughput ingestion and fast retrieval of exact time ranges for replay, debugging, and training.
Developers choose ReductStore
Trusted by robotics and IIoT engineers to process billions of time-indexed records



Multimodal Time-Indexed Storage
Store records of any type and size, indexed by time: log files, images, video, LiDAR, ROS bags and more.
SQL with DataFusion
Run SQL on JSON, CSV, Parquet, and Protobuf records on the server and export the results as bigger batches.
Labels and Filtering
Attach labels to records and filter reads and replication to keep only the data you need.
Selective Edge to Cloud Replication
Replicate using rules based on labels or events, even with limited bandwidth and intermittent connectivity.
Batching for Lower Cloud Cost
Batch records into fewer objects for S3 compatible storage to reduce API overhead and cloud cost.
No Hard Size Limits
Handle small sensor samples to large blobs like video clips, frames, point clouds, and files.
Retention and Quotas
FIFO quotas based on volume keep edge disks from filling up and maintain a rolling window of recent data.
Fast Event Retrieval
Query exact time ranges and filter by labels to replay events and debug without scanning hour long logs.
Extensible Query Engine
Use extensions to transform data during queries, like resizing images, filtering CSV, or extracting ROS topics.
Collect
Get data in from any machine
- Python
- JavaScript
- Go
- C++
- Rust
- cURL
import time
import asyncio
from reduct import Client, Bucket
async def main():
client = Client('http://127.0.0.1:8383')
bucket: Bucket = await client.create_bucket("my-bucket", exist_ok=True)
ts = time.time_ns() / 1000
await bucket.write("entry-1", b"Hey!!", ts)
async with bucket.read("entry-1", ts) as record:
data = await record.read_all()
print(data)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Query
Use the data where it lives
- vs TimescaleDB
- vs MongoDB
- vs MinIO
| Record Size | Read Speed (%) | Write Speed (%) |
|---|---|---|
| 1 MB | +671% | +1604% |
| 100 KB | +603% | +924% |
| 10 KB | +313% | +297% |
| 1 KB | +28% | +198% |
Operate
Run it every day
Typical Use Cases
Go deeper with the white paper
The architecture, benchmarks against MinIO, TimescaleDB, and MongoDB, and three use cases end to end: robotics, industrial IoT, and drones.
Read the white paper




