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
| Source | Addresses | Last fetched | Age | State |
|---|---|---|---|---|
| EU | 8 | 2026-10-21 00:01Z | 4.6h | fresh |
| UK | 61 | 2026-10-21 00:00Z | 4.6h | fresh |
| OFAC | 1063 | 2026-10-21 00:00Z | 4.6h | fresh |
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
| Job | Expected | Last run | Result | State |
|---|---|---|---|---|
| daily | every 24h | 2026-10-21 04:20Z | ok | ok |
| sync-sanctions | every 6h | 2026-10-21 00:01Z | ok | ok |
| rescreen | every 6h | 2026-10-21 00:30Z | ok | ok |
| webhooks | every 10 min | 2026-10-21 04:30Z | ok | ok |
| sla | every 1h | 2026-10-21 04:10Z | ok | ok |
| issuer-freezes | every 1h | 2026-10-21 04:00Z | ok | ok |
| canaries | every 3h | 2026-10-21 03:40Z | ok | ok |
| isolation | every 168h | 2026-10-19 05:50Z | ok | ok |
Blockchain reads
| Network | Reachable | Latency | Head block |
|---|---|---|---|
| ethereum | yes | 57 ms | 26238622 |
| ethereum · backfill endpoint | yes | 74 ms | 26238622 |
| bsc | yes | 72 ms | 128875258 |
| base | yes | 73 ms | 52884042 |
| base · backfill endpoint | yes | 73 ms | 52884042 |
| arbitrum | yes | 83 ms | 516810747 |
| arbitrum · backfill endpoint | yes | 102 ms | 516810744 |
| polygon | yes | 83 ms | 95901376 |
| avalanche | yes | 80 ms | 98117838 |
| optimism | yes | 67 ms | 158479327 |
| optimism · backfill endpoint | yes | 197 ms | 158479327 |
| tron | yes | 522 ms | 87294785 |
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.