Kilobatドキュメント

メニューバー、ターミナル、AIエージェントからKilobatを使うために必要なことをまとめました。

インストール

CLIは無料のオープンソースです。Homebrewでインストールします:

brew install seifip/kilobat/kilobat

kilobatと、その短いエイリアスのkbがインストールされます。以下の例はどちらでも動作します。

または、Macアプリをダウンロードしてください。CLIもKilobat.app/Contents/Helpers/kilobatに含まれています。

Mac App StoreのKilobat Lite

Kilobat Liteは、近日Mac App Storeで公開予定の無料版です。AppleのApp Sandbox内で動作し、そこで使える機能を備えています:ヘルスチェック、速度テスト、Wi-Fiレーダーと周辺のネットワーク、「接続できない理由は?」、スリープ防止。アプリごとの通信、ルールとネットワークフィルタ、DNSの変更、蓋を閉じた状態用のヘルパー、CLIは、サンドボックスでは許可されない権限が必要なため、このサイトで配布しているKilobatアプリでのみ使えます。2つは並べてインストールできます。

シェルのタブ補完をオンにします:

# zsh
echo 'source <(kilobat completion zsh)' >> ~/.zshrc
# fish
kilobat completion fish > ~/.config/fish/completions/kilobat.fish

クイックスタート

kilobatを単独で実行するとインタラクティブなメニューが開きます。矢印キーまたはj/kで移動、Enterで開く、数字でジャンプ、qで終了します。

kilobat status --watch     # live traffic by app; q quit, s sort, f filter, / search
kilobat diagnose           # what is slowing your connection
kilobat speedtest          # speed and latency under load
kilobat profile travel     # switch to the Travel profile
kilobat block com.example.App

kilobat <command> --helpを実行すると、各コマンドのヘルプを表示します。

コマンド

モニタ

kilobat status [--watch] [--json]アプリごとのライブ通信とセッションの予算。JSONスナップショット、または--watchでJSON Linesのストリーム
kilobat report [--csv|--json] [--summary] [--days 1…365]ローカルに記録された使用履歴、または日別の合計と上位アプリ。CSVはアプリごとに1行
kilobat report compare --total 40GB [--unit GB|GiB] [--direction both|download|upload] (--from DATE --to DATE | --period last-month) [--network NAME] [--json|--csv]ルーターやプロバイダの数値を、このMacでKilobatが同じ期間・同じ単位で記録した値と並べて表示。記録した時間、すべての空白期間、差が出たおもな理由も示します
kilobat health-history [--hours 1…720] [--json]アプリが記録したルーター、インターネット、ジッター、DNSの確認結果の推移
kilobat proxy [routes [--app name] | test] [--json]プロキシアプリ、システムプロキシとその問題、各アプリが通ったルールとノード、各ノードの応答速度
kilobat vpn [--json]VPNと、DNSやIPv6がVPNを経由していないかどうか
kilobat calls [--limit 1…200] [--json]通話ごとに、フリーズした回数とその原因(アプリが作成したレポートから)
kilobat overlay [--port 7171] [--target internet|router|host]OBSなどの配信アプリ向けのライブpingオーバーレイ。Ctrl-Cまでlocalhostで配信します
kilobat support-report [--hours 1…168] [--host h] [--markdown|--html] [--output f]プロバイダやITヘルプデスク向けのレポート:検出結果、遅延、通信障害、速度テスト。ネットワーク名やローカルアドレスは含みません
kilobat networks [forget <name>]これまでに接続したネットワークと、それぞれに記憶したプロファイル、予算、データ料金
kilobat networks cost <metered|unmetered|automatic> [name]現在のネットワーク、または指定したネットワークを従量制または定額として扱うか、macOSの判定に戻します
kilobat bandwidth [app] [hour|day|week|month] [--back N] [--json]1つのアプリの送受信バイト数を時間・日・週・月単位で表示し、ピークも示します。--backで以前の期間にさかのぼります
kilobat access-policy <bundle-id> [--json]アプリの開発元がInternet Access Policyで宣言している接続とその理由

診断

kilobat diagnose [--json]Wi-Fi、ルーター、インターネット、DNS、キャプティブポータルの確認とアドバイス
kilobat radar [--watch] [--json]信号スコアと最適な場所の探索
kilobat scan [--json]周辺のネットワーク、チャンネル、チャンネル幅
kilobat channels [--json]チャンネルごとの混雑度と、最も空いているチャンネル
kilobat speedtest [--json] [--budget-mb 1…80] [--parallel]Cloudflareでの速度、負荷時の遅延、通話とストリーミングの判定。最大80 MB。デフォルトは1接続で、--parallelを付けると多くの速度測定サイトと同じく4接続を使います
kilobat speed-compare [<test> <test>] [--json]保存した2つの速度テストの違い:ネットワーク、時刻、サーバ、接続数、Wi-Fiの帯域と信号、VPN、ほかの通信
kilobat ip [--public] [--json]通信の出口:インターフェイスとVPNの有無をこのMac上で読み取ります。--publicを付けるとCloudflareにパブリックIPとその登録国も問い合わせます
kilobat stutter [--seconds 10…60] [--target router|internet|<host>] [--json]50 msごとにpingを送り、速度テストでは見逃す短い遅延の急増と、その発生タイミングや繰り返しの有無を調べます
kilobat airdrop [status|everyone|contacts|off] [--json]AirDropの公開範囲、AirDropリンク(AWDL)とそれを使っているもの。公開範囲を変更するとシステム設定が開きます
kilobat bluetooth [--json]Bluetoothデバイスと、それらがWi-Fiと2.4 GHz帯を共有しているかどうか
kilobat dns [automatic|cloudflare|google|quad9|flush]DNSの確認・設定、またはキャッシュの消去

Wi-Fi

