ヘルスと速度

接続できない原因、速度テスト、カクつき、経路の履歴、障害、プロバイダに渡せるレポート。

接続できないとき

kilobat why <host>(MCP:diagnose_connection)は、curlやncを実行せずに、このMacから1つのホストを層ごとに確認します。そのため、厳しいプロファイルでも確認自体がブロックされることはありません。IPv4とIPv6を別々に試すので、エージェントがハングしたり再接続を繰り返したりするよくある原因、IPv6が壊れたネットワークにもはっきりした答えを出します。使われたインターフェイス(Wi-Fi、スマートフォンのテザリング、VPNなど)を示し、複数ある場合はそれぞれを試します。システムまたはPACファイルが選ぶプロキシを報告し、--appを付けるとそのアプリの環境のHTTPS_PROXYもパスワードを除いて報告します。VPNやプロキシがオンの場合は、直接の経路とトンネルを比較します。プライベートな名前がVPN独自のリゾルバに送られた場合は、どのリゾルバか、応答するかを示します。コンテナ、VM、リモートマシン上のコードはそれぞれ独自のネットワークを持ちます。--contextを渡すと、レポートの最後にそこで実行するコマンドが表示されます。Warpのカスタム推論エンドポイントのように、ホスト型サービスが自社のサーバからリクエストを送る場合、--context providerは、対象がプライベート(localhost、LANやTailscaleのアドレス)でサービスからは届かないことを、Macからは接続できる場合でも示します。

失敗するURLを、クエリも含めてそのまま渡してください。そのURLにリクエストしますが、出力ではクエリの値をすべて[redacted]と表示するため、署名付きのダウンロードリンクも外に漏れません。リクエストはアプリと同じ方法で送ります。アプリのHTTPS_PROXY、システムのプロキシ、または--proxy <url>で指定した、アプリが独自の設定で使うプロキシアドレスを経由します。多くの企業ネットワークのように、そのプロキシは機能して直接接続はできない場合は、失敗とせずにそう伝えます。直接接続は機能してアプリのプロキシ経由のリクエストが失敗する場合は、ネットワークは正常でアプリの経路に問題があると伝えます。読み取れない設定や経由できない設定(huggingface.coからのダウンロードに使うLM StudioのHugging Faceプロキシの切り替えなど)には、ユーザーの報告を引用した注記が付き、判定は「アプリのリクエストが機能する」ではなく「ネットワークはホストに届く」となります。Kilobatがほかのアプリの設定を変更することはありません。HEADを拒否するサーバには1バイトだけのGETを1回送り、ダウンロードはしません。リダイレクトは5回まで追跡し、失敗したホップを示し、リダイレクトの最終的なホストについてIPv4とIPv6を確認します。--appを付けると、そのホストまたはプロキシへのアプリの開いている接続を一覧表示し、今回の確認と異なるIPバージョンやサーバを使っていればそれを示し、数秒後にもう一度確認します。通信が止まった転送は「止まった」と報告し、「完了した」とは報告しません。レポートには、アプリの名前とバージョン、送ったメソッド、通った経路、--failed-atを付けた場合はアプリが失敗した時刻と確認を実行した時刻を記録します。確認に合格した場合、このリクエストは今その経路でこのMacから機能する、という意味です。すでに進行中の転送の状態はわからないため、そちらはkilobat bandwidth <app>で確認してください。

ホストまたはアプリがslack.comやGitHubなど公開ステータスページを持つサービスに属する場合、チェックの最後にステータスページの層を表示し、そのページの報告内容を示します。ページが障害を報告し、このMac側に失敗がなければ、「Slackは自分だけでなく全員に対して停止中」のようにインシデントのタイトルとリンクを判定の先頭に表示します。このMac自身のネットワークが失敗した場合は障害を補足として表示します。ページが正常な場合もその旨を示します。サービス側か、自分の接続か?をご覧ください。ネットワーク自体が原因の可能性がある場合はネットワークによるブロックの層でサイトがブロックされているかを示し、接続元として認識される地域をサービスが拒否する場合は地域の層で示します。いずれも判定の先頭に表示されます。ここでブロック、障害ではないをご覧ください。

