{
  "page": {
    "id": "deference",
    "name": "Deference",
    "url": "https://deference.si/status",
    "time_zone": "Etc/UTC",
    "updated_at": "2026-10-20T17:48:34.920Z"
  },
  "status": {
    "indicator": "minor",
    "description": "Degraded performance"
  },
  "components": [
    {
      "id": "gateway",
      "name": "API gateway",
      "description": "The /v1 API: chat completions, messages, responses and embeddings.",
      "status": "operational",
      "position": 1,
      "group": false,
      "only_show_if_degraded": false,
      "updated_at": "2026-10-20T17:48:21.000Z",
      "checked_at": "2026-10-20T17:48:21.000Z",
      "age_seconds": 14,
      "source": "probe",
      "latency_ms": 82,
      "uptime_90d": 1,
      "median_latency_ms_90d": 139,
      "detail": "HTTP 200 in 82 ms"
    },
    {
      "id": "upstream",
      "name": "Model upstream",
      "description": "Our model provider (OpenRouter): reachability, a real one-token completion and recent traffic.",
      "status": "operational",
      "position": 2,
      "group": false,
      "only_show_if_degraded": false,
      "updated_at": "2026-10-20T17:48:21.000Z",
      "checked_at": "2026-10-20T17:48:21.000Z",
      "age_seconds": 14,
      "source": "probe",
      "latency_ms": 271,
      "uptime_90d": 1,
      "median_latency_ms_90d": 280,
      "detail": "metadata ok (HTTP 200 in 271 ms); completion (3 min ago): mistralai/mistral-nemo answered in 809 ms"
    },
    {
      "id": "rpc",
      "name": "Chain RPC",
      "description": "The blockchain node we read and write through, and how fresh its newest block is.",
      "status": "operational",
      "position": 3,
      "group": false,
      "only_show_if_degraded": false,
      "updated_at": "2026-10-20T17:48:21.000Z",
      "checked_at": "2026-10-20T17:48:21.000Z",
      "age_seconds": 14,
      "source": "chain",
      "latency_ms": 43,
      "uptime_90d": 1,
      "median_latency_ms_90d": 63,
      "detail": "block 26235388 in 43 ms, 11 s old"
    },
    {
      "id": "indexer",
      "name": "Chain indexer",
      "description": "Confirmed activations become service credit once the indexer has seen them.",
      "status": "operational",
      "position": 4,
      "group": false,
      "only_show_if_degraded": false,
      "updated_at": "2026-10-20T17:48:21.000Z",
      "checked_at": "2026-10-20T17:48:21.000Z",
      "age_seconds": 14,
      "source": "chain",
      "latency_ms": null,
      "uptime_90d": 0.99907,
      "median_latency_ms_90d": null,
      "detail": "2 blocks behind (cursor 26235374, confirmed head 26235376)"
    },
    {
      "id": "keeper_eth",
      "name": "Keeper ETH balance",
      "description": "ETH available for the keeper's on-chain transactions.",
      "status": "operational",
      "position": 5,
      "group": false,
      "only_show_if_degraded": false,
      "updated_at": "2026-10-20T16:59:52.659Z",
      "checked_at": "2026-10-20T16:59:52.659Z",
      "age_seconds": 2922,
      "source": "balance",
      "latency_ms": null,
      "uptime_90d": 1,
      "median_latency_ms_90d": null,
      "detail": "Balance meets the configured minimum."
    },
    {
      "id": "openrouter_balance",
      "name": "OpenRouter balance",
      "description": "Provider credit available for model requests.",
      "status": "degraded_performance",
      "position": 6,
      "group": false,
      "only_show_if_degraded": false,
      "updated_at": "2026-10-20T16:59:52.663Z",
      "checked_at": "2026-10-20T16:59:52.663Z",
      "age_seconds": 2922,
      "source": "balance",
      "latency_ms": null,
      "uptime_90d": 1,
      "median_latency_ms_90d": null,
      "detail": "Balance is below the configured minimum."
    },
    {
      "id": "website",
      "name": "Website",
      "description": "The marketing site, docs and dashboard.",
      "status": "operational",
      "position": 7,
      "group": false,
      "only_show_if_degraded": false,
      "updated_at": "2026-10-20T17:48:21.000Z",
      "checked_at": "2026-10-20T17:48:21.000Z",
      "age_seconds": 14,
      "source": "probe",
      "latency_ms": 683,
      "uptime_90d": 0.9991,
      "median_latency_ms_90d": 327,
      "detail": "HTTP 200 in 683 ms"
    },
    {
      "id": "sign_in",
      "name": "Sign-in",
      "description": "Our sign-in provider (Privy): whether its signing keys can be fetched. Existing sessions, API keys and inference do not depend on it.",
      "status": "operational",
      "position": 8,
      "group": false,
      "only_show_if_degraded": false,
      "updated_at": "2026-10-20T17:48:21.000Z",
      "checked_at": "2026-10-20T17:48:21.000Z",
      "age_seconds": 14,
      "source": "probe",
      "latency_ms": 339,
      "uptime_90d": 1,
      "median_latency_ms_90d": 311,
      "detail": "HTTP 200 in 339 ms"
    }
  ],
  "incidents": [],
  "recent_incidents": [],
  "scheduled_maintenances": [],
  "meta": {
    "version": 1,
    "as_of": "2026-10-20T17:48:34.920Z",
    "last_checked_at": "2026-10-20T17:48:21.000Z",
    "first_probe_date": "2026-10-19",
    "prober": "reporting",
    "probe_location": "single",
    "credit_confirmation": {
      "blocks_behind": 2,
      "confirmations": 12,
      "estimated_seconds": 180
    },
    "method": {
      "cadence_seconds": 60,
      "location": "All probes run from a single location: the Deference worker. We do not claim multi-region checks.",
      "unknown": "A component reads Unknown (grey) after 3 missed intervals: 3 minutes for service probes and 180 minutes for balance checks. Unknown is never shown as operational and is left out of uptime percentages.",
      "uptime": "Daily uptime is (up + degraded seconds) / (up + degraded + down seconds) over the probed time; degraded counts as available and is shown amber. Unknown time is excluded. The 90 days start at the first probe: days before it have no data and count neither way. This is our own rule, not Statuspage's.",
      "incidents": "Incidents are written by people. Probes never open or close one.",
      "probes": [
        {
          "component": "gateway",
          "what": "GET /v1/models/{id} on our own public origin, which exercises routing and the database.",
          "rule": "Non-2xx or no answer in 5 s is a failure. Slower than 2 s is degraded; a failure is degraded until 3 in a row, which is down."
        },
        {
          "component": "upstream",
          "what": "A metadata call to OpenRouter every 60 s, a real max_tokens=1 completion on the cheapest paid text model every 5 minutes (a second model is tried before declaring it down), and our own traffic over the last 5 minutes.",
          "rule": "The worst of the three counts. The metadata call follows the gateway rule. A failed completion (an error, or no answer in 20 s) is down and one slower than 10 s is degraded; its result counts for 15 minutes. Own traffic needs 10 requests: 20% failed is degraded, 50% is down. The source is shown with the state."
        },
        {
          "component": "rpc",
          "what": "Read the newest block from the chain node and compare its timestamp with the clock.",
          "rule": "The read follows the gateway rule. A newest block more than 2 minutes off the clock is degraded and more than 5 minutes off is down; block age is not judged on a local test chain."
        },
        {
          "component": "indexer",
          "what": "How many blocks the slowest active inference contract is behind the newest confirmed block.",
          "rule": "More than 15 blocks behind is degraded, more than 50 is down. A missing contract cursor or unreadable complete position is degraded; without a current readable chain head the indexer reads Down and lag is unavailable."
        },
        {
          "component": "keeper_eth",
          "what": "Read the keeper's ETH balance every 60 minutes when an operator is configured.",
          "rule": "Below KEEPER_ETH_MIN_WEI is degraded. A failed balance read is down. Unconfigured checks have no readings."
        },
        {
          "component": "openrouter_balance",
          "what": "Read OpenRouter credits minus usage every 60 minutes when a provider key is configured.",
          "rule": "Below OPENROUTER_MIN_BALANCE_USD is degraded. A failed balance read is down. Unconfigured checks have no readings."
        },
        {
          "component": "website",
          "what": "GET / on our own public origin.",
          "rule": "Same rule as the gateway."
        },
        {
          "component": "sign_in",
          "what": "GET Privy's public signing keys (JWKS) for our app, which every new sign-in needs.",
          "rule": "Same rule as the gateway."
        }
      ]
    },
    "extensions": [
      "status.indicator and components[].status may be \"unknown\": no fresh probe; never treat it as operational",
      "components[].uptime_90d, latency_ms, median_latency_ms_90d, source, checked_at, age_seconds, detail",
      "recent_incidents",
      "meta.first_probe_date: uptime starts on this day; earlier days have no data"
    ],
    "feed": "https://deference.si/api/status/feed.xml"
  }
}