kilobat wifi [status]現在のネットワーク、信号、チャンネル、リンク速度
kilobat wifi on|off|restart|disconnectWi-Fiの電源と接続を操作
kilobat wifi join <name> [--password-stdin]保存済みのネットワーク、または新しいネットワークに接続
kilobat wifi known優先順に並んだ保存済みネットワーク
kilobat wifi password|share <name>保存されたパスワード、またはスマートフォンで読み取るQRコードを表示
kilobat low-latency on [--for 15m|1h|2h] [--until-quit <app>]通話やゲーム中にAirDropとAWDLを一時停止。デフォルトは15分、最長4時間、またはアプリが終了するまで
kilobat low-latency offAirDropとAWDLを元に戻します。アプリで開始した一時停止にも使えます

スリープ防止とエージェント

kilobat awake [--display]Ctrl-CまでMacをスリープさせません。--lid-closedを付けない限り、蓋を閉じるとスリープします
kilobat awake --lid-closed [--for 2h|--until-quiet|-- <command>]アプリの電源ヘルパーを使い、蓋を閉じた状態でも最大8時間動作を続けます。設定で「蓋を閉じた状態での実行を許可」をオンにする必要があります
kilobat awake --for 90m|2h|45s一定時間スリープさせない
kilobat awake --until-quiet [--app <id>] [--quiet 1…60]ダウンロードまたは指定したアプリの通信が落ち着くまでスリープさせません。デフォルトでは16 KB/s未満が3分間続いた時点で終了します
kilobat awake -- <command> [args]コマンドの実行中はスリープさせず、終了後にそのプロセスが送受信したデータ量を報告し、同じ終了ステータスで終了します
kilobat awake --while-frontmost <app> [--display] [--for 2h]指定したアプリが最前面にある間だけスリープさせません。読書やプレゼン向けです。ほかのアプリに切り替えるとMacはスリープできます。アプリの終了時、バッテリー残量20%、または--forの時間で終了します。--displayで画面もオンのままにします
kilobat settings awake-on-power on|off電源アダプタが接続されている間はアプリがスリープさせず、外すと再びスリープできるようにします
kilobat settings keep-screen-on on|offアプリがスリープさせないすべての対象(タイマー、ダウンロード、エージェント、最前面のアプリ、電源接続中)で、画面もオンのままにします
kilobat sessions [--days N] [--json]アプリが記録したスリープ防止のセッションとAIエージェントの実行。使用データ量とネットワークの変化も表示
kilobat agent-event <start|working|waiting|done|failed> [--agent name] [--stdin-json|--json-arg]エージェントのフック用:実行の開始、入力待ち、完了をアプリに伝えます。何も出力せず、常に0で終了します
kilobat why <url|host> [--app <id>] [--proxy <url>] [--context container|vm|remote|provider] [--failed-at <time>] [--json]接続を止めている層を特定します:ネットワークとインターフェイス、プロキシとアプリ独自のプロキシ、DNS、Kilobatのルール、IPv4とIPv6、TLS、サーバ、各リダイレクト。指定したURLそのものにリクエストし、出力ではクエリの値を隠します
kilobat conditions [--json]従量制、省データモード、VPN、遅延、バッテリー、温度、蓋を閉じてよいかどうか。長時間の実行に向けたアドバイス付き

コントロール

kilobat profile [travel|work|unrestricted]プロファイルを一覧表示または選択
kilobat allow|block <bundle-id> [--minutes 1…1440] [--profile name]アプリのルールを保存。一時的なルールや、別のプロファイル向けのルールにもできます
kilobat reset <bundle-id> [--profile name]アプリのルールを削除し、デフォルトに従わせます
kilobat rules [--profile name] [--json]プロファイルのルール
kilobat limit [GB] [--cycle session|daily|weekly|monthly] [--reset-day N] [--alert 50,80,100]このネットワークのデータ予算、リセットのタイミング、通知のタイミングを確認・設定
kilobat quota <bundle-id> <GB> [--upload] [--all-networks]予算サイクルごとに1つのアプリのデータ量を制限。quota <bundle-id> --removeで解除します
kilobat quota --list [--json]アプリの割り当てと、今のサイクルでの使用量
kilobat updaters [--json]従量制ネットワークで一時停止しているアップデータ、このネットワークで通過してしまったアップデートのバイト数、アプリ内で自らアップデートするアプリ
kilobat updaters on|offネットワークが従量制の間、Google UpdaterやmacOSのソフトウェアアップデートなどのアップデート用ヘルパーを一時停止します(デフォルトでオン)。アプリ自体は使い続けられます
kilobat settings [name [value] ]new-apps(allow、ask、block)、apple-software、auto-travel、pause-updaters、awake-on-power、public-ip(デフォルトはオフ)、speed-streams、alerts、menu-barなどの設定を確認・変更
kilobat approvals [--json]新しいアプリを確認するモードで承認待ちになっているアプリ。署名者と接続先も表示
kilobat approve|deny <app-id> [--minutes 1…1440]待機中のアプリをすぐにブロック、または許可するかどうかをKilobatで本人に確認
kilobat block-host|unblock-host <domain|IP|CIDR> [--app <id>]ドメイン(サブドメインを含み、*.example.comも可)、IP、範囲を、すべてのアプリまたは1つのアプリについてブロック
kilobat quit <PID> [--force]プロセスを終了

セットアップ

kilobat openMacアプリを開く
kilobat doctorアプリ、ネットワークフィルタ、モニタリングを確認
kilobat completion [zsh|bash|fish]シェル補完スクリプトを出力
kilobat mcpAIエージェント向けにMCPサーバをstdioで実行
kilobat updateHomebrewでインストールしたものをアップデート

上級

