{
  "errors": [],
  "postgres": "wgaccess-postgres",
  "queries": {
    "leases": {
      "rc": 0,
      "stderr": "",
      "stdout": "[\n    {\n        \"state\": \"active\",\n        \"forced\": false,\n        \"reason\": \"activity_sampler_keep_active_no_delta\",\n        \"peer_id\": \"376dfa07-0ba4-4182-af39-389a2cb3badd\",\n        \"target_id\": \"cs1_vpn3\",\n        \"tunnel_ip\": \"10.253.1.10\",\n        \"updated_at\": \"2026-07-09T16:13:43.802277+00:00\",\n        \"tunnel_cidr\": \"10.253.1.10/32\",\n        \"egress_class\": \"cs1\",\n        \"peer_enabled\": true,\n        \"last_rx_bytes\": 13680,\n        \"last_tx_bytes\": 13680,\n        \"cooldown_until\": null,\n        \"last_rx_packets\": 60,\n        \"last_tx_packets\": 60,\n        \"peer_created_at\": \"2026-07-08T12:12:18.380667+00:00\",\n        \"last_activity_at\": \"2026-07-09T14:47:21.837692+00:00\",\n        \"assignment_source\": \"bootstrap\"\n    },\n    {\n        \"state\": \"idle\",\n        \"forced\": false,\n        \"reason\": \"activity_sampler_idle_no_delta\",\n        \"peer_id\": \"cb533a1a-7070-416d-9272-846327545060\",\n        \"target_id\": \"cs2_vpn4\",\n        \"tunnel_ip\": \"10.253.1.11\",\n        \"updated_at\": \"2026-07-09T16:13:43.802277+00:00\",\n        \"tunnel_cidr\": \"10.253.1.11/32\",\n        \"egress_class\": \"cs2\",\n        \"peer_enabled\": true,\n        \"last_rx_bytes\": 0,\n        \"last_tx_bytes\": 0,\n        \"cooldown_until\": null,\n        \"last_rx_packets\": 0,\n        \"last_tx_packets\": 0,\n        \"peer_created_at\": \"2026-07-08T13:42:56.375753+00:00\",\n        \"last_activity_at\": null,\n        \"assignment_source\": \"bootstrap\"\n    },\n    {\n        \"state\": \"idle\",\n        \"forced\": false,\n        \"reason\": \"activity_sampler_idle_no_delta\",\n        \"peer_id\": \"a3cbe3b5-8416-4847-b5ee-21f42359b465\",\n        \"target_id\": \"cs3_vpn5\",\n        \"tunnel_ip\": \"10.253.1.12\",\n        \"updated_at\": \"2026-07-09T16:13:43.802277+00:00\",\n        \"tunnel_cidr\": \"10.253.1.12/32\",\n        \"egress_class\": \"cs3\",\n        \"peer_enabled\": true,\n        \"last_rx_bytes\": 0,\n        \"last_tx_bytes\": 0,\n        \"cooldown_until\": null,\n        \"last_rx_packets\": 0,\n        \"last_tx_packets\": 0,\n        \"peer_created_at\": \"2026-07-08T14:03:52.371007+00:00\",\n        \"last_activity_at\": null,\n        \"assignment_source\": \"bootstrap\"\n    },\n    {\n        \"state\": \"idle\",\n        \"forced\": false,\n        \"reason\": \"activity_sampler_idle_no_delta\",\n        \"peer_id\": \"219a1f63-ec47-4f72-9663-c1a17d82301e\",\n        \"target_id\": \"cs4_vpn1\",\n        \"tunnel_ip\": \"10.253.1.13\",\n        \"updated_at\": \"2026-07-09T16:13:43.802277+00:00\",\n        \"tunnel_cidr\": \"10.253.1.13/32\",\n        \"egress_class\": \"cs4\",\n        \"peer_enabled\": true,\n        \"last_rx_bytes\": 0,\n        \"last_tx_bytes\": 0,\n        \"cooldown_until\": null,\n        \"last_rx_packets\": 0,\n        \"last_tx_packets\": 0,\n        \"peer_created_at\": \"2026-07-08T15:05:41.535044+00:00\",\n        \"last_activity_at\": null,\n        \"assignment_source\": \"bootstrap\"\n    },\n    {\n        \"state\": \"idle\",\n        \"forced\": false,\n        \"reason\": \"activity_sampler_idle_no_delta\",\n        \"peer_id\": \"e4adcfa1-6fbc-4471-b66b-8d7837f35f9d\",\n        \"target_id\": \"cs5_vpn2\",\n        \"tunnel_ip\": \"10.253.1.14\",\n        \"updated_at\": \"2026-07-09T16:13:43.802277+00:00\",\n        \"tunnel_cidr\": \"10.253.1.14/32\",\n        \"egress_class\": \"cs5\",\n        \"peer_enabled\": true,\n        \"last_rx_bytes\": 0,\n        \"last_tx_bytes\": 0,\n        \"cooldown_until\": null,\n        \"last_rx_packets\": 0,\n        \"last_tx_packets\": 0,\n        \"peer_created_at\": \"2026-07-09T09:40:00.373628+00:00\",\n        \"last_activity_at\": null,\n        \"assignment_source\": \"bootstrap\"\n    }\n]"
    },
    "schema_columns": {
      "rc": 3,
      "stderr": "ERROR:  column \"c.table_name\" must appear in the GROUP BY clause or be used in an aggregate function\nLINE 5: ORDER BY c.table_name, c.ordinal_position;\n                 ^",
      "stdout": ""
    },
    "settings": {
      "rc": 0,
      "stderr": "",
      "stdout": "[\n    {\n        \"key\": \"ROUTER_EGRESS_ACTIVE_MIN_BYTES\",\n        \"value_int\": 16384,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"16384\",\n        \"description\": \"Minimum inner forwarded byte delta to consider peer active.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_ACTIVE_MIN_PACKETS\",\n        \"value_int\": 10,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"10\",\n        \"description\": \"Minimum inner forwarded packet delta to consider peer active.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_ACTIVITY_METRIC\",\n        \"value_int\": null,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"inner_forwarded_transit_vpn\",\n        \"description\": \"Use inner client traffic after wg_paid decrypt, preferably transit_vpn-bound; not WireGuard handshake.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_ALLOCATOR_ENABLED\",\n        \"value_int\": 1,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"1\",\n        \"description\": \"Global allocator enable switch. 0 disables automatic allocation.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_CLASSES\",\n        \"value_int\": null,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"cs1,cs2,cs3,cs4,cs5\",\n        \"description\": \"Ordered egress classes available to allocator.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_FORCE_CLASS\",\n        \"value_int\": null,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"\",\n        \"description\": \"Forced class cs1..cs5 when FORCE_MODE=all_to_class.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_FORCE_MODE\",\n        \"value_int\": null,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"off\",\n        \"description\": \"Global override mode: off, all_to_class, all_to_target.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_FORCE_REASON\",\n        \"value_int\": null,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"\",\n        \"description\": \"Human reason for forced emergency/maintenance mode.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_FORCE_TARGET_ID\",\n        \"value_int\": null,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"\",\n        \"description\": \"Forced egress target id when FORCE_MODE=all_to_target.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_FORCE_UNTIL\",\n        \"value_int\": null,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"\",\n        \"description\": \"Optional timestamp/comment for planned force-mode end.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_IDLE_SECONDS\",\n        \"value_int\": 900,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"900\",\n        \"description\": \"Idle time before peer lease can be reassigned.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_REASSIGN_COOLDOWN_SECONDS\",\n        \"value_int\": 900,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"900\",\n        \"description\": \"Minimum cooldown between egress reassignments.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_REBALANCE_PAUSED\",\n        \"value_int\": 0,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"0\",\n        \"description\": \"Pause automatic rebalance/reassignment while preserving current leases.\"\n    },\n    {\n        \"key\": \"ROUTER_EGRESS_SAMPLE_SECONDS\",\n        \"value_int\": 120,\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"value_text\": \"120\",\n        \"description\": \"Activity sampling window in seconds.\"\n    }\n]"
    },
    "summary": {
      "rc": 0,
      "stderr": "",
      "stdout": "{\n    \"lease_rows\": 5,\n    \"idle_leases\": 4,\n    \"pending_jobs\": 0,\n    \"active_leases\": 1,\n    \"enabled_peers\": 5,\n    \"forced_leases\": 0\n}"
    },
    "targets": {
      "rc": 0,
      "stderr": "",
      "stdout": "[\n    {\n        \"id\": \"cs1_vpn3\",\n        \"kind\": \"vpn\",\n        \"fwmark\": \"0x203\",\n        \"status\": \"enabled\",\n        \"weight\": 100,\n        \"created_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"description\": \"Current proven cs1 -> vpn3 target\",\n        \"route_table\": 203,\n        \"egress_class\": \"cs1\",\n        \"is_emergency\": false,\n        \"interface_name\": \"vpn3\"\n    },\n    {\n        \"id\": \"cs2_vpn4\",\n        \"kind\": \"vpn\",\n        \"fwmark\": \"0x204\",\n        \"status\": \"enabled\",\n        \"weight\": 100,\n        \"created_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"description\": \"Current proven cs2 -> vpn4 target\",\n        \"route_table\": 204,\n        \"egress_class\": \"cs2\",\n        \"is_emergency\": false,\n        \"interface_name\": \"vpn4\"\n    },\n    {\n        \"id\": \"cs3_vpn5\",\n        \"kind\": \"vpn\",\n        \"fwmark\": \"0x205\",\n        \"status\": \"enabled\",\n        \"weight\": 100,\n        \"created_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"description\": \"Current proven cs3 -> vpn5 target\",\n        \"route_table\": 205,\n        \"egress_class\": \"cs3\",\n        \"is_emergency\": false,\n        \"interface_name\": \"vpn5\"\n    },\n    {\n        \"id\": \"cs4_vpn1\",\n        \"kind\": \"vpn\",\n        \"fwmark\": \"0x201\",\n        \"status\": \"enabled\",\n        \"weight\": 100,\n        \"created_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"description\": \"Current proven cs4 -> vpn1 target\",\n        \"route_table\": 201,\n        \"egress_class\": \"cs4\",\n        \"is_emergency\": false,\n        \"interface_name\": \"vpn1\"\n    },\n    {\n        \"id\": \"cs5_vpn2\",\n        \"kind\": \"vpn\",\n        \"fwmark\": \"0x202\",\n        \"status\": \"enabled\",\n        \"weight\": 100,\n        \"created_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"updated_at\": \"2026-07-09T12:34:52.059511+00:00\",\n        \"description\": \"Current proven cs5 -> vpn2 target\",\n        \"route_table\": 202,\n        \"egress_class\": \"cs5\",\n        \"is_emergency\": false,\n        \"interface_name\": \"vpn2\"\n    }\n]"
    }
  }
}
