import type { Metadata } from 'next'; import { ProbesTable } from '@/components/detail/Tables'; import { MapIsland } from '@/components/map/MapIsland'; import { Section, Stat } from '@/components/ui/primitives'; import { apiGet, apiTry } from '@/lib/api'; import { fmtInt, fmtPct } from '@/lib/format'; import type { Latency, Probe, Region } from '@/lib/types'; export const dynamic = 'force-dynamic'; export const metadata: Metadata = { title: 'Probe network', description: 'The InternetPressure Observability Network: our own measurement probes, where they sit, who hosts them, and whether they are fresh.' }; export default async function ProbesPage() { const [{ probes }, regions, latency] = await Promise.all([apiGet<{ probes: Probe[] }>('/api/v1/probes'), apiTry<{ regions: Region[] }>('/api/v1/pressure/regions'), apiTry('/api/v1/latency')]); const online = probes.filter((p) => p.status === 'online').length; const regionsCovered = new Set(probes.map((p) => p.region)).size; const countries = new Set(probes.map((p) => p.country)).size; const meas = probes.reduce((a, p) => a + p.measurements_1h, 0); const uptime = probes.length ? probes.reduce((a, p) => a + p.uptime_24h, 0) / probes.length : null; const byProbe = new Map((latency?.by_probe ?? []).map((b) => [b.probe_id, b])); return (

Observability network

Probes

Lightweight Go agents running as ordinary clients from MacLustr (Québec), OVHcloud (Québec, France) and rented hosts abroad. They never scan, never bypass anything and never send more traffic than a normal user would. Positions are approximate on purpose.

{`${online}/${probes.length}`}} />
{fmtInt(probes.length)} probes}>
{latency && (
medians over the current window · z vs each probe's own baseline}>
{probes.map((p) => { const b = byProbe.get(p.probe_id); return ( ); })}
Probe RTT p50 TTFB p50 Loss z
{p.probe_id} {b ? `${b.rtt_ms_median.toFixed(1)} ms` : '—'} {b ? `${b.ttfb_ms_median.toFixed(1)} ms` : '—'} = 1 ? 'var(--p-high)' : undefined }}> {b ? `${b.loss_pct.toFixed(1)} %` : '—'} = 3 ? 'var(--p-high)' : undefined }}> {b ? b.z.toFixed(1) : '—'}
)}
); }