kilobat destinations [--pid PID] [--json]プロセスのソケットの観測結果
kilobat devices [--bonjour] [--json]ネットワーク上のデバイスとBonjourサービス
kilobat devices name <MAC> <name>デバイスに名前を付ける
kilobat trace <host> [--rounds 2…10] [--json]最大12ホップの経路調査。--roundsで複数回トレースし、各ホップのロスと遅延を表示
kilobat route-history --host <host> [--json]ホストへの保存済みトレースをすべて、mtrのようにホップごとに表示:ロス、最小、平均、最大、経路の変化、遅延が始まる場所
kilobat http-check <URL> [--json]DNS、接続、TLS、最初のバイトまでのタイミング
kilobat dns-benchmarkリゾルバのタイミング
kilobat lan-test <server> [--reverse] [--json]iperf3 -sを実行しているデバイスへの5秒間のiperf3テスト。iperf3が必要ですが、Kilobatがインストールすることはありません
kilobat interfaces [--json]物理インターフェイスとVPNのカウンタを個別に表示
kilobat capture <interface> <file.pcap>上限付きのパケットキャプチャ
kilobat connection-rule allow|block <app> <host> [port]接続先ルールを保存
kilobat blocklist status|import <path>|clearドメインのブロックリストを管理
kilobat wake <MAC-address>Wake-on-LANパケットを送信
kilobat spots [save <name>|remove <id>]保存したWi-Fiの場所
kilobat outages / speed-history [--days N]記録された障害と速度テストをJSONで出力

スクリプトとJSON

パイプ時は出力が自動でJSONに切り替わるため、スクリプトで人間向けの表示を解析する必要はありません。明示したい場合は--jsonを指定します。

kilobat diagnose | jq .health            # "good", "degraded", "poor" or "unknown"
kilobat status --watch --json             # one JSON object per line, every second
kilobat report --summary --days 7 --json  # daily totals and top apps
kilobat report compare --total 40GB --period last-month --csv  # beside your provider's figure

NO_COLORを設定すると色をオフにできます。DNSの変更には管理者の承認が必要です。

AIエージェントとMCP

Claude Code、Codex、Cursor、Gemini CLI、Claude Desktop、Windsurf、Cline、Zed、そのほかのMCPクライアントの手順付きセットアップは、AIエージェントにKilobatを設定するにまとめています。

Claude Code、Codex、Cursorなどのエージェントに、次のプロンプトを渡します:

Install the Kilobat CLI with `brew install seifip/kilobat/kilobat`. Run `kilobat diagnose --json`, `kilobat status --json` and `kilobat scan --json`, then tell me what is slowing my connection and how to fix it. Ask me before changing DNS, profiles or rules.

MCPサーバ

kilobat mcpはstdio上でModel Context Protocolを話します。Claude Codeに追加するには:

claude mcp add kilobat -- kilobat mcp

または、mcpServers設定を読み込む任意のクライアントに追加します:

{ "mcpServers": { "kilobat": { "command": "kilobat", "args": ["mcp"] } } }

読み取り専用ツール:get_status、diagnose_network、diagnose_connection、get_conditions、get_updaters、get_wifi、scan_wifi、suggest_wifi_channel、get_usage_report、compare_usage、get_app_bandwidth、get_access_policy、get_network_history、list_sessions、benchmark_dns、check_url、list_connections、list_devices、trace_route、get_route_history、compare_speed_tests、get_exit_path(エージェントがpublic_ipを渡したときだけ、CloudflareにパブリックIPを問い合わせます)、list_networks、list_rules、list_approvals、list_blocked_connections、run_stutter_test(pingを送るだけです)、get_nearby_radios、create_support_report(プロバイダ向けのレポートで、エージェントがユーザに渡します)。いずれもCLIと同じJSONを返します。run_speedtestはデータを使います。run_lan_testは自分のネットワーク上で5秒間データを送受信し、事前に確認します。keep_awakeとrelease_awakeは、設定を変えずに一定時間アイドルスリープを防ぎます。keep_awakeにlid_closedを付けると、許可済みであれば蓋を閉じた状態でもMacを動かし続け、その前に確認を求めます。変更系のツールは変更として印が付けられ、説明文でエージェントに事前の確認を指示しています:set_profile、set_app_rule、set_new_app_mode、decide_approval、block_destination、set_budget、set_app_quota、set_network_cost、set_updater_pause、set_dns(キャッシュの消去も行います)、set_airdrop_visibility(AirDropの設定を開きます)。

接続できないとき

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>で確認してください。

エージェントを接続

フックがない場合、Kilobatはエージェントの通信とCPUから判断するため、静かなエージェントが完了したのか入力待ちなのかを区別できません。フックを使うと、実行がどのプロジェクトのものか、いつ入力待ちになり、いつ完了したかをKilobatに伝えられます。各フックはkilobat agent-eventを実行します。これは何も出力せず、すぐに戻り、常に0で終了するため、エージェントの動作を妨げることはありません。アプリが起動していない場合、イベントは小さなファイルに保存され、アプリの起動時に読み込まれます。Kilobatが読み取るのはセッションID、フォルダ、短い状態テキストだけで、プロンプトや応答は読みません。既存のフックとマージして使ってください。

Claude Code:~/.claude/settings.jsonに記述します。各フックはセッションIDとフォルダを含むJSONをstdinで受け取り、--stdin-jsonがそれを読み取ります。権限や入力の確認は「入力待ち」、Stopはバックグラウンドタスクの終了後に「完了」、レート制限はリセットまで「入力待ち」を意味します。

{
  "hooks": {
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "Notification": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "Stop": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "StopFailure": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }],
    "SessionEnd": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent claude --stdin-json" }] }]
  }
}

Codex(最も簡単な方法):~/.codex/config.tomlのnotifyを使います。Codexは各ターンの後にJSON引数を渡し、--json-argがそれを読み取ります。通知されるのは完了だけで、Codexが実行できるnotifyプログラムは1つだけです。

notify = ["kilobat", "agent-event", "done", "--agent", "codex", "--json-arg"]

入力待ちも通知したい場合は、代わりに~/.codex/hooks.jsonでCodexのフックを使い、/hooksで信頼済みにします:

{
  "hooks": {
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent codex --stdin-json" }] }],
    "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent codex --stdin-json" }] }],
    "PermissionRequest": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent codex --stdin-json" }] }],
    "Stop": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent codex --stdin-json" }] }]
  }
}

Gemini CLI:~/.gemini/settings.jsonに記述します。Gemini CLIはnodeとして動作するため、Kilobatはその通信を実行と結び付けられませんが、状態は届きます。