速度テストの結果が食い違う理由

Kilobatの速度テストは、Cloudflareの最寄りのデータセンターに1本ずつHTTPS接続を送り、上り・下りそれぞれ最大8秒・80 MBまで測定し、転送の前と最中に1.1.1.1へpingを送ります。Speedtest by Ookla、fast.com、macOSのnetworkQualityは複数の接続を同時に開き、独自にサーバを選ぶため、高速な回線や遠距離の回線では通常より高い値が出ます。速度タブのテストボタンの横で4接続を選ぶか、kilobat speedtest --parallelを実行すると、その違いが自分の回線でどれだけ影響するかがわかります。保存した各テストには、Cloudflareのデータセンター、接続数、リンク(Wi-Fiの帯域、チャンネル、信号、リンク速度、またはEthernet)、経由したVPN、測定中にこのMacが送受信したほかの通信量が記録されます。「履歴」›「速度テストの比較」、kilobat speed-compare、MCPのcompare_speed_testsでは、2つのテストを並べて違いを一覧にし、それぞれが結果にどう影響するかを注記します。示すのは違いであって原因ではありません。ネットワーク上のほかのデバイスも帯域を奪い合いますが、Kilobatからは見えません。

経路の履歴

「ツール」›「DNSとLAN」›「3回トレース」、またはkilobat trace <host> --rounds 3で、1ホップあたり3つのプローブを使って経路を3回トレースし、各トレースを保存します。「履歴」›「保存した経路」では、ホストへの保存済みトレースをすべてmtrのようにホップごとにまとめます:ロス、最小、平均、最大、最新の遅延、ルーターが変わったホップ、持続的な遅延が始まる場所。後続のホップが応答しているのに応答を省略するホップは、ルーターがプローブへの応答を制限しているだけで、ロスではありません。ローカルネットワークだけを測るなら、kilobat lan-test <device>で、iperf3 -sを実行しているデバイスに対して5秒間のiperf3テストを行います。iperf3はご自身でインストールしてください。Kilobatは何もインストールしません。

カクつきテスト

通話、ゲームのストリーミング、リモートデスクトップは、速度やロスに問題がなくてもカクつくことがあります。数百ミリ秒のpingの急増は、平均値に埋もれてしまうからです。ヘルスのカクつきテストは、ルーター(またはインターネット)に50 msごとに20秒間pingを送り、すべての応答をグラフにします。急増はローズ色で示し、中央値、p95、p99、最悪値も表示します。急増が一定の間隔で繰り返す場合はAirDrop/AWDLのスキャンが原因であることが多く、不規則な場合はネットワークの混雑、干渉、弱い信号が考えられます。テストはそのどちらかを判定します。多くのルーターはpingに1秒あたり10回程度しか応答しませんが、Kilobatはそのパターンを認識し、ロスとして数えません。Proでは、低遅延モードで比較でAirDrop/AWDLを一時停止してテストをやり直し、効果があったかどうかを示します。

低遅延モードは、AirDrop、Sidecar、ユニバーサルコントロールを15分、1時間、2時間、またはゲームや通話などのアプリが終了するまで(最長4時間)オフにします。時間が来たとき、アプリが終了したとき、Kilobatが終了したとき、ネットワークが変わったときには必ず元に戻し、Macがクラッシュした場合は次回の起動時に元に戻します。macOSが管理者の承認を求めます。ヘルスの「周辺」パネルには、AirDropの無線が動作しているかとそれを使っているもの、AirDropの公開範囲、そして求めに応じて、Wi-Fiと2.4 GHz帯を共有しているBluetoothデバイスも表示されます。

