perplexity-cli
🧠 A simple command-line client for the Perplexity API. Ask questions and receive answers directly from the terminal! 🚀🚀🚀
High-performance, time-indexed object storage for robotics and industrial IoT
ReductStore is high-performance, time-indexed object storage for robotics and industrial IoT.
Store terabytes of images, video, sensor readings, logs, files, and ROS bags in their native binary formats. Every record is organized by timestamp and can be enriched with labels, so you can retrieve exactly the data you need by time range and operational context.
Instead of combining a time-series database, generic object storage, metadata indexes, and custom retention jobs, ReductStore provides one system for ingesting, organizing, retaining, and querying multimodal time-series data.
🚀 60k+ downloads • 🏭 100+ production deployments • 📦 1 PB+ managed data
⭐ 350+ GitHub stars • 🛠️ 4+ years of active development
ReductStore is ideal for scenarios where you have a continuous stream of binary data and your application has metadata that can be attached to the data as labels. If you ingest binary data with labels into a ReductStore instance, you can use it to:
In such scenarios, ReductStore can help you manage and transfer your data efficiently based on its metadata, without combining a TSDB and blob storage. This keeps your architecture simple and efficient.
The quickest way to get up and running is with Docker:
mkdir -p ./data
sudo chown -R 10001:10001 ./data
docker run -p 8383:8383 -v ${PWD}/data:/data \
-e RS_API_TOKEN=my-secret-token reduct/store:latest
Or download a Linux binary directly from the latest release:
curl -LO https://github.com/reductstore/reductstore/releases/latest/download/reductstore.x86_64-unknown-linux-gnu.tar.gz tar -xzf reductstore.x86_64-unknown-linux-gnu.tar.gz mkdir -p ./data RS_DATA_PATH=./data RS_API_TOKEN=my-secret-token ./reductstore
For a more in-depth guide, visit the Getting Started and Download sections.
After initializing the instance, you can start writing and querying data immediately. Here's a Python sample:
import asyncio
from reduct import Client
async def main():
async with Client("http://localhost:8383", api_token="my-secret-token") as client:
bucket = await client.create_bucket("my-bucket", exist_ok=True)
await bucket.write(
"camera-1",
b"hello, reductstore",
timestamp="2024-01-01T10:00:00Z",
labels={"device": "camera-1"},
)
async for record in bucket.query(
"camera-1",
start="2024-01-01T10:00:00Z",
stop="2024-01-01T10:00:01Z",
when={"&device": {"$eq": "camera-1"}},
):
print((await record.read_all()).decode())
asyncio.run(main())
Learn more and pick the next piece you need:
ReductStore uses a vendored protoc binary through Cargo, so contributors do not need to install Protocol Buffers manually. To check the workspace locally, run:
cargo check --workspace
ReductStore is not the best fit for every data storage problem. You should consider another solution when:
If you've found a bug, have ideas, built something with ReductStore, or want to contribute directly, here are the best places to jump in:
CHANGELOG.md for user-visible changes. If you want to propose a new feature or workflow, open an issue first or start the discussion on the community forum before writing code.Thanks to everyone who has contributed to ReductStore.
Your support fuels our passion and drives us to keep improving.
Together, let's build better storage for robotics and industrial data. 🚀
more like this
🧠 A simple command-line client for the Perplexity API. Ask questions and receive answers directly from the terminal! 🚀🚀🚀
Code for IoT Journal paper 'ML-MCU: A Framework to Train ML Classifiers on MCU-based IoT Edge Devices'
:hugs: AeroPath: An airway segmentation benchmark dataset with challenging pathology
search projects, people, and tags