STATUS

All systems operating

Measured at 2026-10-21 04:37:11 UTC, at most 30 seconds ago. Nothing here is set by hand, and every row is a real read. KYTGate fails closed: a stale list or an unreachable network puts screenings in TECHNICAL_HOLD, never ALLOW.

Serving commit 80ea1d2 of main. If a push has landed since and this has not changed, the deployment did not build and everything above describes the previous release.

Sanctions lists

SourceAddressesLast fetchedAgeState
EU82026-10-21 00:01Z4.6hfresh
UK612026-10-21 00:00Z4.6hfresh
OFAC10632026-10-21 00:00Z4.6hfresh

Re-synced at least every 6 hours. "aging" = older than 9h (a missed run); "stale" = older than 48h, the default point at which screenings hold.

Scheduled jobs

JobExpectedLast runResultState
dailyevery 24h2026-10-21 04:20Zokok
sync-sanctionsevery 6h2026-10-21 00:01Zokok
rescreenevery 6h2026-10-21 00:30Zokok
webhooksevery 10 min2026-10-21 04:30Zokok
slaevery 1h2026-10-21 04:10Zokok
issuer-freezesevery 1h2026-10-21 04:00Zokok
canariesevery 3h2026-10-21 03:40Zokok
isolationevery 168h2026-10-19 05:50Zokok

Blockchain reads

NetworkReachableLatencyHead block
ethereumyes57 ms26238622
ethereum · backfill endpointyes74 ms26238622
bscyes72 ms128875258
baseyes73 ms52884042
base · backfill endpointyes73 ms52884042
arbitrumyes83 ms516810747
arbitrum · backfill endpointyes102 ms516810744
polygonyes83 ms95901376
avalancheyes80 ms98117838
optimismyes67 ms158479327
optimism · backfill endpointyes197 ms158479327
tronyes522 ms87294785

Webhook queue

pending deliveries 0 · failed in last 24h 0 · retries every 10 minutes with backoff up to 12h · events: screening.completed, case.opened, case.closed, case.sla_breached, reconciliation.mismatch, provider.conflict, case.docs_requested, case.remediation_submitted

Monitoring this yourself

GET /api/health returns 503 rather than 200 when KYTGate cannot do its job: the database is unreachable, or the newest sanctions snapshot is past the age at which screenings hold. Point your own uptime monitor at it. It needs no key and returns no tenant data. Everything above is read when you load this page, from a measurement at most 30 seconds old. Three separate checks also look for failures that make no noise: a sanctions source that still downloads but has stopped changing, a scheduled job that has stopped running, and an optional provider that has quietly been failing more often than not.

Incidents affecting a tenant's data are notified to that tenant within 48 hours (see security). API: GET /api/public/status.