Wi-Fiメニューでは、ネットワークの下にBluetoothデバイスが並びます。クリックすると接続・切断できます。2.4 GHzのタグは、Wi-Fiと帯域を共有している接続中のヘッドフォン、キーボード、マウスを示し、既知の5 GHzネットワークへのショートカットも表示されます。その下にはAirDropがあり、公開範囲、リンクを使っているもの、低遅延モードが並びます。Bluetoothは「Bluetoothデバイスを表示」を選んだ後にだけ表示されるため、macOSがアクセスを求めるのもそのときだけです。

原因は相手側?それともこちら側?

Slack、Zoom、GitHubが読み込めないとき、知りたいのは原因が自分の接続か相手側かです。Kilobatは、Macで使われる70以上のサービスの公開ステータスページを読み取ります。AIプロバイダも含みます(下のAIエージェントを参照):Zoom、Slack、Microsoft Teams Free、Outlook.com、OneDrive、Google Meet、Gmail、Google Drive、Docs、Calendar、Chat、Discord、GoTo Meeting、FaceTime、iMessage、iCloud、App Store、Apple Music、Apple TV、Dropbox、Box、Notion、Airtable、Proton、1Password、Figma、Canva、Miro、Linear、Asana、Jira、Confluence、Trello、Grammarly、Claude、ChatGPT、Perplexity、Cursor、GitHub、GitLab、Bitbucket、npm、Docker、Postman、Vercel、Netlify、Supabase、Cloudflare、Tailscale、Epic Games、Reddit。アプリはバンドルIDで、サイトはドメインで対応付けます。kilobat down --listで、すべてのページとKilobatが読み取るアドレスを確認できます。

問い合わせるのは理由があるときだけです。「ヘルス」を開いて自分の回線に問題がないときは、前面にあるアプリやデータを送受信中のアプリについて。接続チェックがステータスページを持つホストやアプリを示したとき。通話がルーターより先でフリーズしたとき。そして、ステータスページを持つアプリが接続を開けない状態(2回続けてサンプリングしても、接続がサーバの応答を待ったままの状態)が続き、回線に問題がないときは、1分に1回。そのうえで、「Slackで障害が発生中」のような通知を、ステータスページを開くボタン付きでインシデントごとに1回送ります。各ページの応答は3分間保持し、待つのは最大5秒です。通知をオフにするには「設定」›「モニタリング」›「使っているサービスが停止したら通知」を使います。障害は「ヘルス」の上部と、メニューと「概要」のサービスの行に表示されます。この行は、使っているサービスに問題があるときだけ現れます。

Kilobatはページの内容をそのまま伝えるだけです。サービスが「すべてのユーザで停止中」と伝えるのはそのページが障害を報告しているときだけで、「お使いの環境の問題ではありません」と伝えるのは自分の回線に問題がないと確認できたときだけです。ページが正常なら問題は報告されていないと伝え、読み取れなかったページを障害とみなすことはありません。公開ステータスを出していないサービスもあります:Webex、職場・学校向けのTeams(ステータスは管理者に表示されます)、Spotify、Steam、WhatsApp、Telegram、Signal。ブラウザでの通話やサイトは接続チェックで確認します。Kilobatには、ブラウザのタブがどのサイトを開いているかが見えないためです。ターミナルではkilobat down slack、kilobat down github.com、実行中のアプリについてはkilobat downを使います。エージェントはservice_statusを使います。無料です。

AIエージェントとモデルプロバイダ

多くのAIのステータスページはいくつかの部分に分かれており、Kilobatは各アプリが使う部分を読み取ります。Anthropicのページにはclaude.ai、Claude API、Claude Codeがあるので、claude.aiの障害はClaude Codeには数えず、Claude Codeを名指ししたAPIのインシデントは数えます。OpenAIのページはChatGPT、Codex、APIに分かれ、GitHubのページではCopilotがほかと分かれており、CursorのページにはIDEとそのCLIがあります。名前の挙がった部分がページにない場合は、ページ全体を対象にします。対応:Claude、Claude Code、Claude API、ChatGPT、Codex、OpenAI API、GitHub Copilot、CursorとそのCLI、Google Cloudのフィードから取得するGemini Code Assist(GoogleでサインインしたときにGemini CLIが使います)とVertex AI、Mistral、Groq、Cohere、Fireworks AI、Together AI、Hugging Face、Perplexity、Windsurf、Zed、Warp、Replit、Lovable、Bolt、v0。

