PassiveIntent (passiveintent.dev) – a TypeScript SDK that runs a behavioral intent model entirely inside the user's browser. No events leave the tab, no backend, no analytics pipeline.
The core is a four-layer microkernel: a Bloom-filter-backed sparse Markov graph (FNV-1a hashing, 500-node cap with LRU eviction), a streaming anomaly detector using Welford's online algorithm for per-state mean/variance in O(1), and a typed event emitter that fires when Z-score thresholds cross.
Under 2ms per track() call. ~11kB gzipped. Nine typed behavioral states — from Conviction Buyer (trajectory Z < 1.5, suppress your upsell) to Compound Hesitation (two independent anomaly tests within 30s — fire your best offer once, here).
The motivation: every behavioral analytics stack I've evaluated has median 3–15 minute round-trip latency. Users make churn decisions in under 3 seconds. That gap isn't a data quality problem — it's a physics problem. The only solution is to put the model in the same process as the behavior.
Cold-start is solved with Blueprint JSON — a declarative prior you describe once, the engine boots calibrated on the first track() call. No warm-up period.
Core is AGPLv3. Happy to dig into the Markov eviction policy or the Welford implementation if anyone's curious.