isitme 0.2.0

Is it me? Diagnose whether your network is the problem in a call (Zoom, Teams, Meet).
isitme-0.2.0 is not a library.

isitme

Is it me? Diagnose whether your network is the problem when a call (Zoom, MS Teams, Google Meet) is acting up.

isitme pings call vendor endpoints plus DNS baselines, runs a Cloudflare-backed speed test, and prints a verdict:

  • All clear. => your network is fine
  • It's them. => a specific vendor endpoint is degraded
  • It's you. => your baseline or speed test is bad

Install

cargo install --path .

Requires the system ping binary (present on macOS and Linux).

Usage

isitme                 # full run: ping all targets + speed test + verdict
isitme --ping-only     # skip the speed test
isitme --speed-only    # skip the ping phase
isitme --no-color      # disable colored output
isitme --json          # machine-readable JSON report
isitme --help          # full options

Targets

Pinged in order:

Host Label Role
8.8.8.8 Google DNS (baseline) baseline
1.1.1.1 Cloudflare DNS probe
zoom.us Zoom vendor
teams.microsoft.com MS Teams vendor
meet.google.com Google Meet vendor

Speed test runs against https://speed.cloudflare.com/__down and /__up with 25 MB payloads in each direction.

Thresholds

Hardcoded rules. Three-level status per metric: OK / WARN / BAD.

Metric OK WARN BAD
ping avg < 150 ms 150-300 ms > 300 ms
jitter < 30 ms 30-50 ms > 50 ms
packet loss < 1% 1-4% >= 5%
download > 3 Mbps 1-3 Mbps < 1 Mbps
upload > 1.5 Mbps 0.5-1.5 < 0.5 Mbps

Verdict logic

  1. If the baseline (8.8.8.8) is BAD, or the speed test is BAD: It's you. Your network is the likely cause.
  2. Else if any vendor target is BAD while the baseline is fine: It's them. The degraded vendor's side.
  3. Else: All clear.

Exit codes

For scripting:

Code Meaning
0 all clear (no WARN, no BAD)
1 warnings present, or a vendor is BAD
2 BAD present on your side (you)

JSON output

isitme --json emits a pretty-printed report:

{
  "pings": [
    {
      "target": "8.8.8.8",
      "samples_ms": [12.3, 13.4, 11.2],
      "packets_sent": 8,
      "packets_received": 8
    }
  ],
  "speed": {
    "download_mbps": 50.3,
    "upload_mbps": 10.7
  },
  "verdict": {
    "label": "clear",
    "reason": "All metrics within OK thresholds. Not you."
  }
}

verdict.label is one of you, vendor, clear.

Development

cargo test                              # 42 unit tests, pure logic
cargo clippy --all-targets -- -D warnings
cargo build --release

Pure logic (thresholds, ping output parsing, throughput math) is unit-tested with fixture strings. Network and process-spawn code is a thin wrapper around the tested pure functions.

License

MIT