A terminal user interface (TUI) application for monitoring latency across all Polymarket endpoints and WebSockets. Built for developers building Polymarket bots who need real-time, visual latency metrics.
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣶⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ____ _ ___ _ _ _
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ | _ \(_)_ __ __ _/ _ \| |__ | (_)_ __
⠀⠀⠀⠀⠀⠀⠀⠀⢀⡼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢧⡀⠀⠀⠀⠀⠀⠀⠀⠀ | |_) | | '_ \ / _` | | | | '_ \| | | '_ \
⠀⠢⣤⣀⡀⠀⠀⠀⢿⣧⣄⡉⠻⢿⣿⣿⡿⠟⢉⣠⣼⡿⠀⠀⠀⠀⣀⣤⠔⠀ | __/| | | | | (_| | |_| | |_) | | | | | |
⠀⠀⠈⢻⣿⣶⠀⣷⠀⠉⠛⠿⠶⡴⢿⡿⢦⠶⠿⠛⠉⠀⣾⠀⣶⣿⡟⠁⠀⠀ |_| |_|_| |_|\__, |\___/|_.__/|_|_|_| |_|
⠀⠀⠀⠀⠻⣿⡆⠘⡇⠘⠷⠠⠦⠀⣾⣷⠀⠴⠄⠾⠃⢸⠃⢰⣿⠟⠀⠀⠀⠀ |___/
⠀⠀⠀⠀⠀⠋⢠⣾⣥⣴⣶⣶⣆⠘⣿⣿⠃⣰⣶⣶⣦⣬⣷⡄⠙⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢋⠛⠻⠿⣿⠟⢹⣆⠸⠇⣰⡏⠻⣿⠿⠟⠛⡙⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠈⢧⡀⠠⠄⠀⠈⠛⠀⠀⠛⠁⠀⠠⠄⢀⡼⠁⠀⠀⠀⠀⠀⠀ hunting latency across
⠀⠀⠀⠀⠀⠀⠀⠈⢻⣦⡀⠃⠀⣿⡆⢰⣿⠀⠘⢀⣴⡟⠁⠀⠀⠀⠀⠀⠀⠀ polymarket endpoints...
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠹⣿⣦⡀⠘⠇⠸⠃⢀⣴⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣷⣄⣠⣾⣿⡿⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠻⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
- Real-time Monitoring: Ping each endpoint every second
- Visual Components: Progress bars, sparklines, percentiles (p50, p95, p99)
- Color-coded Thresholds: Green (<50ms), Yellow (50-100ms), Red (>100ms)
- Alerts: Configurable threshold notifications
- Export: CSV export support
- CLOB API (clob.polymarket.com): /price, /book, /markets, /trades
- Gamma API (gamma-api.polymarket.com): /events, /markets
- Data API (data-api.polymarket.com): /prices, /volume
- CLOB WebSocket (ws-subscriptions-clob.polymarket.com)
- RTDS (ws-live-data.polymarket.com)
One-line Installer (Linux / macOS / Git Bash):
curl -sSL https://raw.githubusercontent.com/lubluniky/pingoblin/main/install.sh | bashWindows (PowerShell):
git clone https://github.com/lubluniky/pingoblin; cd pingoblin; cargo run --releaseManual Build:
cargo build --release# Default run
cargo run --release
# With custom thresholds
cargo run --release -- --warn 50 --critical 100
# Save metrics to CSV
cargo run --release -- --export-csv metrics.csv
# Custom config file
cargo run --release -- --config custom-config.toml| Key | Action |
|---|---|
q |
Quit |
r |
Reset all metrics |
e |
Export to CSV |
p |
Pause/resume monitoring |
c |
Clear alerts |
Edit config.toml:
[monitoring]
interval_ms = 1000
history_window_seconds = 60
[thresholds]
warning_ms = 50
critical_ms = 100
[alerts]
sound_enabled = false
log_to_file = true
log_path = "pingoblin.log"
[export]
prometheus_port = 9090
auto_export_csv = false
csv_path = "metrics.csv"- Language: Rust
- TUI Framework: ratatui
- Async Runtime: tokio
- HTTP Client: reqwest
- WebSocket: tokio-tungstenite
MIT