The detection cycle
Each cycle the engine pulls a fresh snapshot from its wired sources, builds a feature view of the market, and runs every registered rule against it:- Read. It fetches the latest state from each connected source — EVM lending markets (Aave v3, Compound v3, Euler v2, SparkLend, Morpho Blue), Stellar venues (Blend, SDEX, Aquarius, Sushi), and an Ethereum RPC for on-chain reads.
- Build features. It aggregates that data into a feature snapshot: oracle staleness, failed-transaction rate, utilization, liquidity imbalance, and holder concentration. Each feature carries a data-quality score that rises with how many real sources backed it, so a thin snapshot is visibly thin rather than silently confident.
- Evaluate. It runs protocol rule packs (lending, DEX, and governance) plus the core risk cycle, producing findings where a rule trips.
What a finding carries
Every finding is a structured record, not a free-text alert. It names the protocol and chain it concerns, the rule pack that produced it, a root cause, and a recommended action, alongside three scores:- Severity — how serious the condition is.
- Confidence — how strongly the data supports it.
- Blast radius — how much of the relevant exposure the condition touches.
From finding to your inbox
Findings flow into the alerts platform — the same inbox that carries your rule-based alerts. The engine registers detection as a platform-owned alert source, so detector findings appear in/alerts next to everything else, filterable by source. There is nothing extra to wire up: if you can see alerts, you can see findings.
The engine also keeps a short rolling history of recent findings and persists it across restarts, so a pod restart does not blank your recent detection history.