{
  "service": "batman",
  "role": "oblivious-http-relay",
  "ok": true,
  "paused": false,
  "uptimeMs": 354000000,
  "upstreamHost": "https://anygas.xyz",
  "remoteAdmin": true,
  "stats": {
    "relayed": 600,
    "denied": 0,
    "tooLarge": 0,
    "upstreamErrors": 0,
    "malformed": 0,
    "batches": 600,
    "batchedRequests": 600,
    "largestBatch": 1,
    "singletonBatches": 600,
    "decoysForwarded": 0,
    "decoyErrors": 0,
    "decoyPulls": 0,
    "decoyPulled": 0,
    "decoyPullErrors": 0,
    "decoyDiscarded": 0,
    "decoyDropped": 0,
    "respGroups": 0,
    "respStragglers": 0
  },
  "batching": {
    "enabled": true,
    "mode": "fixed-interval",
    "windowMs": 750,
    "batches": 600,
    "meanBatch": {
      "ge": 0.98
    },
    "meanRealPerBatch": {
      "ge": 0.98
    },
    "singletonShare": {
      "le": 1
    },
    "histogram": {
      "1": 600,
      "2": 0,
      "3-4": 0,
      "5-8": 0,
      "9-16": 0,
      "17+": 0
    },
    "honest": "a batch of N makes the inbound->outbound mapping a 1-in-N guess even for someone holding BOTH halves. Batches of 1 provide nothing and are counted separately. Fixed-interval releases whatever is queued each tick, so at low traffic it is mostly singletons — prefer adaptive size-or-timeout (set BATCH_K)."
  },
  "latencyMs": null,
  "throughputLastHour": 0,
  "responseHold": {
    "enabled": false,
    "holdMs": 0,
    "honest": "OFF: each response is written the instant its upstream fetch returns, so both halves can rejoin requests by response time at any batch size"
  },
  "decoyPull": {
    "enabled": false,
    "honest": "no BATMAN_DECOY_SOURCE: decoys arrive only by loopback push (/admin/decoys), or not at all"
  },
  "upstream": {
    "upstreamOk": true,
    "failing": false,
    "lastOkWithin": "under-1h",
    "lastErrorWithin": "under-1d"
  },
  "activeRateLimitBuckets": 0,
  "independence": "upstream is remote; the guarantee holds to the extent that operator is genuinely independent",
  "privacy": "No addresses, bodies or paths are logged. Every figure above is an aggregate; none of it describes an individual request.",
  "build": {
    "sha256": "b3d657bd739df45a",
    "files": 2
  },
  "publicView": "figures are refreshed once per 60 s slot, counters floored to multiples of 10, timestamps as coarse ages, latency withheld under 60 requests/hour: no field here changes because of ONE request. Exact live counters: /admin/health (operator only)."
}