{
  "hooks": {
    "SessionStart": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent gemini --stdin-json" }] }],
    "BeforeAgent": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent gemini --stdin-json" }] }],
    "Notification": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent gemini --stdin-json" }] }],
    "AfterAgent": [{ "hooks": [{ "type": "command", "command": "kilobat agent-event --agent gemini --stdin-json" }] }]
  }
}

Cline(CLI、SDK、Kanban):Kilobatのプラグインをインストールします。Clineのプラグインストアにファイルを1つ追加するだけで、ほかの設定は変更しません。cline plugin uninstall kilobatで削除できます。

cline plugin install https://kilobat.app/agents/cline/kilobat.ts

報告する状態は、作業中、完了、失敗(Clineが開いている間)、キャンセル、レート制限(Cline自身のリトライが尽きた後)、入力待ち(Clineが質問しているとき)です。実行を完了とする前に、サブエージェントやチームメイトの終了を待ちます。Clineの承認プロンプトはプラグインからは見えないため、その部分は通信とCPUによる検出で補います。

そのほかのエージェントも、独自のフックからkilobat agent-event start|working|waiting|done|failed --agent <name> --session <id> --cwd <folder>を呼び出せます。手動で試すときは--verboseを付けると、何が起きたかを確認できます。

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

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からは見えません。

VPNとパブリックIP

「ヘルス」›「通信の出口」、Wi-Fiメニュー、kilobat ipでは、デフォルトルートが使っているインターフェイスと、それがVPNかどうかを表示します。このMacのルーティングと、macOSが接続中として表示するVPNから読み取ります。Tailscaleで出口ノードを使わない場合のように、VPNに接続していてもデフォルトルートがWi-Fiのままなら「スプリット」と表示され、一部の宛先だけがVPNを通ります。「設定」›「ネットワーク」›「パブリックIPを調べる」をオンにすると、Webサイトから見えるアドレスも表示します。ネットワークの変更時と30分ごとにCloudflareに問い合わせ、Kilobatに同梱のDB-IPデータで登録国を調べます。Cloudflareにそのリクエストが見えるため、デフォルトではオフです。kilobat ip --publicは1回だけ問い合わせます。登録国はあなたやサーバの所在地ではなく、登録国もVPNも、接続がプライベートまたは匿名であることを示すものではありません。「設定」›「メニューバー」›「VPN」で、コウモリの横にオン、スプリット、オフ(照会がオンなら国コードも)を表示できます。履歴には、VPNのオン/オフとパブリックIPの変更が記録されます。

経路の履歴

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

アプリが最前面にある間

読書やプレゼンのときは、ティーカップの「アプリが最前面にある間」を使うと、選んだアプリが最前面にある間だけMacをスリープさせず、ほかのアプリに切り替えるとすぐにスリープできるようにします。ティーカップの「画面をオンのままにする」で、Kilobatがスリープさせないほかの対象と同じく、画面もオンのままにするかどうかを決められます。KilobatはmacOS自身のアプリ切り替えイベントを利用します。ポーリングやマウスの移動、操作の偽装は行わないため、監視ソフトウェアに対して在席を装うことはできません。アプリの終了時、オフにしたとき、またはバッテリー駆動で残量20%(蓋を閉じた実行用に設定した下限)になると終了し、蓋を閉じた状態での動作は維持しません。独自に保持しているため、アプリを切り替えたり終了したりしても、スリープ防止のセッションやエージェントの実行が終わることはありません。ターミナルからは:kilobat awake --while-frontmost Keynote --display。

電源接続中

「電源接続中はスリープさせない」(「設定」›「スリープ防止とエージェント」)、またはティーカップの「電源接続中」をオンにすると、電源アダプタを接続してから外すまでMacをスリープさせません。ステータス表示には「電源接続中はスリープしません」と表示されます。「画面をオンのままにする」で、画面もオンのままにするかを決められます。オフにすると、Kilobatを再起動しても次に電源を接続するまでオフのままです。KilobatはmacOS自身の電源ソース通知で切り替えを検知し、ポーリングは行いません。電源を外して終わるのは、電源の接続で始まったセッションだけです。自分で開始したセッション、待っているダウンロード、最前面のアプリ、エージェントの実行、ターミナルからの保持は続きます。蓋を閉じた状態でMacを動かし続けることはありません。ターミナルからはkilobat settings awake-on-power on、画面はkilobat settings keep-screen-on onで設定します。kilobat conditions --jsonはこれをawakeOnPowerとして報告します。

蓋を閉じた状態での実行

Kilobatがスリープさせないようにしていても、蓋を閉じるとMacはスリープします。ただし、「設定」›「スリープ防止とエージェント」で蓋を閉じた状態での実行を許可した場合は別です。許可すると、rootとして動作する小さなヘルパーがインストールされ、macOSが「システム設定」→「一般」→「ログイン項目」で許可を求めます。オンにすると、エージェントが作業中の間は蓋を閉じてもMacが動き続けます。ティーカップのメニューで「蓋を閉じた状態でも」にチェックを入れたスリープ防止のセッションも同様です。入力待ちのエージェントがMacを動かし続けるのは、「エージェントの入力待ち中もスリープさせない」がオンの場合だけで、最長30分です。

バッグの中で閉じたMacは、過熱したりバッテリーを使い切ったりするおそれがあります。そのためヘルパー自体が、バッテリー残量が下限(デフォルトは20%)に達したとき、Macが高温になったとき、電源接続時のみを選んだ場合は電源が外れた直後、設定した最長時間(最大8時間)が過ぎたとき、そしてKilobatの終了から1分後にMacをスリープさせます。保持中にヘルパーまたはMacが再起動した場合は、まず設定を元に戻します。Kilobatは各保持がどう終わったかを、「Macのスリープを許可:バッテリー残量20%」のように表示します。