コーディングエージェントはプロセス(claude、codex、gemini、cursor-agent、copilot)で、どのアプリも接続先のAPIで判別します。接続が止まると、Kilobatはapi.anthropic.com、api.openai.com、api.githubcopilot.com、api.mistral.ai、api.groq.comやほかのプロバイダのAPIホストのアドレスを調べ、10分間保持します。そのため、設定したプロバイダを使うAiderのようなエージェントや、Claude APIを呼び出すエディタも検出できます。回線に問題がないのにそのいずれかが接続に失敗し続け、プロバイダが問題を報告している場合、通知には両方の名前が入ります:「Claude Code:Anthropicが障害を報告 — お使いの接続の問題ではありません」。エラーで止まっているエージェントは、自分で確認できます:kilobat down claude-code、kilobat down api.openai.com、またはMCPツールservice_status。kilobat down claudeとkilobat down openaiは、そのページのすべての部分を一覧表示します。

Kilobatが読み取れる公開フィードがないため、対応していないもの:GrokとxAI API(ページがブラウザ以外からのリクエストを拒否します)、DeepSeek、OpenRouter、Replicate(ステータスは現在Cloudflareのページの一部です)、JetBrains AI、Kiro、Amazon Q(AWSへのサインインが必要)、Google AI StudioのGemini API。OllamaとLM StudioはMac上で動作します。

ここでブロック、障害ではない

ステータスページが正常でもサイトが読み込まれない場合、ホテルや空港のWi-Fi、学校や職場のネットワーク、携帯電話事業者、国の規則など、接続中のネットワークがブロックしている可能性があります。接続チェック、kilobat down、またはアプリの接続失敗がその可能性を示すとき、Kilobatは測定し、「Slackは障害ではなくこのネットワークでブロックされているようです。このネットワークでは名前を解決できませんが、安全なリゾルバは実際のアドレスを返します」のように表示します。ネットワークの種類(「デバイス」で自宅として指定したネットワーク、モバイルデータやスマートフォンのテザリング、サインインページが表示された公衆Wi-Fi、または通常のWi-Fi)を示し、別のネットワーク、モバイルデータやローミングを試す、そのネットワークの管理者に問い合わせるといった中立的な選択肢のみを提案します。Kilobatはブロックを測定し、回避を支援したり、その方法を提案したりすることはありません。

判定条件とそれぞれに必要な対照:

  • DNSの改ざん。このMacのDNSが名前は存在しないと返す、応答しない、公開サービスが使わないアドレス(0.0.0.0、127.0.0.1、プライベートアドレス)を返す、架空の名前と同じアドレスを返す、またはその名前の有効な証明書を提示できないサーバに送る一方、信頼できるリゾルバへのDNS-over-HTTPS問い合わせ1回が、有効な証明書を提示できる公開アドレスを返す場合です。有効な証明書を提示する別のアドレスや同じアドレスブロック内のアドレスは、CDNによる近くのサーバの選択であり、改ざんではありません。信頼できるリゾルバでも存在しない名前、すべての名前で失敗するDNS、そのドメインに対するVPNや企業のスプリットDNS、プライベートネットワークのみが知る名前は対象にしません。
  • 切断される安全な接続。接続が開いた後、サイト名を指定するとすぐTLSハンドシェイクがリセットされるか応答がなくなることが2回続き、同じサーバが別のサイト名では応答する場合です。どの名前にも応答しないサーバ、2回目に成功した場合、接続自体が開かない場合は通常の失敗として扱います。
  • どのアドレスにも接続できない。信頼できるリゾルバ自体は応答する一方で、サービスのどのアドレスにも接続できない場合です。サービスのステータスページに問題の報告がない場合のみ対象とし、まだページに報告されていない障害でも同じ状態になると判定に明記します。
  • ブロックページ。暗号化されていないHTTPリクエストにHTTP 451またはサービス自身のドメイン外へのリダイレクトが返る場合、上記の診断結果の裏付けになります。それ単独では十分な証拠にはなりません。

