Skip to content

Add fipstop TUI monitoring tool with smoothed metrics and quality ind…#10

Merged
jmcorgan merged 1 commit intomasterfrom
fipstop
Mar 1, 2026
Merged

Add fipstop TUI monitoring tool with smoothed metrics and quality ind…#10
jmcorgan merged 1 commit intomasterfrom
fipstop

Conversation

@jmcorgan
Copy link
Owner

@jmcorgan jmcorgan commented Mar 1, 2026

…ices

fipstop: ratatui-based TUI for real-time monitoring of a running FIPS daemon.

Tabs and navigation:

  • 8 navigable tabs: Node, Peers, Transports, Sessions, Tree, Filters, Performance, Routing
  • Tab/BackTab navigation with group separators in tab bar
  • Table views with selectable rows, detail drill-down panels, and scrollbars

Node tab:

  • Runtime info: pid, exe path, uptime, control socket path, TUN adapter name
  • Identity: npub, node_addr, ipv6 address
  • State summary with peer/session/link/transport/connection counts
  • TUN IPv6 traffic and forwarded transit traffic counters

Peers tab:

  • Table with Name, Address, Conn, Depth, SRTT, Loss, LQI, Pkts Tx/Rx
  • Detail panel: identity, connection info, transport cross-reference, tree/bloom state, link stats, MMP metrics with LQI

Sessions tab:

  • Table with Name, Remote Addr, State, Role, SRTT, Loss, SQI, Path MTU, Last Activity
  • Detail panel: identity, session info, traffic stats, MMP metrics with SQI

Transports tab:

  • Hierarchical tree view: expandable transport parents with nested links (▼/▶ indicators, ├─/└─ tree chars, Space/Arrow to expand/collapse)
  • Transport detail: type-specific stats (UDP/TCP/Ethernet)
  • Link detail: peer cross-reference with MMP metrics and LQI

Performance tab:

  • Link-layer MMP: SRTT, loss, ETX, LQI, goodput per peer
  • Session-layer MMP: SRTT, loss, ETX, SQI, path MTU per session
  • Trend indicators (rising/falling/stable) with context-aware coloring

Routing tab:

  • Routing state: cache sizes, pending lookups, recent requests
  • Coordinate cache: entries, fill ratio, TTL, expiry, avg age
  • Statistics: forwarding, discovery request/response, error signal counters

Tree tab:

  • Spanning tree position with 16 announce stats (inbound/outbound/cumulative)

Filters tab:

  • Bloom filter announce stats, per-peer fill ratio and estimated node count

MMP metrics enhancements:

  • Add etx_trend DualEwma for smoothed ETX tracking
  • Add smoothed_loss() and smoothed_etx() accessors (long-term EWMA)
  • LQI (Link Quality Index) = smoothed_etx * (1 + srtt_ms / 100)
  • SQI (Session Quality Index) = same formula for session layer
  • All loss/ETX displays prefer smoothed values with raw fallback

Control socket:

  • Add smoothed_loss, smoothed_etx, lqi/sqi to show_peers, show_sessions, and show_mmp JSON responses
  • Rename fips_address to ipv6_addr in show_status and show_peers
  • Add tun_name and control_socket to show_status
  • FHS-compliant 3-tier default path: $XDG_RUNTIME_DIR, /run/fips, /tmp

Node extensions:

  • Add started_at/uptime() to Node
  • Add tun_name() accessor

Docker sidecar updates:

  • TCP transport support via FIPS_PEER_TRANSPORT env var
  • Build scripts include fipstop binary

…ices

fipstop: ratatui-based TUI for real-time monitoring of a running FIPS daemon.

Tabs and navigation:
- 8 navigable tabs: Node, Peers, Transports, Sessions, Tree, Filters,
  Performance, Routing
- Tab/BackTab navigation with group separators in tab bar
- Table views with selectable rows, detail drill-down panels, and scrollbars

Node tab:
- Runtime info: pid, exe path, uptime, control socket path, TUN adapter name
- Identity: npub, node_addr, ipv6 address
- State summary with peer/session/link/transport/connection counts
- TUN IPv6 traffic and forwarded transit traffic counters

Peers tab:
- Table with Name, Address, Conn, Depth, SRTT, Loss, LQI, Pkts Tx/Rx
- Detail panel: identity, connection info, transport cross-reference,
  tree/bloom state, link stats, MMP metrics with LQI

Sessions tab:
- Table with Name, Remote Addr, State, Role, SRTT, Loss, SQI, Path MTU,
  Last Activity
- Detail panel: identity, session info, traffic stats, MMP metrics with SQI

Transports tab:
- Hierarchical tree view: expandable transport parents with nested links
  (▼/▶ indicators, ├─/└─ tree chars, Space/Arrow to expand/collapse)
- Transport detail: type-specific stats (UDP/TCP/Ethernet)
- Link detail: peer cross-reference with MMP metrics and LQI

Performance tab:
- Link-layer MMP: SRTT, loss, ETX, LQI, goodput per peer
- Session-layer MMP: SRTT, loss, ETX, SQI, path MTU per session
- Trend indicators (rising/falling/stable) with context-aware coloring

Routing tab:
- Routing state: cache sizes, pending lookups, recent requests
- Coordinate cache: entries, fill ratio, TTL, expiry, avg age
- Statistics: forwarding, discovery request/response, error signal counters

Tree tab:
- Spanning tree position with 16 announce stats (inbound/outbound/cumulative)

Filters tab:
- Bloom filter announce stats, per-peer fill ratio and estimated node count

MMP metrics enhancements:
- Add etx_trend DualEwma for smoothed ETX tracking
- Add smoothed_loss() and smoothed_etx() accessors (long-term EWMA)
- LQI (Link Quality Index) = smoothed_etx * (1 + srtt_ms / 100)
- SQI (Session Quality Index) = same formula for session layer
- All loss/ETX displays prefer smoothed values with raw fallback

Control socket:
- Add smoothed_loss, smoothed_etx, lqi/sqi to show_peers, show_sessions,
  and show_mmp JSON responses
- Rename fips_address to ipv6_addr in show_status and show_peers
- Add tun_name and control_socket to show_status
- FHS-compliant 3-tier default path: $XDG_RUNTIME_DIR, /run/fips, /tmp

Node extensions:
- Add started_at/uptime() to Node
- Add tun_name() accessor

Docker sidecar updates:
- TCP transport support via FIPS_PEER_TRANSPORT env var
- Build scripts include fipstop binary
@jmcorgan jmcorgan merged commit 77ac8c8 into master Mar 1, 2026
18 checks passed
@jmcorgan jmcorgan deleted the fipstop branch March 1, 2026 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant