Precision Time Protocol configuration and monitoring dashboard for OpenShift clusters.
PTP Dashboard is a Next.js web application for exploring and managing PTP (Precision Time Protocol) configurations on an OpenShift or Kubernetes cluster. Users upload a kubeconfig file to visually configure clock profiles, monitor sync status, view process relationships, and manage hardware configurations -- all from the browser.
See docs/USER_GUIDE.md for a full walkthrough of every page, every built-in clock scenario/template, Configure workflow, and background probes.
- Dashboard -- Cluster overview, sync health score, scenario breakdown, node status, active alerts
- Clock Topology -- Interactive React Flow graph of clock hierarchy with discovery overlays
- Point-and-Click Configurator -- Wizard to create PtpConfig CRs with template selection, solver, and staged changes
- SMA Topology / GM Filters -- Manual SMA cabling overrides and HW ntuple drops for non-responding GMs
- Template Editor -- Built-in and custom clock templates with INI config editing
- Software Entities -- Process relationship graph with integrated log viewer
- Node Detail -- Per-node drill-down with hardware, processes, metrics, logs, and alerts
- Metrics & Status -- Per-node and per-interface tables with offset/delay/clock-state data
- Container Resources -- CPU and memory utilization per PTP container from Prometheus
- Config Export/Import -- Bundle all PtpConfig + PtpOperatorConfig to JSON, import with validation
| Scenario | Description |
|---|---|
| Ordinary Clock (OC) | Single interface, slaveOnly; syncs from an upstream GM |
| Boundary Clock (BC) | Upstream slave + downstream master ports (same NIC for classic BC) |
| Dual-NIC Boundary Clock | Dual-card WPC T-BC in the Configure picker today |
| Dual-NIC BC (HA) | Two BC profiles with phc2sys HA failover (haProfiles) |
| Grandmaster (GM) | Master-only GM for testing (not for production) |
| Telecom Grandmaster (T-GM) | GNSS-referenced GM with ts2phc, DPLL, SyncE |
| Dual Follower | Two slave ports on one NIC (active/standby), slaveOnly |
Per-template variables, constraints, and telco-reference mappings are documented in the user guide.
- Node.js 18+ LTS
- npm 9+
- Access to an OpenShift cluster with the PTP operator installed
| Command | Description |
|---|---|
npm install |
Install all dependencies |
npm run dev |
Start development server with Turbopack (http://localhost:3000) |
npm run build |
Create a production build |
npm start |
Serve the production build |
npm run lint |
Run ESLint |
- Next.js 16 (App Router, Turbopack)
- React 19 + TypeScript 5
- Tailwind CSS 4 (CSS-first, oklch tokens)
- shadcn/ui + Radix UI -- Accessible, composable UI components
- @xyflow/react -- Interactive node-based graph visualization
- Zustand 5 -- Lightweight client-state management
- @kubernetes/client-node -- Kubernetes API access (server-side only)
- Zod 4 -- Schema validation
- next-themes -- Dark/light mode support
This project was developed with AI assistance from Cursor.
Licensed under the Apache License, Version 2.0.