Wi-Fiのサインインページ、Kilobat自身のルール、保護またはキルスイッチ、ステータスページに報告された障害は、いずれも接続失敗をより適切に説明するため、ブロックとして報告しません。VPNがオンの場合、チェックはVPNを経由し、ブロックはVPNの経路上にあり必ずしもこのネットワーク上ではないと判定に表示します。

プライバシー。DNS-over-HTTPSの問い合わせは、信頼できるリゾルバにアドレスを指定して送ります。「設定」›「監視」またはkilobat settings block-check-resolver quad9でQuad9(9.9.9.9)を選ばない限りCloudflare(1.1.1.1)を使用し、障害を診断中に失敗した名前1つに対して1回だけ問い合わせます。ハンドシェイクはサービス自身のアドレスに送られ、架空の名前はexample.comの配下です。Kilobatはブロックされたサイトのリストを確認せず、バックグラウンドスキャンもしません。

ステータスページのあるアプリが接続に失敗し続け、そのページが障害を報告していない場合、Kilobatはサービスとネットワークごとに最大1時間に1回チェックし、ブロックを「サービス」に表示して、サービスとネットワークごとに1日1回通知します。「設定」›「監視」›「このネットワークでサービスがブロックされているように見えるときに通知」またはkilobat settings block-alerts offでオフにできます。kilobat down slackは指定した各サービスに1回接続し、失敗した場合に同じチェックを実行します。kilobat why slack.comまたはkilobat doctor slack.comでは層として追加されます。エージェントはservice_statusとdiagnose_connectionのblockフィールドで同じ情報を取得します。ステータスページと同様に無料です。

お住まいの地域では利用できません

一部のサービスや、EUの一部地域におけるAIツールなどの機能は、すべての地域で提供されておらず、アドレスから推定される接続元に基づいてサービス自体が拒否します。これは障害でも、このネットワークによるブロックでもありません。Kilobatがその旨を表示するのは、検証済み接続を通じたサービス自身の応答がある場合だけです。HTTP 451、またはOpenAIのunsupported_country_region_territory、claude.aiの地域ページ、Anthropic APIの非対応国・地域・地域区分に関するエラー、Gemini APIの「User location is not supported」など、実際に使われた表現が対象です。判定には「OpenAIはお住まいの地域ではサービスを利用できないと報告しています。現在の接続はドイツからのものに見えます」のように、公開アドレスの登録国を表示します(kilobat ip --publicと同じ方法でVPN経由でも確認)。VPNやローミングeSIMの出口、またはこのMacの時間帯が別の国にある場合もその旨を示します。事実のみを表示し、地域制限の回避方法は提案しません。回避はサービスの利用規約に違反する場合があります。選択肢はサービスの対応国リストとサポートです。アプリが受け取ったエラーをkilobat why api.openai.com --error '…'、またはdiagnose_connection内のerrorで渡して認識させることもできます。

プロバイダに渡せるレポート

接続が悪い場合、プロバイダやIT担当者は根拠を求めます。「ヘルス」のレポートボタンは、このネットワークで過去24時間または7日間にKilobatが記録した内容からレポートを作成します。障害、ルーターまでとその先の遅延、pingの損失、プランと比較した速度テスト、追加した場合は接続できないサイトのチェックを含みます。各結果には測定内容と場所を示し、責任の所在は断定しません。サポートチャット用にテキストをコピーするか、PDFとして保存または共有できます。ネットワーク名、すべてのローカルIPとハードウェアアドレス、デバイス名、ネットワークを使用したアプリは含まれません。ターミナルではkilobat support-report --host github.com、またはページを表示する--html --output report.htmlを実行します。サイト名、URL、パスはリダイレクト内のものも含めデフォルトでは除外されます。それらの名前をレポートに含めたい場合だけ、サイト名を含めるをオンにするか、CLIで--include-sites、MCPのcreate_support_reportにinclude_site_names: trueを渡してください。サイトチェックによる公開IPの測定値は残ります。

