Use Case

Edge-to-Cloud Telemetry

Never lose a data point. Never miss a beat. Stream telemetry from any source at any rate — Tetrapus handles batching, compression, buffering, persistence, and analytics automatically.

SDK integration guide

What you can do

IoT Sensor Networks

10,000 sensors at 10 Hz with automatic compression. The spill buffer survives network outages — your data arrives when connectivity returns.

High-Frequency Trading

Sub-millisecond tick data at 5,000 Hz. Priority routing ensures critical alerts bypass normal batching.

Field Operations

Intermittent satellite links with automatic store-and-forward. Adaptive bandwidth adjusts batch size and compression based on link quality.

How it works

graph LR SRC["Your Application"] --> SDK["Tetrapus SDK<br/><small>~50ns non-blocking send</small>"] SDK --> QUIC["QUIC + TLS 1.3<br/><small>Batched, compressed</small>"] QUIC --> SRV["Tetrapus Server<br/><small>Validate → Dedup → Route</small>"] SRV --> WAL["WAL<br/><small>Durable persistence</small>"] WAL --> EB["EventBus<br/><small>Live panes</small>"] WAL --> CH["ClickHouse<br/><small>Historical analytics</small>"] SDK -.->|offline| SPILL["SpillBuffer<br/><small>Disk-backed</small>"] SPILL -.->|reconnect| QUIC

Key capabilities

CapabilityWhat it does
Zero Data LossDisk-backed spill buffer (64 MiB default) survives crashes and network outages. Messages replay in order on reconnect.
Adaptive BandwidthRTT-based link quality estimation automatically adjusts batch size (1.4–8 KB) and enables compression on degraded links.
Priority RoutingCritical alerts bypass batching and send immediately. Low-priority bulk data uses 4x larger batches for efficiency.
Multi-SourceQUIC SDK (primary), plus HTTP, Kafka, and S3 adapters for enterprise integration.
Sub-50ns SendNon-blocking fire-and-forget from your application thread via crossbeam bounded channels.
ClickHouse AnalyticsPetabyte-scale time-series storage with H3 hexagonal spatial indexing for sub-second aggregation.
Anomaly DetectionServer-side Z-score and Pearson correlation computed in ClickHouse CTEs — no raw data transferred to client.
Computed FieldsDerive new fields with arithmetic, group aggregations, windowed temporal functions, and rate-of-change calculations.

SDK integration

Rust
use tetrapus_sdk::{TetrapusClient, TetrapusConfig, SchemaId};

let config = TetrapusConfig::new("127.0.0.1:4433")
    .with_queue_capacity(50_000)
    .with_batch_size(1400)
    .with_flush_interval(Duration::from_millis(10));

let client = TetrapusClient::connect(config).await?;

// Non-blocking — pushes to queue in ~50ns
client.send_raw(schema_id, &payload)?;

Workload tuning

WorkloadQueueBatchFlushCompression
IoT sensors 10 Hz1,0001,400 B100 msNone
Fleet GPS 100 Hz10,0001,400 B10 msNone
F1 telemetry 1 kHz50,0004,096 B5 msLz4
HFT tick data 5 kHz100,0008,192 B1 msLz4

Ready to see the full picture?

One docker pull. Full stack in minutes. No build tools required.