ターミナルからkilobat awake --lid-closedを実行すると、アプリに同じ保持を求め、できない場合は理由を示します。保持はコマンドの終了とともに終わります。エージェントはkeep_awakeをlid_closed付きで使います。その説明文で、事前にユーザーに確認するよう指示しています。kilobat conditions --jsonはlidClosedAllowedと現在のlidHoldを報告します。

エージェントスキル

9つのAgent Skillsが、Macのネットワークのトラブルシューティングと、Kilobatで長時間の実行を続ける方法をコーディングエージェントに教えます。Kilobatの測定結果を解釈し、不確かな点を説明し、設定を変更する前に確認します。まとめてインストールしてください。kilobatスキルが、質問に合ったスキルへエージェントを案内します。

npx skills add seifip/kilobat-skills
kilobatここから始めます。セットアップ、安全のためのルール、質問に合うスキルの選び方。
mac-network-troubleshooting原因のはっきりしない、遅いまたは不安定なインターネット:問題のある層を特定します。
mac-wifi-troubleshooting弱い・途切れるWi-Fi、混雑したチャンネル、Macやルーターの最適な置き場所。
mac-hotspot-data-saverスマートフォンのテザリングとデータ上限:データを使っているもの、旅行プロファイル、予算。
mac-dns-troubleshooting遅い名前解決、リゾルバのベンチマーク、DNSの切り替え、キャプティブポータル。
video-call-network-checkカクつく通話やゲームストリーミング:遅延の急増、ジッター、ロス、バッファブロート、バックグラウンドのアップロード。
mac-bandwidth-monitorどのアプリが回線を使っているか、使用履歴、接続先。
mac-app-firewallアプリ、ドメイン、IPのブロックと許可。新しいアプリの確認と応答。
mac-agent-runs長時間のエージェント実行:Macをスリープさせない、状況の確認、エージェントのフックの接続、実行の完了・入力待ち・停滞の把握。

Kilobat CLIは上記のHomebrewコマンドで別途インストールするか、MCPサーバを接続してください。CLIにはmacOS 14以降が、HomebrewでのソースビルドにはXcode 16以降が必要です。skills.shのスキルを見るか、ソースとリファレンスを読んでください。

Macアプリ

  1. ディスクイメージをダウンロードし、Kilobatを「アプリケーション」フォルダにドラッグして、そこから開きます。
  2. ライブ通信、Wi-Fi選択メニュー、速度テスト、スリープ防止、「接続できない理由は?」は無料で、CLIもすべて無料です。Proでは、アプリ内でルールと確認、予算、Wi-Fiヘルス、接続マップ、レーダー、履歴が使えます。Proを利用するには、7日間の無料トライアルを開始するか、ライセンスを設定に貼り付けてください。
  3. メニューバーの項目は設定で選べます。メニューバーの項目を移動するには、Commandキーを押しながらドラッグします。

確認が表示されたら位置情報へのアクセスを許可してください。KilobatがWi-Fiの名前を表示し、周辺のネットワークをスキャンできるようになります。位置情報がどこかに送信されることはありません。

アプリごとの帯域幅

各アプリの行には直近1分間の通信が表示され、線より上がアップロード、下がダウンロードです。クリックするとアプリのエコーが開きます。何をどれだけ送受信したかを1文で示し、続いて直近5分間のライブ波形、Proでは時間・日・週・月単位の履歴を表示します。マーカーはMacが別のネットワークに接続したときや、エージェントの実行がそのアプリを使ったときを示し、タイルには通信を運んだネットワーク、直近4期間との比較、全通信に占める割合が表示されます。グラフの下には、アプリの開いている接続とそれぞれの通信量と国、そしてアプリの開発元がInternet Access Policyを同梱している場合は、そこで宣言されている接続が並びます。

ルーターやプロバイダとの比較

ルーター、ISP、携帯キャリアが示す合計がKilobatと異なる場合は、「履歴」›「ルーターやプロバイダと比較」を開くか、kilobat report compareを実行します。相手が表示している数値、その単位、ダウンロード・アップロード・両方のどれを数えているかを入力し、同じ期間と対象のネットワークを指定します。Kilobatは自身の合計を同じ単位で表示して差を示し、入力した数値をもう一方の単位系でも解釈します。多くのプロバイダは、1,000,000,000バイトではなく1,073,741,824バイト(GiB)をGBと表記しているためです。

帯状のグラフに、Kilobatが実際に記録した時間と空白期間を表示します:Macがスリープしていた時間(Kilobat 1.3以降で記録)、電源オフやオフライン、Kilobatが起動していなかった時間、ほかのネットワークにいた時間、履歴の開始前の時間。その下に、差が出たおもな理由を可能性の高い順に示します。Kilobatが見ているのはこのMacだけで、ルーターやプロバイダが数えるスマートフォン、テレビ、ほかのコンピュータは含みません。インターネットに出ないローカルネットワークとAirDropの通信は除外し、どのアプリにも属さないパケットヘッダは「不明」として数えます。プロバイダは別のタイムゾーンで日を区切ったり、使用量の反映が遅れたりすることがあります。どちらの数値が正しいかをKilobatが判断することはありません。比較結果は、期間、ネットワーク、記録した時間、すべての空白期間を含めてCSVまたはJSONで書き出し、プロバイダと共有できます。

カクつきテスト

通話、ゲームのストリーミング、リモートデスクトップは、速度やロスに問題がなくてもカクつくことがあります。数百ミリ秒の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がアクセスを求めるのもそのときだけです。

プロキシとVPN