障害の補償

多くのプロバイダは長い障害のあとに補償を支払う義務があり、申請しなくても支払うところもあります。「履歴」›「障害の補償」は、Kilobatがプロバイダ側の原因だと示せたその月の障害を合計し、ご利用のプロバイダが公開しているルールと照らし合わせます。障害として数えるのは、2つのインターネットサーバとHTTPSチェックがすべて失敗している間もルーターがKilobatのチェックに応答し続けていた場合か、StarlinkアンテナがStarlinkのネットワークの問題(衛星なし、応答なし)として記録した場合だけです。自分のルーターやWi-Fiでの障害、ホテルやカフェのWi-Fiのサインインページが接続を止めていた時間、判断に必要なチェックが足りなかった障害、Macがスリープしていた時間はすべて除外し、別に表示します。カードには、最長の障害と月の合計がルールの基準と並んで表示され、Kilobatが確認したルールが当てはまる場合は、対象となりうる補償も表示されます。

プロバイダを選ぶか、「検出」を押します。KilobatはCloudflareにパブリックアドレスを、RIPE NCCにそのアドレスが属するネットワークを問い合わせ、そのネットワークをリストと照合します。見積もりのために、インターネットの月額料金を入力します。ルールはアプリに組み込まれていて、それぞれに出典と確認した日付が付いています:BT、EE、Plusnet、Sky、Virgin Media、Vodafone、TalkTalk、Hyperoptic向けのOfcomの自動補償(報告した障害が丸2営業日以内に復旧しない場合、1日あたり£10.34)、ドイツのすべてのプロバイダに適用される§ 58 TKG、スペインのReal Decreto 899/2009とイタリアのAGCOMの補償、そしてXfinity、AT&T FiberとInternet Air、Orange、Freeが公開している規約です。Spectrum、Verizon、Cox、T-Mobile Home Internet、Starlinkなど、Kilobatがルールを確認できなかったプロバイダについては、同じ証拠を添えて申請はできるとカードが伝えます。

「申請文をコピー」を使うと、お客様番号の欄、各障害の日付と長さ、Kilobatの測定結果、ルール、金額を含むメッセージをアプリの言語で作れます。「申請ページを開く」でプロバイダの申請受付ページに移動でき、「プロバイダ向けレポートを保存」で測定結果をPDFとして保存して添付できます。Xfinityの120日のように申請期限があるルールでは、「リマインド」で期限前に通知を設定できます。Kilobatが何かを送信することはありません。Kilobatは障害が始まった時点から数えますが、プロバイダは報告した時点から数え、対象かどうかを判断するため、Kilobatは常に「対象になる可能性がある」としか言いません。「設定」›「モニタリング」›「障害が補償の対象になりそうなときに通知」をオンにすると、障害ごとに1回、1日に最大1回通知します。カードの見積もり、申請文、通知はKilobat Proの機能です。ターミナルでは、kilobat creditでその月を表示し、--draftで申請文を出力し、credit providersでルールの一覧を表示します。エージェントはget_outage_creditで読み取れます。

プランチェック

