mirror of
https://github.com/hanzoai/status.git
synced 2026-10-30 18:21:48 +00:00
Hanzo and Lux status pages run the same image digest. Three of the tab-icon links were brand-templated, but the paths a browser reaches for on its own were not: /favicon.ico, /apple-touch-icon.png, /logo-192x192.png and /logo-512x512.png were real files at the web root, and git records this commit moving them into brands/hanzo/ because that is what they always were. Every brand got Hanzo's bytes. Saving status.lux.network to an iOS home screen saved the Hanzo mark, md5-identical. Artwork now has one home, /brands/<brand>/, and one name to reach it by: ui.brand. Tab icon, home screen icon, PWA icons and the header logo all derive from that name, so a deployment cannot title itself one company and hand out another's mark. The bare root paths are served from the same place rather than being a second copy that drifts, and a brand missing an asset is a boot failure instead of a page quietly wearing nobody. manifest.json was a checked-in static file: it called itself "Status" on a page titled "Hanzo Status", described itself in upstream Gatus's words, and splashed #f7f9fb light grey in front of a UI that paints #020817. It is now rendered from the same config that renders the page, and the theme-color meta reads the colour the app actually paints instead of a rounder-looking #000000. The 180/192/512 sizes were rasterised from each brand's own canonical SVG with rsvg-convert, the same pipeline that produced the existing 16/32 — it reproduces every shipped icon byte for byte, and Hanzo's icons are unchanged from what production serves today. Config drops `logo` and the three-field `favicon` block for the single `brand` key. TestNoBrandWearsAnothersMark asserts the property that was silently false: distinct bytes per brand at every size. Co-authored-by: Hanzo Dev <[email protected]>
273 lines
7.8 KiB
YAML
273 lines
7.8 KiB
YAML
web:
|
|
port: 8080
|
|
|
|
storage:
|
|
type: sqlite
|
|
path: /data/status.db
|
|
|
|
ui:
|
|
title: "Lux Status"
|
|
description: "Real-time network health and performance"
|
|
header: "Status"
|
|
brand: lux
|
|
link: "https://lux.network"
|
|
dark-mode: true
|
|
buttons:
|
|
- name: "LIPs"
|
|
link: "https://github.com/luxfi/lips"
|
|
- name: "Docs"
|
|
link: "https://docs.lux.network"
|
|
- name: "GitHub"
|
|
link: "https://github.com/luxfi"
|
|
- name: "Support"
|
|
link: "https://lux.network/support"
|
|
|
|
endpoints:
|
|
|
|
# ═══════════════════════════════════════════════
|
|
# MAINNET
|
|
# ═══════════════════════════════════════════════
|
|
|
|
- name: "API Gateway"
|
|
group: "Mainnet"
|
|
url: "https://api.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 404)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer"
|
|
group: "Mainnet"
|
|
url: "https://explore.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer Hanzo"
|
|
group: "Mainnet"
|
|
url: "https://explore-hanzo.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer SPC"
|
|
group: "Mainnet"
|
|
url: "https://explore-spc.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer Zoo"
|
|
group: "Mainnet"
|
|
url: "https://explore-zoo.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer Pars"
|
|
group: "Mainnet"
|
|
url: "https://explore-pars.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer API"
|
|
group: "Mainnet"
|
|
url: "https://api-explore.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302, 404)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
# ═══════════════════════════════════════════════
|
|
# TESTNET
|
|
# ═══════════════════════════════════════════════
|
|
|
|
- name: "API Gateway"
|
|
group: "Testnet"
|
|
url: "https://api.testnet.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 404)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer"
|
|
group: "Testnet"
|
|
url: "https://explore-test.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer API"
|
|
group: "Testnet"
|
|
url: "https://api-explore-test.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302, 404)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
# ═══════════════════════════════════════════════
|
|
# DEVNET
|
|
# ═══════════════════════════════════════════════
|
|
|
|
- name: "API Gateway"
|
|
group: "Devnet"
|
|
url: "https://api.devnet.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 404)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer"
|
|
group: "Devnet"
|
|
url: "https://explore-dev.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Explorer API"
|
|
group: "Devnet"
|
|
url: "https://api-explore-dev.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302, 404)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
# ═══════════════════════════════════════════════
|
|
# SERVICES
|
|
# ═══════════════════════════════════════════════
|
|
|
|
- name: "Bridge"
|
|
group: "Services"
|
|
url: "https://bridge.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Exchange"
|
|
group: "Services"
|
|
url: "https://lux.exchange"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 5000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Wallet"
|
|
group: "Services"
|
|
url: "https://wallet.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "MPC Wallet"
|
|
group: "Services"
|
|
url: "https://mpc.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Identity"
|
|
group: "Services"
|
|
url: "https://lux.id"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Staking"
|
|
group: "Services"
|
|
url: "https://lux.build"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Markets"
|
|
group: "Services"
|
|
url: "https://markets.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
# ═══════════════════════════════════════════════
|
|
# CLOUD
|
|
# ═══════════════════════════════════════════════
|
|
|
|
- name: "Cloud"
|
|
group: "Cloud"
|
|
url: "https://cloud.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == any(200, 302)"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Cloud API"
|
|
group: "Cloud"
|
|
url: "https://api.cloud.lux.network/health"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == 200"
|
|
- "[RESPONSE_TIME] < 2000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "Cloud WebSocket"
|
|
group: "Cloud"
|
|
url: "wss://ws.cloud.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[CONNECTED] == true"
|
|
|
|
# ═══════════════════════════════════════════════
|
|
# WEB
|
|
# ═══════════════════════════════════════════════
|
|
|
|
- name: "lux.network"
|
|
group: "Web"
|
|
url: "https://lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == 200"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|
|
|
|
- name: "docs.lux.network"
|
|
group: "Web"
|
|
url: "https://docs.lux.network"
|
|
interval: 60s
|
|
conditions:
|
|
- "[STATUS] == 200"
|
|
- "[RESPONSE_TIME] < 3000"
|
|
- "[CERTIFICATE_EXPIRATION] > 720h"
|