Kilobatは、プロキシアプリ(Clash Verge、ClashX、mihomo、Mihomo Party、FlClash、Surge、sing-box、Stash、V2Ray、Xray、Shadowsocks)やVPNと一緒に使えます。読み取るだけで、通信を中継したり設定を変えたりすることはありません。

  • 通信を正しいアプリに計上。ローカルのプロキシ経由で送信するアプリには自分の通信が計上され、それを転送するプロキシのコアやVPNトンネルには「ほかのアプリの通信を中継」とラベルが付き、二重には数えません。
  • 各アプリが通った経路。Clash互換のAPI(Clash Verge、ClashX、mihomo、Mihomo Party、FlClash、sing-boxのclash_api)がある場合、アプリの行に「HK-01経由 · 直接2件」のように経由したノードが表示され、ツールチップにはホスト、ノード、ルールがそれぞれ表示されます。KilobatはAPIのアドレスとシークレットをアプリ自身の設定ファイルから読み取り、シークレットを表示することはありません。
  • 「ヘルス」›「通信の出口」に表示される問題:
    • 起動していないアプリを指すシステムプロキシ(すべてのブラウザがつながらなくなります)
    • VPNを経由しないDNSやIPv6
    • プロキシとVPNの両方が通信を取っている状態
    • グローバルモード
    • システムプロキシの背後にあるアプリが見えないブロック。macOSのフィルタには127.0.0.1への接続が見えないため、プロキシのTUNモードをオンにするか、プロキシのルールでそのアプリをブロックしてください。
  • 接続できない理由は?に「プロキシアプリ」の層が加わり、プロキシのモードと現在のノードの応答速度を表示します。応答しないノードが原因のときはそう伝えます。

ターミナルでは:kilobat proxy、kilobat proxy routes --app Telegram、kilobat proxy test、kilobat vpn。Kilobatが自動で見つけられないコアには、--controller 127.0.0.1:9090 --secret …を渡します。エージェントはget_proxy_status、test_proxy_nodes、check_vpnで同じ情報を取得できます。

ウィジェット

Kilobatをデスクトップや通知センターに追加できます。デスクトップを右クリックして「ウィジェットを編集」を選び、Kilobatを検索します。ネットワークの状態は、接続の健康状態をコウモリで表し、インターネットとルーターのpingを表示します。中サイズでは、直近30分の遅延、前回の速度テスト、「テスト」ボタンも加わります。今日のデータは、今日のインターネットデータ量をダウンロードとアップロードに分けて1時間ごとに表示します。Proなら予算も表示します。速度テストは前回の結果を表示し、クリック1つで新しいテストを実行します(従量制ネットワークでは10 MB)。ウィジェットにネットワーク名やアドレスは表示されません。変化があると更新され、Kilobatが起動していないときは数値がどれくらい前のものかを示します。

通話レポート

通話が終わるたびに、Kilobatはフリーズしたかどうかとその理由を伝えます。Zoom、Microsoft Teams、FaceTime、Slack、Webex、Discord、Skype、WhatsApp、Telegram、Signal、またはブラウザが10秒以上マイクを使うと、通話として認識します。通話の内容を聞くことはありません。わかるのはどのアプリがマイクを使っているかだけで、これはmacOSも表示している情報です。通話が終わるまで、インターネットとルーターに毎秒1回pingを送り、ほかに最も通信していたアプリを記録し、5秒ごとにMacのCPU、メモリ、温度、GPUを確認します。

pingの消失が2秒以上続くか、pingがその通話の通常より200 ms遅くなると、フリーズとして数えます。各フリーズには原因が付きます:その時にアップロードやダウンロードをしていたほかのアプリ、Wi-Fi(ルーターも同時に止まっていた場合)、AirDropのスキャン、またはルーターより先。これとは別に、Mac自体が苦しんでいたときもカードに示します:CPUが限界まで使われていた(どのアプリによるものかも)、メモリ不足、高温によるMacの自動減速、GPUが限界まで使われていた。カードは「ヘルス」›「通話」と通知に表示されます。Proがない場合はフリーズの回数だけを表示し、Kilobat Proでは原因と試すべきことを示します。オフにするには「設定」›「ネットワーク」›「通話ごとにレポート」を使います。ターミナルではkilobat callsでカードを一覧表示でき、エージェントはget_call_reportsで取得できます。

配信用オーバーレイ

配信中にライブのpingを表示できます。「設定」›「ネットワーク」›「配信用オーバーレイ」をオンにして、OBS、Streamlabs、そのほかの配信アプリでhttp://localhost:7171/をブラウザソースとして追加します(640 × 80で十分です)。小さなピル型の表示に、ping、ジッター、パケットロス、直近1分間のグラフが出ます。先頭のコウモリは、グラフが良好なときは青で笑い、遅くなると紫に変わり、悪いときはローズ色でしかめ面になります。URLで変更できます:?show=ping,jitter,loss,graph,speed、theme=dark、light、clearと、size=s、m、l。Proでは、brand=0でロゴを非表示に、face=0でコウモリの代わりにシンプルな点を表示できます。オンの間、Kilobatは1.1.1.1に毎秒1回pingを送ります。ページは127.0.0.1で配信されるため、開けるのはこのMacだけです。アプリなしでも、kilobat overlayでCtrl-Cまで同じページを配信できます。

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

接続が悪いとき、プロバイダやITヘルプデスクは証拠を求めます。ヘルスのレポートボタンを使うと、Kilobatがこのネットワークで過去24時間または7日間に記録した内容からレポートを作れます。通信障害、ルーターとその先の遅延、pingのパケットロス、契約プランと比べた速度テストに加え、つながらないサイトを追加した場合はその確認結果も含みます。各検出結果には何をどこで測定したかを記載し、誰の責任かは決して書きません。サポートとのチャット用にテキストとしてコピーするか、PDFとして保存・共有できます。ネットワーク名、すべてのローカルIPとハードウェアアドレス、デバイス名、ネットワークを使ったアプリは含みません。ターミナルではkilobat support-report --host github.comを実行するか、ページ形式なら--html --output report.htmlを実行します。

シェアカード

