Numerical by design
Moving statistics maintain rolling state. Filters, resampling, arithmetic, peak detection, and composed feature pipelines advance incrementally with each event.
DSP · TIME SERIES · INCREMENTALA language for continuous decisions
Write the computation in SQL, Python, or JavaScript. Replay it on history, inspect every decision, then keep the same stateful program running as new data arrives.
Loading synchronized BTC and ETH market history…
01 / STREAMING BY CONSTRUCTION
RtBot SQL compiles into a stateful operator graph. Each (time, value) tuple advances that graph incrementally, and an output appears only when the program has something to say.
02 / EVENT TIME, NOT ARRIVAL TIME
Every value carries its own timestamp. RtBot queues streams independently and evaluates a multi-stream expression only when event times match. One stream may lead, lag, or arrive in bursts; as long as each stream stays ordered, arrival timing does not change the causal result.
| TIME | A | B | A + B |
|---|
Result appears only when A(t) and B(t) both exist.
03 / REPRODUCIBLE BY CONTRACT
Run the same timestamped inputs through the same program and initial state. Packets may pause, burst, or interleave differently in physical time; the event-time output trace remains identical.
CONTRACT Each input preserves event-time order. Only the cross-stream wall-clock schedule changes.
04 / THE COMPUTATIONAL CORE
RtBot combines signal processing, keyed state, temporal composition, and decision logic in one small deterministic runtime.
Moving statistics maintain rolling state. Filters, resampling, arithmetic, peak detection, and composed feature pipelines advance incrementally with each event.
DSP · TIME SERIES · INCREMENTALEach entity can carry its own computation forward. Chained operators turn measurements into indicators, conditions, and decision outputs.
KEYED · STATEFUL · COMPOSABLEEvent time lives in the data. Given the same ordered input, graph, and floating-point platform, RtBot produces the same result without depending on wall-clock timing.
CAUSAL · REPLAYABLE · AUDITABLEThe native C++ core runs through Python, JavaScript/WASM, and Java—from a notebook or browser to a service embedded beside the data.
NATIVE · EMBEDDED · PORTABLE05 / WHERE IT FITS
RtBot earns its place when a decision depends on history, context, several signals, and exact timing—not merely the latest row.
Know when equipment, infrastructure, or a process begins to degrade—not merely when one reading crosses a line.
TYPICAL OUTPUT · DEGRADATION STATETurn fast-moving activity into explainable exceptions, flags, and escalations while preserving the evidence behind them.
TYPICAL OUTPUT · FLAG · ESCALATIONCombine several signals, persistence rules, and operating context before interrupting a line or involving an operator.
TYPICAL OUTPUT · HOLD · INTERVENTIONContinuously evaluate service, business, and control signals and emit the small number of changes downstream systems need.
TYPICAL OUTPUT · STATE CHANGE · OPPORTUNITY06 / CONCRETE PROOF
The rotating-machinery preset library maps published methods for the NASA IMS rolling-bearing run-to-failure dataset into executable SQL. The accompanying notebook replays the data, validates the suite, and documents every parameter choice.
Inspect the bearing presets07 / START FREE, STAY PORTABLE
Use RtBot directly inside applications you own. Explore and backtest in Python, make the computation tangible in JavaScript, then embed the same deterministic graph in a service.
Replay data frames, tune parameters, inspect intermediate outputs, and embed the native runtime in numerical workflows.
Open the Python guide →Run the same engine in browsers, workers, and JavaScript applications—like the live computation at the top of this page.
Open the JavaScript guide →Run the same graph inside native or JVM services and keep execution close to the systems that already own the data.
Inspect the runtime source ↗08 / FROM PROGRAM TO OPERATIONS
Katenaria packages a validated RtBot program for continuous operation inside your infrastructure: high-rate ingress, durable stateful execution, and reliable delivery of sparse decisions.
Accept and normalize high-volume observations from the systems already in place.
Execute stateful decision programs close to the stream and the data they depend on.
Deliver sparse decisions to applications, event buses, workflows, and user interfaces.
BEGIN WITH ONE DECISION
Bring one historical dataset and one decision worth making sooner. Build it with the free runtimes; when it is valuable enough to run continuously, we can help operate it in your infrastructure.