契約どおりの速度が出ているかを確かめられます。「設定」›「ネットワーク」›「プランの速度」または速度テストの結果の下に、このネットワークのプランのダウンロード速度を入力します。すると「速度」タブで、そのネットワークでの過去30日間のテストと比べて表示します:「契約500 Mbpsの61%でした」、中央値、夜間の中央値とそのほかの時間帯の比較、プランの半分を下回った頻度。ネットワークごとにプランを持つので、カフェの結果が自宅のプランに影響することはありません。Kilobat Proでは、「設定」›「ネットワーク」›「プランチェック」をオンにすると、Kilobatが1日最大3回、毎日違う時間に軽いテストを行い、そのうち1回は必ずプロバイダが最も遅くなりがちな夜のピーク(午後7時〜11時)に行います。1回のチェックでは4本の接続で25〜80 MBを使い、プランの速度なら約2秒です。通話中でなく、VPNが通信を運んでおらず、Macのほかの通信が少なく、電源接続中またはバッテリーが50%を超えているときまで待ち、従量制ネットワークでは実行しません。プロバイダ向けレポートの冒頭には、その月の結果が載ります:「30日間でスケジュールチェック41回:中央値は305 Mbpsで、契約している500 Mbpsの61%。夜間は180 Mbpsです。」ターミナルではkilobat planで同じ内容を表示でき、エージェントはget_plan_checkで取得できます。

サービス速度

速度テストは近くのテストサーバまでの経路を測定します。GitHub、iCloud、Steam、npm、Docker、Hugging Faceなど実際のダウンロード先は別の経路の先にあり、インターネットの他の部分が速くても、プロバイダからその1つへの接続が混雑することがあります。Kilobatは普段のダウンロードを測定します。5 MB以上のダウンロードについて、同じサービスの接続をまとめ、実際に転送していた秒数で測ります。アプリが要求したサイト(ネットワークフィルタ実行中)、アプリ、逆引きDNS名、またはアプリに同梱されたGitHub、Apple、Valve、Dropbox、Akamai、Fastly、Cloudflare、Amazon CloudFront、Google、Microsoftの公開アドレスリストに基づくネットワーク名で識別します。追加の通信は発生しません。映像、音楽、通話は再生速度に合わせて転送されるため集計せず、VPNで通信中も何も集計しません。

「速度」›「サービス」には、このネットワークの各サービスについて、過去30日間の通常速度、最新のダウンロード、回線に対する割合を表示します。回線速度には、このネットワークの最新の速度テストとKilobatが観測した最速のダウンロードのうち高い方を使います。Kilobat Proでは、明らかな場合にのみ「ヘルス」が通知します。過去1日に同じサービスからの3回以上のダウンロードが回線速度の3分の1未満で、それぞれ同じ時間帯に別のサイトまたは速度テストが3倍以上速く、その日の当該サービスのダウンロードの大半が遅く、他のすべての利用ネットワークでも遅いわけではない場合です。自分の他のダウンロードに帯域を取られたものは数えません。「今夜はプロバイダからGitHubへの経路が遅くなっています。GitHubからの3回のダウンロードは約7 Mbpsでしたが、同じ時間帯に他のサイトは267 Mbpsでした。低速化はプロバイダとGitHubの間で発生しており、Wi-FiやこのMacが原因ではありません。」

続いて根拠を示します。サービスのステータスページが問題を報告している場合は、サービス側の可能性が高いと伝えます。それ以外はサービスのサーバまでの経路を1回追跡し、どのホップで遅延が急増するかを示します。十分な履歴があれば、毎晩7時から11時など遅くなる時間帯を特定します。これは混雑する時間帯に2つのネットワーク間の接続が混雑している典型的な兆候です。続いて、別の経路でサービスに到達するVPNや別のDNSを試す、プロバイダ向けレポートの該当セクションを使ってプロバイダに伝える、後で試すといった対処法を示します。

「このサービスをテスト」は、GitHubリリース、AppleのmacOS復元イメージ、npmやPyPIのパッケージ、Cloudflareの速度テストなど、サービスが公開するファイルから最大25 MBをダウンロードします。ボタンを押したときに1回だけ実行し、従量制ネットワークでは実行しません。ターミナルではkilobat service-speedで表と診断結果を表示し、--test githubでテストを実行、--listでファイルを表示します。エージェントはget_service_speedから履歴を取得します。