メニューバーの右クリックメニューにある「共有と書き出し」で、投稿用の正方形の画像を作れます:今週のエコー(送受信したデータ量、いちばん通信した日、いちばんデータを食ったアプリ)、前回の速度テスト、または「この場所」(作業中のカフェ、コワーキングスペース、ホテル、図書館のWi-Fiレポート)。「この場所」には、入力するかAppleマップの検索から選んだ場所の名前と、このネットワークでの最新の速度テストのダウンロード、アップロード、ping、ビデオ通話に十分かどうか、負荷がかかったときの安定度、Wi-Fiの帯域を表示します。検索から場所を選ぶと、カードに周辺の小さな地図が付き、その場所に点が打たれます。不要なら「地図を表示」をオフにします。「電源あり」「静か」「遅くまで営業」などのタグと、1行のメモも追加できます。Kilobatはこれらをこのネットワークについて、このMac上に記憶します。カードはコピーや保存ができ、Nomad List、Googleマップのクチコミ、コワーキングのチャットに共有できます。ネットワーク名や住所を表示するカードはありません。地図に表示されるのは選んだ場所で、現在地ではありません。ただし「現在地を使用」を選んだ場合は別で、「この場所」が位置情報を求めるのはこのときだけです。

ほかのアプリからkilobat://リンク(1.3.4以降)で、Kilobatの目的の場所を開けます:kilobat://open/speedはタブ(overview、connections、health、radar、speed、history、tools、settings)を開き、kilobat://share/speed、kilobat://share/week、kilobat://share/placeはシェアカードを開き、kilobat://speedtestは速度テストを実行します。ターミナルからopen kilobat://open/historyで実行したり、ランチャーでキーに割り当てたりできます。Raycast拡張機能の「Open in Kilobat」アクションはこれらのリンクを使っています。Kilobatのショートカットアクションを使えば、「ショートカット」Appからチェック、速度テスト、スリープ防止、レポートを実行できます。

接続先

「接続」では、開いている接続をすべて地球儀上に表示し、アドレスの登録国へ線で結びます。通信の多い国は一覧に、ソケットはその下に並びます。国をクリックすると絞り込めます。国はアプリに同梱のDB-IPの無料データベースから判定するため、アドレスがMacの外に出ることはありません。これは登録国なので、CDNやVPNのアドレスでは、サーバの所在地ではなく所有者の国が表示されます。

ブロックとフィルタリング

モニタリングはフィルタリングなしで機能します。ルールを適用するには、Kilobatでフィルタリングの設定を開き、macOSが求めたら機能拡張とコンテンツフィルタを承認してください。最新のmacOSでは、機能拡張は「システム設定」→「一般」→「ログイン項目と機能拡張」→「ネットワーク機能拡張」にあります。

フィルタリングは新しい接続に適用されます。既存の接続は、再接続するまで続く場合があります。ルールによって重要な作業が中断した場合は、「制限なし」に切り替えるか、設定でフィルタリングをオフにしてください。

新しいアプリ:許可、確認、ブロック

アプリ一覧の上のピルで、旅行と仕事のプロファイルがルールのないアプリをどう扱うかを設定します。許可は接続を許します。確認はアプリの最初の接続を保留し、署名者、パス、接続先を示すウインドウを開きます。一度許可またはブロックすると、Kilobatがルールを保存します。応答のない接続は1分で打ち切られ、アプリは再度確認を求めます。ブロックは、許可したアプリだけを接続させます。Appleのソフトウェアを許可をオンにすると、macOSのサービスとApple純正アプリを確認なしで通します。ブロックリストと接続ルールはどのモードでも適用されます。Kilobatが起動していない場合、新しいアプリは保留されずに許可されます。

テザリングとデータ料金

macOSはiPhoneのインターネット共有など一部の接続を従量制として判定しますが、Androidのテザリングすべてを判定できるわけではなく、USBやEthernetで接続したスマートフォンも判定しません。各ネットワークにはデータ料金の設定があります:自動はmacOSの判定に従い、従量制と定額は自分で決めます。Wi-Fiメニュー、予算メニュー、ヘルスタブ、設定、またはkilobat networks cost meteredで設定できます。従量制ネットワークでは、そのネットワーク用にプロファイルを選んでいない限りKilobatは旅行に切り替え、離れると元のプロファイルに戻し、予定された速度テストを省略します。kilobat conditions --jsonとMCPサーバは、meteredとmacOSの判定(osMetered)の両方を報告します。データ料金を設定するにはKilobatがネットワークを識別できる必要があるため、Wi-Fiではネットワーク名を見るための位置情報へのアクセスが必要です。

従量制ネットワークでのアップデータの一時停止

従量制ネットワークでは、ネットワークフィルタが、アップデートを自動でダウンロードするヘルパーも一時停止します:Google Updater(と旧来のKeystoneエージェント)、Microsoft AutoUpdate、macOSのソフトウェアアップデート(softwareupdated)、App Storeのダウンロード(appstored、appstoreagent、storedownloadd)、Sparkleのダウンロードサービス、SparkleとSquirrelのインストーラ(Autoupdate、Updater.app、ShipIt)。これらは通常のフィルタルールでブロックされ、ブロックした接続の記録には「従量制ネットワークのためアップデータを一時停止」と表示されます。アプリ自体は使い続けられます。ネットワークが従量制でなくなれば、アップデートは再開します。ほかのアプリやそのステージング用フォルダ、システム設定は一切変更しないため、元に戻す作業は不要です。デフォルトでオンで、設定またはkilobat updaters offでオフにできます。接続先ルールや一時的な許可など、接続にすでに適用されるルールが優先されるため、「30分間許可」で1つのアップデートを通すことができます。「制限なし」では何も一時停止しません。

ヘルスタブ、kilobat updaters、MCPツールのget_updatersでは、対象のアップデータ、このネットワークで通過してしまったアップデートのバイト数(アップデータ自身のバイト数と、アップデータのために接続したnsurlsessiondなどのシステムのダウンロード。後者にはほかのダウンロードも含まれます)、そして自身のプロセス内でアップデートするインストール済みアプリを表示します。SparkleやElectronで作られた多くのアプリはアプリ内でアップデートをダウンロードし、インストールだけをヘルパーに任せるため、アプリをブロックせずに一時停止することはできません。フィルタは新しい接続を止めるため、ネットワークが従量制になった時点ですでに進行中のダウンロードは完了することがあります。Kilobat自身の定期的なアップデート確認も定額のネットワークを待ちますが、「アップデートを確認」は手動でいつでも使えます。

