Skip to content
TIME MACHINE

Rewind your warehouse.
Ask why.

Every scanner beep, every door close, every jockey move — event-sourced into a temporal projector. Scrub to any second in the last 30 days. Ask what caused a detention event. Get a DAG of contributing events with weighted causal links.

REPLAY · 09:42:31 T-7h 14m
1x
0
Replay Window
Event-sourced
0
Link Rules
Heuristic causal links
0
Default Window
Backward walk depth
DAG
Visual Graph
Weighted edges
TEMPORAL PROJECTOR

Every event, re-playable.

Scanner events, door state changes, jockey moves, driver check-ins, pick confirms — all event-sourced into hourly snapshots with forward-fold projection. Ask for state at 14:32:07 three Tuesdays ago, get it in under a second.

  • Hourly snapshots + event fold-forward from snapshot to target time
  • Scrub bar with red-flag event pins (detention, short, reassignment)
  • Play / pause / 0.5x / 1x / 2x / 5x speed control
  • Live / replay handoff with pause-on-scrub
TIMELINE · D6 DETENTION
09:41TRL-4821 checked in at Gate 1
09:41ONE assigned D6 — score 91/100
09:52Jockey dispatched Y3 → D6
10:47D6 dwell 60m alert — carrier notified
11:02Dwell 75m — second escalation
11:41Detention billable — 2h 0m over free time
LINK RULES

Seven heuristics. Weighted.

Given a root event, OMNIS walks backward through SIGNAL's event store and scores every candidate link. Same trailer counts heavy. Same dock in a 60-minute window counts medium. Same carrier counts light. Every link carries a weight, an explanation, and a kind — so the DAG is auditable, not a black box.

CAUSAL DAG · D6 DETENTION @ 11:41
ASN late — 08:12
Scan queue — 09:47
Forklift #4 offline — 09:30
Pallet backup — 10:02
Pallet backup
Staging full — 10:38
Staging full
D6 detention
link kinds used: same_trailer (0.9) · same_dock (0.75) · reassignment (0.8) · same_carrier (0.55)
CAUSAL DAG

Click a red flag. See the "why".

The DAG is not "AI magic". Every edge has a rule key, a weight, and an explanation you can inspect. This is auditable causality: you can disagree with a weight, override a link, and the engine learns from your correction.

  • Multi-level DAG, click any node to expand its ancestors
  • Per-edge rule_kind, weight, explanation, timestamp delta
  • Severity ranking on the root event (incident / major / minor)
  • Trace saved to causal_traces for audit + learning
CINEMATIC KEYFRAMES

90 seconds. Shift report style.

Every red-flag event auto-generates a cinematic: a sequence of keyframes with narration, camera moves on the 3D twin, and a plain-English summary. Auto-emailed to supervisors at shift end. No more staring at logs trying to piece together what happened.

  • ONE-narrated keyframes (optional LLM reasoning layer)
  • Camera hooks into twin scene at each event location
  • Severity → auto-delivery rules (incidents email immediately)
  • Exported as MP4 for carrier dispute evidence
00:00
09:41 — TRL-4821 arrives at Gate 1. Driver M. Rodriguez. Carrier: Maple Freight.
00:12
09:52 — Jockey dispatched to D6. Expected unload: 65 minutes based on 26-pallet load.
00:34
10:02 — Forklift #4 offline event detected. Scan velocity drops from 0.8 to 0.2/min.
00:51
10:47 — Dwell 60m alert fires. Carrier notified via webhook.
01:18
11:41 — Detention billable. 2h 0m over free time. $82.50 charge recorded.

Built for every integration.

Every trace is accessible programmatically. Audit-ready, BI-ready, dispute-ready.

// POST /api/causal/trace
POST /api/causal/trace
{
  "root_event_id": "evt_82bb4c...",
  "window_minutes": 120
}

// → returns DAG with nodes, edges, weights, severity
// GET /api/causal/traces
GET /api/causal/traces?limit=20

// → recent traces with summaries,
// cinematic_ready flag, severity tier

// GET /api/causal/trace/:id
GET /api/causal/trace/trc_9ff1ea...

Never ask "what happened" again.

Fifteen minute demo. We'll replay a real day in a real warehouse and show you the DAG.