データ予算とアプリの割り当て

予算はネットワークごとに設定します。デフォルトでは、リセットするまで数え続けます。毎日、選んだ曜日に毎週、またはプランの更新日に毎月リセットするよう設定できます。31日に更新されるプランは、短い月では月末日にリセットされます。サイクルのある予算はそのネットワークの使用履歴を数えるため、再起動後も続きます。Kilobatはデフォルトでサイクルごとに80%と100%で1回ずつ通知し、追加すれば50%でも通知します。

アプリごとに割り当てを設定できます。サイクルごとの上限を、すべての通信またはアップロードだけを対象に、1つのネットワークまたはすべてのネットワークで設定します。アプリの帯域幅パネルかkilobat quota com.getdropbox.dropbox 2 --uploadで設定してください。フィルタリングがオンの場合、予算を使い切ると新しい接続を止め、割り当てを使い切るとそのアプリの新しい接続を止めます。一時的な許可や接続ルールは引き続き通ります。Kilobatは1秒ごとに通信をサンプリングするため、予算と割り当ては概算です。止まる前に少し超えることがあります。

集計の対象:インターネット、ローカルネットワーク、VPN

予算、割り当て、使用量にはインターネットの通信だけを数えます。ローカルネットワーク(プリンタ、NAS、ほかのコンピュータ、ルーターの管理画面)、AirDrop、そのほかの近距離デバイス間のリンク(AWDL)の通信は、予算カードの使用量にポインタを重ねたときと各アプリの帯域幅パネルで、「ローカルネットワーク:2.1 GB(集計対象外)」のように別に表示されます。Macの合計はWi-FiとEthernetのカウンタから取得するため、どのアプリにも属さない分も含みます:アプリのバイト数には含まれないパケットヘッダや確認応答(通常5〜10%多くなります)、2回のサンプリングの間に開始・終了したプロセス、インターネット共有、macOS自身が実行するVPNなどです。同じツールチップにその分を「アプリに紐づかない通信」として表示し、どのアプリにも割り当てません。

VPNを使っている場合、アプリの通信はトンネルを通り、VPNがWi-FiまたはEthernet経由で外に運びます。Kilobatは携帯キャリアと同じく、Macから出ていく地点で一度だけ数え、アプリの分には「VPN経由」とラベルを付けます。プロキシ(システムのプロキシ、HTTPS_PROXY、またはローカルのプロキシアプリ)を使っている場合、アプリはこのMac上のプロキシと通信し、プロキシがインターネットへの接続を行うため、バイト数はプロキシの下に表示されます。どのアプリが背後にいたかはKilobatにはわかりません。TUNモードのプロキシはKilobatにとってVPNと同じで、各アプリ自身の接続には「VPN経由」とラベルが付き、プロキシの送信通信はプロキシの下に表示されます。プライベートアドレス上の企業プロキシはローカルネットワークとして数えます。

システムのダウンロード

アプリは一部のダウンロードをmacOSに任せます:nsurlsessiond(ミュージックやPodcastなどのアプリのバックグラウンド転送)、mobileassetd(Apple IntelligenceやSiriのモデル、音声、フォント)、softwareupdated、appstoredとappstoreagent、clouddとbird(iCloud)、fileproviderd、コンテンツキャッシュ。アプリ一覧ではこれらを「システムのダウンロード」としてまとめ、それぞれの役割を表示します。フィルタリングがオンの場合、フィルタは各接続がどのアプリのためのものかを把握できるため、一覧には「ミュージック用」と表示され、ブロックは「com.apple.Music via nsurlsessiond」と表示されます。フィルタリングがオフの場合、nettopにはサービスしか見えないため、ダウンロードがどのアプリのためのものかKilobatにはわかりません。

アプリでもmacOSの一部でもないプロセス(ホームフォルダやHomebrew内のnode、python、deno、bun、Goのバイナリなど)は、行を展開すると実行ファイルのパスが表示されるため、見慣れないエージェントやツールがすぐに目に付きます。

設定で異常なアップロードをオンにすると、アプリが1時間に普段の5倍以上、かつ50 MB以上アップロードしたときに通知します(1アプリにつき1日1回まで)。通知するだけです。一時的なルールと期限付きの接続ルールは、残り時間とともにプロファイルに一覧表示されるため、早めに終了することもできます。

ドメインとIPのブロック

アプリの開いている接続を右クリックすると、そのホストをそのアプリだけ、またはすべてのアプリでブロックできます。ブロックリストには、読み込んだhostsリストのほか、ドメイン(サブドメインを含む。*.example.comも使えます)、IPアドレス、CIDR範囲を登録できます。ターミナルからは:kilobat block-host ads.example.com。

Proを贈って、Proをもらおう

Proライセンスにはそれぞれ専用の紹介リンクkilobat.app/r/と短いコードがあります。設定の「Kilobat Pro」の下、またはシェアカードの下にあり、「リンクをコピー」と「共有」が並んでいます。アカウントはありません。コードはライセンスから作られ、ライセンスキーがわかることはありません。

友達があなたのリンクを開いてからKilobatを開くと、Proトライアルが7日間ではなく30日間になります。紹介リンクは1台のMacにつき1つ、1回だけ使えます。友達があなたのリンクを経由して、アプリまたはサイトからProを購入すると、あなたのライセンスで使えるMacが1台増えます。友達3人ごとに無料のProライセンスがもらえます。設定に表示される1回限りのコードで、購入手続きで入力すれば、自分にも誰にでも使えます。

購入は14日間の返金期間が過ぎるとカウントされます。それまでは設定に「待機中」と表示されます。返金された購入、無料ライセンス、自分のリンクからの購入はカウントされません。

プライバシー

通信履歴、ネットワーク名、ルールはMacの中にとどまります。アカウントもテレメトリもありません。診断はテスト用のサービスに、ライセンスのアクティベートとアップデートの確認はそれぞれのサービスに接続します。プライバシーポリシーをお読みください。