Documentation Kilobat

Tout ce qu’il faut pour utiliser Kilobat depuis la barre des menus, le Terminal ou un agent IA.

Installation

La CLI est gratuite et open source. Installez-la avec Homebrew :

brew install seifip/kilobat/kilobat

Cela installe kilobat et kb, un alias plus court. Tous les exemples ci-dessous fonctionnent avec l’un ou l’autre.

Ou téléchargez l’app Mac, qui inclut aussi la CLI dans Kilobat.app/Contents/Helpers/kilobat.

Kilobat Lite sur le Mac App Store

Kilobat Lite est une édition gratuite pour le Mac App Store, bientôt disponible. Elle s’exécute dans l’App Sandbox d’Apple et garde ce qui y fonctionne : les contrôles d’état, le test de débit, le radar Wi-Fi et les réseaux à proximité, « Pourquoi ça ne se connecte pas ? » et Garder éveillé. Le trafic par app, les règles et le filtre réseau, les changements de DNS, l’assistant écran rabattu et la CLI demandent des autorisations que la sandbox ne permet pas : ils ne sont donc que dans l’app Kilobat de ce site. Les deux s’installent côte à côte.

Activez la complétion par tabulation pour votre shell :

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

Démarrage rapide

Lancez kilobat seul pour un menu interactif : flèches ou j/k pour se déplacer, Entrée pour ouvrir, un chiffre pour sauter directement, q pour quitter.

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

Lancez kilobat <command> --help pour obtenir l’aide de n’importe quelle commande.

Commandes

Surveiller

kilobat status [--watch] [--json]Trafic en direct par app et forfait de la session ; un instantané JSON, ou un flux JSON Lines avec --watch
kilobat report [--csv|--json] [--summary] [--days 1…365]Historique d’utilisation enregistré localement, ou totaux quotidiens et apps les plus actives ; le CSV contient une ligne par app
kilobat report compare --total 40GB [--unit GB|GiB] [--direction both|download|upload] (--from DATE --to DATE | --period last-month) [--network NAME] [--json|--csv]Le chiffre d’un routeur ou d’un opérateur à côté de ce que Kilobat a enregistré sur ce Mac pour la même période, dans la même unité, avec les heures enregistrées, chaque lacune et les raisons probables d’un écart
kilobat health-history [--hours 1…720] [--json]Vérifications du routeur, d’Internet, de la gigue et du DNS enregistrées par l’app au fil du temps
kilobat proxy [routes [--app name] | test] [--json]Apps proxy, proxy système et leurs problèmes ; quelle règle et quel nœud chaque app a empruntés ; à quelle vitesse répond chaque nœud
kilobat vpn [--json]Le VPN, et si le DNS ou l’IPv6 le contournent
kilobat calls [--limit 1…200] [--json]Après chaque appel : combien de fois il s’est bloqué et pourquoi, d’après les rapports de l’app
kilobat overlay [--port 7171] [--target internet|router|host]Un overlay de ping en direct pour OBS et les autres apps de streaming, servi sur localhost jusqu’à Ctrl-C
kilobat support-report [--hours 1…168] [--host h] [--markdown|--html] [--output f]Un rapport pour votre fournisseur d’accès ou votre support informatique : constats, latence, coupures et tests de débit, sans le nom de votre réseau ni les adresses locales
kilobat networks [forget <name>]Réseaux rencontrés, avec le profil, le forfait et le coût des données mémorisés pour chacun
kilobat networks cost <metered|unmetered|automatic> [name]Traiter ce réseau, ou celui nommé, comme limité ou illimité, ou suivre de nouveau macOS
kilobat bandwidth [app] [hour|day|week|month] [--back N] [--json]Octets envoyés et reçus par une app sur une heure, un jour, une semaine ou un mois, avec le pic ; --back remonte aux périodes précédentes
kilobat access-policy <bundle-id> [--json]Les connexions que le développeur d’une app déclare dans son Internet Access Policy, et pourquoi

Diagnostiquer

kilobat diagnose [--json]Vérifications du Wi-Fi, du routeur, d’Internet, du DNS et des portails captifs, avec conseils
kilobat radar [--watch] [--json]Score du signal et recherche du meilleur emplacement
kilobat scan [--json]Réseaux voisins, canaux et largeurs
kilobat channels [--json]Encombrement par canal et canal le moins chargé
kilobat speedtest [--json] [--budget-mb 1…80] [--parallel]Débit Cloudflare, latence sous charge et verdicts pour les appels et le streaming, 80 MB au maximum. Une connexion par défaut ; --parallel en ouvre quatre, comme la plupart des sites de test de débit
kilobat speed-compare [<test> <test>] [--json]Ce qui a changé entre deux tests de débit enregistrés : réseau, heure, serveur, connexions, bande Wi-Fi et signal, VPN, autre trafic
kilobat ip [--public] [--json]Par où sort le trafic : l’interface et l’éventuel VPN, lus sur ce Mac ; --public demande aussi à Cloudflare votre IP publique et son pays d’enregistrement
kilobat stutter [--seconds 10…60] [--target router|internet|<host>] [--json]Un ping toutes les 50 ms pour repérer les brefs pics de latence que les tests de débit ratent, quand ils surviennent et s’ils se répètent
kilobat airdrop [status|everyone|contacts|off] [--json]Visibilité AirDrop, le lien AirDrop (AWDL) et ce qui l’utilise ; changer la visibilité ouvre les Réglages Système
kilobat bluetooth [--json]Appareils Bluetooth et s’ils partagent la bande 2,4 GHz avec votre Wi-Fi
kilobat dns [automatic|cloudflare|google|quad9|flush]Lire ou définir le DNS, ou vider le cache

Wi-Fi

kilobat wifi [status]Réseau actuel, signal, canal et débit du lien
kilobat wifi on|off|restart|disconnectContrôler l’alimentation Wi-Fi et la connexion
kilobat wifi join <name> [--password-stdin]Rejoindre un réseau enregistré ou un nouveau réseau
kilobat wifi knownRéseaux enregistrés par ordre de préférence
kilobat wifi password|share <name>Afficher un mot de passe enregistré, ou un QR code à scanner avec un téléphone
kilobat low-latency on [--for 15m|1h|2h] [--until-quit <app>]Mettre en pause AirDrop et AWDL pendant les appels et les jeux : 15 minutes par défaut, jusqu’à 4 heures, ou jusqu’à ce qu’une app quitte
kilobat low-latency offRétablir AirDrop et AWDL, y compris après une pause lancée dans l’app

Éveil et agents

kilobat awake [--display]Garder le Mac éveillé jusqu’à Ctrl-C ; rabattre l’écran le met tout de même en veille, sauf si vous ajoutez --lid-closed
kilobat awake --lid-closed [--for 2h|--until-quiet|-- <command>]Continuer aussi écran rabattu, 8 heures au maximum, grâce à l’assistant d’alimentation de l’app ; nécessite Autoriser le fonctionnement écran rabattu dans les Réglages
kilobat awake --for 90m|2h|45sRester éveillé un moment
kilobat awake --until-quiet [--app <id>] [--quiet 1…60]Rester éveillé jusqu’à ce que les téléchargements ou une app deviennent silencieux, sous 16 KB/s pendant 3 minutes par défaut
kilobat awake -- <command> [args]Rester éveillé pendant l’exécution d’une commande, puis indiquer les données échangées par ses processus et se terminer avec son code de sortie
kilobat awake --while-frontmost <app> [--display] [--for 2h]Rester éveillé seulement tant que cette app est au premier plan, pour lire ou présenter. Passer à une autre app laisse le Mac se mettre en veille ; s’arrête quand l’app quitte, à 20 % de batterie ou après --for. --display garde aussi l’écran allumé
kilobat settings awake-on-power on|offL’app reste éveillée dès que l’adaptateur secteur est branché et laisse le Mac se remettre en veille quand il est débranché
kilobat settings keep-screen-on on|offGarder aussi l’écran allumé pour tout ce que l’app garde éveillé : minuteurs, téléchargements, agents, app au premier plan et secteur
kilobat sessions [--days N] [--json]Sessions d’éveil et exécutions d’agents IA enregistrées par l’app, avec les données consommées et les changements de réseau
kilobat agent-event <start|working|waiting|done|failed> [--agent name] [--stdin-json|--json-arg]Pour les hooks d’un agent : indique à l’app qu’une exécution a commencé, attend votre action ou est terminée. Silencieux, se termine toujours avec 0
kilobat why <url|host> [--app <id>] [--proxy <url>] [--context container|vm|remote|provider] [--failed-at <time>] [--json]Trouver la couche qui bloque une connexion : réseau et interface, proxy et proxy propre à l’app, DNS, règles Kilobat, IPv4 et IPv6, TLS, le serveur et chaque redirection. Demande l’URL exacte ; la sortie masque les valeurs de la requête
kilobat conditions [--json]Réseau limité, Mode Faibles données, VPN, latence, batterie et chaleur, possibilité de rabattre l’écran, avec des conseils pour les longues exécutions

Contrôler

kilobat profile [travel|work|unrestricted]Lister ou choisir un profil
kilobat allow|block <bundle-id> [--minutes 1…1440] [--profile name]Enregistrer une règle d’app, éventuellement temporaire ou pour un autre profil
kilobat reset <bundle-id> [--profile name]Supprimer la règle d’une app pour qu’elle suive le comportement par défaut
kilobat rules [--profile name] [--json]Les règles d’un profil
kilobat limit [GB] [--cycle session|daily|weekly|monthly] [--reset-day N] [--alert 50,80,100]Lire ou définir le forfait de données de ce réseau, quand il repart à zéro et quand il envoie une notification
kilobat quota <bundle-id> <GB> [--upload] [--all-networks]Limiter les données d’une app par cycle de forfait ; quota <bundle-id> --remove retire la limite
kilobat quota --list [--json]Quotas des apps, avec ce que chacune a consommé pendant ce cycle
kilobat updaters [--json]Outils de mise à jour en pause sur les réseaux limités, les octets de mise à jour passés malgré tout sur ce réseau, et les apps qui se mettent à jour d’elles-mêmes
kilobat updaters on|offMettre en pause les assistants de mise à jour comme Google Updater et la mise à jour de logiciels de macOS tant que le réseau est limité (activé par défaut) ; les apps continuent de fonctionner
kilobat settings [name [value] ]Lire ou modifier des réglages comme new-apps (allow, ask ou block), apple-software, auto-travel, pause-updaters, awake-on-power, public-ip (désactivé par défaut), speed-streams, alerts et menu-bar
kilobat approvals [--json]Apps en attente d’approbation quand les nouvelles apps sont soumises à confirmation, avec leur signataire et leurs destinations
kilobat approve|deny <app-id> [--minutes 1…1440]Bloquer immédiatement une app en attente, ou demander à l’utilisateur de confirmer son autorisation dans Kilobat
kilobat block-host|unblock-host <domain|IP|CIDR> [--app <id>]Bloquer un domaine (sous-domaines compris, *.example.com accepté), une IP ou une plage pour toutes les apps, ou pour une seule
kilobat quit <PID> [--force]Quitter un processus

Configuration

kilobat openOuvrir l’app Mac
kilobat doctorVérifier l’app, le filtre réseau et la surveillance
kilobat completion [zsh|bash|fish]Afficher un script de complétion pour le shell
kilobat mcpLancer le serveur MCP pour les agents IA via stdio
kilobat updateMettre à jour une installation Homebrew

Avancé

kilobat destinations [--pid PID] [--json]Sockets observés par processus
kilobat devices [--bonjour] [--json]Appareils de votre réseau et services Bonjour
kilobat devices name <MAC> <name>Nommer un appareil
kilobat trace <host> [--rounds 2…10] [--json]Sondage de route limité à 12 sauts ; --rounds trace plusieurs fois et affiche la perte et le délai de chaque saut
kilobat route-history --host <host> [--json]Chaque trace enregistrée vers un hôte, saut par saut comme mtr : perte, meilleur, moyenne, pire, changements de route et point où le délai commence
kilobat http-check <URL> [--json]Temps DNS, de connexion, TLS et du premier octet
kilobat dns-benchmarkTemps de réponse des résolveurs
kilobat lan-test <server> [--reverse] [--json]Test iperf3 de cinq secondes vers un appareil qui exécute iperf3 -s ; nécessite iperf3, que Kilobat n’installe jamais
kilobat interfaces [--json]Compteurs physiques et VPN, séparément
kilobat capture <interface> <file.pcap>Capture de paquets limitée
kilobat connection-rule allow|block <app> <host> [port]Enregistrer une règle de destination
kilobat blocklist status|import <path>|clearGérer une liste de blocage de domaines
kilobat wake <MAC-address>Envoyer un paquet Wake-on-LAN
kilobat spots [save <name>|remove <id>]Emplacements Wi-Fi enregistrés
kilobat outages / speed-history [--days N]Coupures et tests de débit enregistrés, au format JSON

Scripts et JSON

La sortie passe automatiquement en JSON dans un pipe, pour que les scripts n’aient jamais à analyser la présentation destinée aux humains. Passez --json pour être explicite.

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

Définissez NO_COLOR pour désactiver les couleurs. Les changements de DNS nécessitent l’approbation d’un administrateur.

Agents IA et MCP

La configuration pas à pas pour Claude Code, Codex, Cursor, Gemini CLI, Claude Desktop, Windsurf, Cline, Zed et tout client MCP se trouve dans Configurer Kilobat dans votre agent IA.

Donnez ce prompt à un agent comme Claude Code, Codex ou 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.

Serveur MCP

kilobat mcp parle le Model Context Protocol via stdio. Ajoutez-le à Claude Code :

claude mcp add kilobat -- kilobat mcp

Ou ajoutez-le à n’importe quel client qui lit une configuration mcpServers :

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

Outils en lecture seule : 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 (qui ne demande votre IP publique à Cloudflare que si l’agent passe public_ip), list_networks, list_rules, list_approvals, list_blocked_connections, run_stutter_test (qui n’envoie que des pings), get_nearby_radios et create_support_report (le rapport pour votre fournisseur d’accès, que l’agent vous transmet). Ils renvoient le même JSON que la CLI. run_speedtest consomme des données, run_lan_test fait transiter des données sur votre propre réseau pendant cinq secondes et demande d’abord, et keep_awake et release_awake empêchent la suspension d’activité pour inactivité pendant une durée définie sans modifier les réglages ; keep_awake avec lid_closed garde aussi le Mac en marche écran rabattu, si vous l’avez autorisé, et vous le demande d’abord. Les outils de modification (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, qui vide aussi le cache, et set_airdrop_visibility, qui ouvre les réglages AirDrop) sont marqués comme tels, et leur description demande à l’agent de vous consulter d’abord.

Quand quelque chose ne se connecte pas

kilobat why <host> (MCP : diagnose_connection) vérifie un hôte couche par couche depuis ce Mac, sans lancer curl ni nc, pour qu’un profil strict ne puisse pas bloquer la vérification elle-même. Il essaie IPv4 et IPv6 séparément : un réseau dont l’IPv6 est cassé, cause fréquente d’agents qui se figent ou se reconnectent sans cesse, obtient une réponse claire. Il indique l’interface utilisée, comme le Wi-Fi, le partage de connexion d’un téléphone ou un VPN, et les essaie toutes quand il y en a plusieurs. Il signale le proxy que choisit le système ou son fichier PAC et, avec --app, la variable HTTPS_PROXY de l’environnement de cette app, sans les mots de passe. Avec un VPN ou un proxy actif, il compare le chemin direct au tunnel. Pour un nom privé envoyé au résolveur propre d’un VPN, il précise lequel et s’il répond. Du code dans un conteneur, une VM ou une machine distante a son propre réseau : passez --context et le rapport se termine par une commande à lancer là-bas. Quand un service hébergé envoie la requête depuis ses propres serveurs, comme Warp pour un endpoint d’inférence personnalisé, --context provider indique quand la cible est privée (localhost, une adresse LAN ou Tailscale) et donc hors de leur portée, même si elle fonctionne depuis le Mac.

Donnez-lui l’URL exacte qui échoue, requête comprise : il interroge cette URL, mais toutes les sorties affichent les valeurs de la requête sous la forme [redacted], pour qu’un lien de téléchargement signé reste privé. Il envoie la requête comme le ferait l’app : via la variable HTTPS_PROXY de l’app, le proxy système ou, avec --proxy <url>, une adresse de proxy que l’app définit dans ses propres réglages. Quand ce proxy fonctionne et que les connexions directes échouent, comme sur beaucoup de réseaux d’entreprise, il le dit au lieu d’échouer ; quand les connexions directes fonctionnent et que la requête via le proxy de l’app échoue, il indique que le réseau va bien et que c’est le chemin de l’app qui pose problème. Un réglage qu’il ne peut ni lire ni emprunter, comme l’option de proxy Hugging Face de LM Studio pour les téléchargements depuis huggingface.co, a sa propre note citant ce que les utilisateurs ont signalé, et le verdict dit alors que le réseau atteint l’hôte, pas que la requête de l’app fonctionne. Kilobat ne modifie jamais les réglages d’une autre app. Un serveur qui refuse HEAD reçoit un seul GET pour un octet, jamais un téléchargement. Il suit jusqu’à cinq redirections, désigne le saut qui échoue et vérifie IPv4 et IPv6 pour l’hôte où aboutissent les redirections. Avec --app, il liste les connexions ouvertes de l’app vers cet hôte ou son proxy, signale quand elles utilisent une autre version d’IP ou un autre serveur que la nouvelle vérification, et regarde de nouveau quelques secondes plus tard : un transfert devenu silencieux est signalé comme silencieux, jamais comme terminé. Le rapport consigne le nom et la version de l’app, la méthode envoyée, le chemin emprunté et, avec --failed-at, le moment où l’app a échoué à côté de celui de la vérification. Une vérification réussie signifie que cette requête fonctionne maintenant depuis ce Mac par ce chemin ; elle ne peut pas voir comment se porte un transfert déjà en cours, alors surveillez-le avec kilobat bandwidth <app>.

Connecter des agents

Sans aide, Kilobat se fie au trafic et au processeur d’un agent : un agent silencieux peut donc avoir terminé ou attendre votre action. Ses hooks indiquent à Kilobat à quel projet appartient une exécution, quand elle attend votre action et quand elle est terminée. Chaque hook lance kilobat agent-event, qui n’affiche rien, rend la main aussitôt et se termine toujours avec 0 : il ne peut donc pas casser l’agent. Si l’app n’est pas ouverte, les événements attendent dans un petit fichier qu’elle lit à son ouverture. Kilobat lit les identifiants de session, les dossiers et de courts textes d’état, jamais les prompts ni les réponses. Fusionnez-les avec les hooks que vous avez déjà.

Claude Code, dans ~/.claude/settings.json. Chaque hook reçoit sur stdin un JSON avec l’identifiant de session et le dossier, que --stdin-json lit. Une demande d’autorisation ou de saisie signifie une attente ; Stop signifie terminé une fois les tâches en arrière-plan finies ; une limite de débit signifie une attente jusqu’à sa réinitialisation.

{
  "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, au plus simple : notify dans ~/.codex/config.toml. Codex passe un argument JSON après chaque tour, que --json-arg lit. Il ne signale que la fin, et Codex n’exécute qu’un seul programme notify.

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

Pour signaler aussi l’attente, utilisez plutôt les hooks Codex dans ~/.codex/hooks.json, et approuvez-les avec /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, dans ~/.gemini/settings.json. Gemini CLI s’exécute en tant que node : Kilobat ne peut donc pas relier son trafic à l’exécution, mais l’état est bien transmis.

{
  "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 et Kanban) : installez le plug-in de Kilobat, qui ajoute un fichier dans le dossier des plug-ins de Cline et ne modifie aucun autre réglage. cline plugin uninstall kilobat le retire.

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

Il signale une exécution en cours, terminée, échouée tant que Cline reste ouvert, annulée, limitée en débit une fois les nouvelles tentatives de Cline épuisées, et en attente quand Cline vous pose une question. Il attend les sous-agents et les coéquipiers avant de déclarer une exécution terminée. Les demandes d’approbation de Cline ne sont pas visibles par les plug-ins : la détection par le trafic et le processeur prend le relais.

Tout autre agent peut appeler kilobat agent-event start|working|waiting|done|failed --agent <name> --session <id> --cwd <folder> depuis ses propres hooks. Ajoutez --verbose pour voir ce qui s’est passé quand vous l’essayez à la main.

Pourquoi les tests de débit ne concordent pas

Le test de débit de Kilobat ouvre une seule connexion HTTPS à la fois vers le centre de données Cloudflare le plus proche, 8 secondes dans chaque sens et 80 MB au maximum, et envoie des pings à 1.1.1.1 avant et pendant les transferts. Speedtest by Ookla, fast.com et networkQuality de macOS ouvrent plusieurs connexions à la fois et choisissent leurs propres serveurs : sur les liens rapides ou lointains, ils affichent donc généralement davantage. Choisissez 4 connexions à côté du bouton de test dans l’onglet Débit, ou lancez kilobat speedtest --parallel, pour voir l’effet sur votre connexion. Chaque test enregistré conserve le centre de données Cloudflare, le nombre de connexions, le lien (bande Wi-Fi, canal, signal et débit du lien, ou Ethernet), le VPN emprunté et la quantité d’autre trafic échangée par ce Mac pendant ce temps. Historique › Comparaison des tests de débit, kilobat speed-compare et l’outil MCP compare_speed_tests mettent deux tests côte à côte et listent ce qui a changé, chaque différence accompagnée d’une note sur son effet sur le résultat. Ils listent des différences, pas des causes : d’autres appareils de votre réseau sont aussi en concurrence, et Kilobat ne peut pas les voir.

VPN et IP publique

État › Sortie du trafic, le menu Wi-Fi et kilobat ip montrent l’interface qu’utilise la route par défaut et s’il s’agit d’un VPN, d’après les routes de ce Mac et les VPN que macOS indique comme connectés. Un VPN connecté alors que la route par défaut reste sur le Wi-Fi, comme Tailscale sans nœud de sortie, apparaît comme Partiel : seules certaines destinations passent par lui. Activez Réglages › Réseau › Rechercher l’IP publique pour voir aussi l’adresse que voient les sites web, demandée à Cloudflare à chaque changement de réseau et toutes les 30 minutes, avec le pays où elle est enregistrée d’après les données DB-IP fournies avec Kilobat. L’option est désactivée par défaut, car Cloudflare voit cette requête ; kilobat ip --public la fait une seule fois. Le pays d’enregistrement n’est pas l’endroit où vous ou un serveur vous trouvez, et ni lui ni un VPN ne prouvent qu’une connexion est privée ou anonyme. Réglages › Barre des menus › VPN ajoute Activé, Partiel ou Désactivé (avec le code pays si la recherche est activée) à côté de la chauve-souris, et l’Historique indique quand un VPN a été activé ou désactivé et quand l’IP publique a changé.

Historique des routes

Outils › DNS et LAN › Tracer 3 fois, ou kilobat trace <host> --rounds 3, trace une route trois fois avec trois sondes par saut et enregistre chaque trace. Historique › Routes enregistrées combine toutes les traces enregistrées vers un hôte, saut par saut, comme mtr : perte, délai meilleur, moyen, pire et dernier, quels sauts ont changé de routeur et où commence un retard durable. Un saut qui ignore des réponses alors que les sauts suivants répondent est un routeur qui limite les sondes, pas une perte. Pour le réseau local seul, kilobat lan-test <device> lance cinq secondes d’iperf3 vers un appareil qui exécute iperf3 -s ; installez iperf3 vous-même, Kilobat n’installe jamais rien.

Tant qu’une app est au premier plan

Pour lire ou présenter, l’option Tant qu’une app est au premier plan de la tasse de thé garde le Mac éveillé seulement tant que l’app choisie est au premier plan, et le laisse se mettre en veille dès que vous passez à une autre. Garder l’écran allumé, dans la tasse de thé, décide si l’écran reste allumé aussi, comme pour tout ce que Kilobat garde éveillé. Kilobat suit les événements de changement d’app de macOS : il n’interroge rien en boucle, ne bouge pas la souris et ne simule aucune activité, il ne peut donc pas vous faire paraître présent aux yeux d’un logiciel de surveillance. L’option s’arrête quand l’app quitte, quand vous la désactivez, ou sur batterie à 20 % (ou au seuil que vous avez fixé pour les exécutions écran rabattu), et elle ne maintient jamais le Mac en marche écran rabattu. Elle a son propre maintien : changer d’app ou quitter l’app ne met donc jamais fin à une session d’éveil ni à une exécution d’agent. Depuis le Terminal : kilobat awake --while-frontmost Keynote --display.

Sur secteur

Activez Rester éveillé sur secteur (Réglages › Éveil et agents), ou Sur secteur dans la tasse de thé, et brancher l’adaptateur secteur garde le Mac éveillé jusqu’à ce que vous le débranchiez, comme l’indique « Éveillé sur secteur » dans le bandeau. Garder l’écran allumé décide si l’écran reste allumé aussi. Désactivez l’option et elle le reste jusqu’au prochain branchement, même si Kilobat redémarre. Kilobat détecte le branchement grâce à la notification de source d’alimentation de macOS, sans interrogation en boucle. Débrancher ne met fin qu’à la session lancée par le branchement : une session que vous avez lancée vous-même, un téléchargement que vous attendez, une app au premier plan, une exécution d’agent ou un maintien depuis le Terminal continuent. Elle ne garde jamais le Mac en marche écran rabattu. Depuis le Terminal : kilobat settings awake-on-power on, et kilobat settings keep-screen-on on pour l’écran ; kilobat conditions --json l’indique sous la forme awakeOnPower.

Fonctionner écran rabattu

Rabattre l’écran met le Mac en veille, même quand Kilobat le garde éveillé, sauf si vous autorisez le fonctionnement écran rabattu dans Réglages › Éveil et agents. Cela installe un petit assistant qui s’exécute en tant que root ; macOS vous demande de l’autoriser dans Réglages Système › Général › Ouverture. Une fois activé, une exécution d’agent en cours garde le Mac en marche écran rabattu, tout comme une session d’éveil quand vous cochez Écran rabattu aussi dans le menu de la tasse de thé. Un agent qui attend votre action ne le maintient que si Rester éveillé quand un agent attend est activé, et 30 minutes au maximum.

Un Mac fermé dans un sac peut surchauffer et vider sa batterie : l’assistant lui-même laisse donc le Mac se mettre en veille au seuil de batterie choisi (20 % par défaut), quand le Mac chauffe, dès qu’il est débranché si vous avez choisi « sur secteur uniquement », après la durée maximale que vous avez fixée (8 heures au plus), et une minute après que Kilobat a quitté. Si l’assistant ou le Mac redémarre pendant un maintien, il rétablit d’abord le réglage. Kilobat indique comment chaque maintien s’est terminé, par exemple « Mac mis en veille : batterie à 20 % ».

Depuis le Terminal, kilobat awake --lid-closed demande le même maintien à l’app et explique pourquoi quand c’est impossible ; le maintien se termine avec la commande. Les agents utilisent keep_awake avec lid_closed, dont la description leur demande de vous consulter d’abord. kilobat conditions --json indique lidClosedAllowed et la valeur actuelle de lidHold.

Skills pour agents

Neuf Agent Skills apprennent aux agents de code à dépanner le réseau d’un Mac et à mener de longues exécutions à bien avec Kilobat. Ils interprètent ses mesures, expliquent ce qui reste incertain et demandent avant de modifier un réglage. Installez-les ensemble ; le skill kilobat oriente l’agent vers celui qui convient.

npx skills add seifip/kilobat-skills
kilobatCommencez ici. Installation, règles de sécurité et skill adapté à la question.
mac-network-troubleshootingInternet lent ou instable sans cause évidente : trouve la couche défaillante.
mac-wifi-troubleshootingWi-Fi faible ou qui décroche, canaux encombrés, meilleur emplacement pour le Mac ou le routeur.
mac-hotspot-data-saverPartage de connexion et forfaits limités : ce qui consomme des données, profil Voyage, forfaits.
mac-dns-troubleshootingRésolutions lentes, benchmarks de résolveurs, changement de DNS, portails captifs.
video-call-network-checkAppels et streaming de jeux saccadés : pics de latence, gigue, perte, bufferbloat et envois en arrière-plan.
mac-bandwidth-monitorQuelles apps utilisent la connexion, historique d’utilisation et destinations.
mac-app-firewallBloquer ou autoriser apps, domaines et IP ; demander pour les nouvelles apps et répondre.
mac-agent-runsLongues exécutions d’agents : garder le Mac éveillé, vérifier les conditions, connecter les hooks d’agents, savoir quand une exécution est terminée, attend votre action ou est bloquée.

Installez la CLI Kilobat séparément avec la commande Homebrew ci-dessus, ou connectez son serveur MCP. La CLI nécessite macOS 14 ou une version ultérieure ; la compilation depuis les sources avec Homebrew nécessite Xcode 16 ou une version ultérieure. Consultez les skills sur skills.sh ou lisez leur source et leurs références.

L’app Mac

  1. Téléchargez l’image disque, faites glisser Kilobat dans Applications et ouvrez-le depuis ce dossier.
  2. Le trafic en direct, le sélecteur Wi-Fi, les tests de débit, Garder éveillé et « Pourquoi ça ne se connecte pas ? » sont gratuits, tout comme l’ensemble de la CLI. Pro ajoute les règles et Demander, les forfaits, l’état du Wi-Fi, la carte des connexions, le radar et l’historique dans l’app. Pour débloquer Pro, commencez l’essai de 7 jours ou collez votre licence dans les Réglages.
  3. Choisissez les éléments de la barre des menus dans les Réglages. Maintenez la touche Commande enfoncée en faisant glisser un élément de la barre des menus pour le déplacer.

Autorisez l’accès à la localisation quand il vous est demandé, pour que Kilobat puisse afficher les noms des réseaux Wi-Fi et analyser les réseaux voisins. Votre position n’est envoyée nulle part.

Bande passante par app

La ligne de chaque app affiche sa dernière minute de trafic, l’envoi au-dessus de la ligne et la réception en dessous. Cliquez dessus pour voir l’écho de l’app : une phrase sur ce qu’elle a échangé, puis une forme d’onde des cinq dernières minutes en direct et, avec Pro, son historique par heure, jour, semaine ou mois. Des repères indiquent quand le Mac a rejoint un autre réseau ou quand une exécution d’agent a utilisé l’app, et des vignettes montrent quels réseaux ont transporté le trafic, la comparaison avec les quatre périodes précédentes de l’app et sa part de l’ensemble du trafic. Sous le graphique se trouvent les connexions ouvertes de l’app, avec les données échangées par chacune et son pays, ainsi que les connexions que le développeur de l’app déclare dans une Internet Access Policy, s’il en fournit une.

Comparer avec votre routeur ou votre opérateur

Quand votre routeur, votre FAI ou votre opérateur mobile affiche un total différent de celui de Kilobat, ouvrez Historique › Comparer avec votre routeur ou opérateur, ou lancez kilobat report compare. Saisissez le chiffre tel qu’ils l’affichent, son unité et s’il compte la réception, l’envoi ou les deux, puis la même période et le réseau concerné. Kilobat affiche son propre total dans la même unité et l’écart, et lit aussi le chiffre dans l’autre système d’unités, car de nombreux opérateurs écrivent GB pour 1 073 741 824 octets (GiB) plutôt que 1 000 000 000.

Une frise montre les heures réellement enregistrées par Kilobat et ses lacunes : le temps où le Mac était en veille (enregistré depuis Kilobat 1.3), éteint ou hors ligne ou où Kilobat ne tournait pas, le temps passé sur d’autres réseaux, et le temps antérieur au début de son historique. En dessous figurent les raisons probables de l’écart, de la plus probable à la moins probable. Kilobat ne voit que ce Mac, pas les téléphones, téléviseurs et autres ordinateurs qu’un routeur ou un opérateur comptabilise. Il exclut le trafic du réseau local et d’AirDrop, qui n’atteint jamais Internet, et compte comme non attribués les en-têtes de paquets qu’aucune app ne comptabilise. Les opérateurs peuvent compter les jours dans un autre fuseau horaire ou publier la consommation en retard. Kilobat ne dit pas quel chiffre est le bon. Exportez la comparaison en CSV ou en JSON, avec la période, les réseaux, les heures enregistrées et chaque lacune, pour la transmettre à votre opérateur.

Test de saccades

Les appels, le streaming de jeux et les bureaux à distance peuvent saccader alors que le débit et la perte semblent corrects, car un pic de ping de quelques centaines de millisecondes disparaît dans une moyenne. Le test de saccades, dans État, envoie un ping à votre routeur (ou à Internet) toutes les 50 ms pendant 20 secondes et trace chaque réponse, les pics en rose, avec la médiane, le p95, le p99 et le pire ping. Il vous dit si les pics se répètent à intervalle régulier, ce qui désigne souvent les analyses AirDrop/AWDL, ou s’ils arrivent au hasard, ce qui évoque un réseau chargé, des interférences ou un signal faible. Beaucoup de routeurs ne répondent qu’à une dizaine de pings par seconde ; Kilobat reconnaît ce schéma et ne le compte pas comme une perte. Avec Pro, Comparer avec la faible latence activée relance le test avec AirDrop/AWDL en pause et indique si cela a aidé.

La pause faible latence désactive AirDrop, Sidecar et Contrôle universel pendant 15 minutes, 1 ou 2 heures, ou jusqu’à ce qu’une app comme votre jeu ou votre appel quitte, 4 heures au maximum. Tout est toujours rétabli à la fin du délai, quand l’app quitte, quand Kilobat quitte ou quand le réseau change, et au lancement suivant si le Mac a planté. macOS demande l’approbation d’un administrateur. Le panneau À proximité d’État indique aussi si la radio d’AirDrop est active et ce qui l’utilise, votre visibilité AirDrop et, sur demande, les appareils Bluetooth qui partagent la bande 2,4 GHz avec le Wi-Fi.

Le menu Wi-Fi liste vos appareils Bluetooth sous les réseaux : cliquez sur l’un d’eux pour le connecter ou le déconnecter. Une étiquette 2,4 GHz signale les écouteurs, claviers et souris connectés qui partagent la bande avec votre Wi-Fi, avec un raccourci vers un réseau 5 GHz connu. En dessous se trouve AirDrop, avec sa visibilité, ce qui utilise le lien et la pause faible latence. Le Bluetooth n’apparaît qu’après avoir choisi Afficher les appareils Bluetooth : macOS ne demande l’accès qu’à ce moment-là.

Proxys et VPN

Kilobat fonctionne aux côtés des apps proxy (Clash Verge, ClashX, mihomo, Mihomo Party, FlClash, Surge, sing-box, Stash, V2Ray, Xray, Shadowsocks) et des VPN. Il se contente de les lire : il ne route jamais le trafic et ne modifie jamais leurs réglages.

  • Le trafic compte pour la bonne app. Une app qui passe par un proxy local se voit attribuer son propre trafic, et le cœur du proxy ou le tunnel VPN qui le transfère est marqué « Transporte le trafic d’autres apps » au lieu d’être compté deux fois.
  • La route prise par chaque app. Avec une API compatible Clash (Clash Verge, ClashX, mihomo, Mihomo Party, FlClash, clash_api de sing-box), la ligne d’une app indique le nœud emprunté, par exemple « via HK-01 · 2 en direct », et son infobulle liste chaque hôte, nœud et règle. Kilobat lit l’adresse de l’API et le secret dans la configuration de l’app elle-même, et n’affiche jamais le secret.
  • Les problèmes, dans « Par où sort le trafic » de l’onglet État :
    • un proxy système qui pointe vers une app fermée, ce qui casse tous les navigateurs ;
    • un DNS ou un IPv6 qui contournent le VPN ;
    • un proxy et un VPN qui prennent tous deux le trafic ;
    • le mode global ;
    • un blocage qui ne voit pas les apps derrière un proxy système. Les filtres de macOS ne voient jamais les connexions vers 127.0.0.1 : activez donc le mode TUN du proxy, ou bloquez l’app dans les règles du proxy.
  • Pourquoi ça ne se connecte pas ? ajoute une couche « App proxy » avec le mode du proxy et la vitesse de réponse de ses nœuds actuels, et signale quand un nœud mort est en cause.

Dans le Terminal : kilobat proxy, kilobat proxy routes --app Telegram, kilobat proxy test et kilobat vpn. Pour un cœur que Kilobat ne trouve pas seul, passez --controller 127.0.0.1:9090 --secret …. Les agents obtiennent la même chose via get_proxy_status, test_proxy_nodes et check_vpn.

Widgets

Ajoutez Kilobat à votre bureau ou au centre de notifications : faites un clic droit sur le bureau, choisissez « Modifier les widgets » et cherchez Kilobat. État du réseau montre la chauve-souris selon l’état de la connexion, avec le ping vers Internet et vers le routeur ; la taille moyenne ajoute les 30 dernières minutes de latence, votre dernier test de débit et un bouton Tester. Données du jour affiche les données Internet du jour, en réception et en envoi, heure par heure ; avec Pro, votre forfait aussi. Test de débit affiche votre dernier résultat et en lance un nouveau en un clic (10 MB sur un réseau limité). Les widgets n’affichent ni nom de réseau ni adresse, se mettent à jour quand quelque chose change et indiquent l’âge de leurs chiffres quand Kilobat n’est pas ouvert.

Rapports d’appel

Après chaque appel, Kilobat vous dit s’il s’est bloqué et pourquoi. Il repère un appel quand Zoom, Microsoft Teams, FaceTime, Slack, Webex, Discord, Skype, WhatsApp, Telegram, Signal ou un navigateur utilise le micro plus de dix secondes. Il n’entend jamais l’appel : il voit seulement quelle app utilise le micro, ce que macOS affiche de toute façon. Jusqu’à la fin de l’appel, il envoie un ping à Internet et à votre routeur chaque seconde, note l’autre app la plus active et vérifie le processeur, la mémoire, la température et le GPU du Mac toutes les cinq secondes.

Deux secondes ou plus d’affilée de pings perdus, ou de pings 200 ms plus lents que d’habitude pendant l’appel, comptent comme un blocage. Chaque blocage reçoit une cause : une autre app en train d’envoyer ou de télécharger, le Wi-Fi (quand le routeur a aussi calé), le balayage AirDrop, ou au-delà de votre routeur. À part, la carte indique quand le Mac lui-même a peiné : processeur saturé (et par quelle app), mémoire épuisée, Mac qui se bride parce qu’il chauffe, ou GPU saturé. La carte apparaît dans État › Appels et sous forme de notification. Sans Pro, elle indique combien de fois l’appel s’est bloqué ; Kilobat Pro nomme les causes et dit quoi essayer. Désactivez-la dans Réglages › Réseau › Rapport après chaque appel. Dans le Terminal, kilobat calls liste les cartes, et les agents les obtiennent via get_call_reports.

Overlay de streaming

Affichez votre ping en direct pendant vos streams. Activez Réglages › Réseau › Overlay de streaming, puis ajoutez http://localhost:7171/ comme source Navigateur dans OBS, Streamlabs ou toute autre app de streaming (640 × 80 suffit largement). Une petite pastille affiche le ping, la gigue, la perte et la dernière minute sous forme de courbe. La chauve-souris au début sourit en bleu tant que la courbe est bonne, passe au violet quand ça ralentit et fait la moue en rose quand c’est mauvais. Modifiez-la dans l’URL : ?show=ping,jitter,loss,graph,speed, theme=dark, light ou clear, et size=s, m ou l. Avec Pro, brand=0 masque le logo et face=0 affiche un simple point à la place de la chauve-souris. Tant qu’il est activé, Kilobat envoie un ping à 1.1.1.1 chaque seconde ; la page est servie sur 127.0.0.1, donc seul ce Mac peut l’ouvrir. Sans l’app, kilobat overlay sert la même page jusqu’à Ctrl-C.

Un rapport pour votre fournisseur d’accès

Quand la connexion est mauvaise, votre fournisseur d’accès ou votre support informatique veut des preuves. Dans État, le bouton de rapport en crée un à partir de ce que Kilobat a enregistré sur ce réseau pendant les dernières 24 heures ou les 7 derniers jours. Il couvre les coupures, la latence au routeur et au-delà, la perte de ping et les tests de débit comparés à votre abonnement, plus une vérification du site qui échoue si vous en ajoutez un. Chaque constat indique ce qui a été mesuré et où, jamais à qui la faute. Copiez-le en texte pour un chat d’assistance, ou enregistrez-le ou partagez-le en PDF. Il omet le nom de votre réseau, toutes les adresses IP et matérielles locales, les noms des appareils et les apps qui ont utilisé le réseau. Dans le Terminal, lancez kilobat support-report --host github.com, ou --html --output report.html pour la page.

Cartes à partager

« Partager et exporter », dans le menu contextuel de l’icône de la barre des menus, crée une image carrée à publier : l’Écho de la semaine (les données échangées, votre jour le plus chargé et votre app la plus gourmande), votre dernier test de débit, ou « Ce lieu », un rapport Wi-Fi pour le café, l’espace de coworking, l’hôtel ou la bibliothèque d’où vous travaillez. « Ce lieu » affiche le nom du lieu, que vous saisissez ou choisissez dans la recherche de Plans, puis la réception, l’envoi et le ping du test de débit le plus récent sur ce réseau, s’il suffit pour les appels vidéo, comment il tient sous charge, et la bande Wi-Fi. Choisissez le lieu dans la recherche et la carte reçoit un petit plan du quartier avec un point dessus ; désactivez « Afficher la carte » pour l’omettre. Ajoutez des étiquettes comme « Prises », « Calme » ou « Ouvert tard », et une note d’une ligne. Kilobat les retient pour ce réseau, sur ce Mac. Copiez la carte, enregistrez-la ou partagez-la sur Nomad List, dans un avis Google Maps ou un chat de coworking. Aucune carte n’affiche de nom de réseau ni d’adresse. Le plan montre le lieu choisi, jamais l’endroit où vous êtes, sauf si vous choisissez « Utiliser ma position », la seule fois où « Ce lieu » demande l’accès à la localisation.

D’autres apps peuvent ouvrir Kilobat au bon endroit avec un lien kilobat:// (depuis la 1.3.4) : kilobat://open/speed ouvre un onglet (overview, connections, health, radar, speed, history, tools ou settings), kilobat://share/speed, kilobat://share/week ou kilobat://share/place ouvre une carte à partager, et kilobat://speedtest lance un test de débit. Lancez-en un depuis le Terminal avec open kilobat://open/history, ou associez-le à une touche dans un lanceur. L’extension Raycast utilise ces liens pour ses actions Open in Kilobat, et les actions Raccourcis de Kilobat lancent des contrôles, des tests de débit, le maintien en éveil et des rapports depuis l’app Raccourcis.

Où vont les connexions

Connexions affiche chaque connexion ouverte sur un globe, reliée au pays où son adresse est enregistrée, avec les pays les plus actifs dans une liste et les sockets en dessous. Cliquez sur un pays pour filtrer. Le pays provient de la base de données gratuite de DB-IP fournie avec l’app : aucune adresse ne quitte votre Mac. Il s’agit du pays d’enregistrement : l’adresse d’un CDN ou d’un VPN indique le pays de son propriétaire, pas l’emplacement du serveur.

Blocage et filtrage

La surveillance fonctionne sans filtrage. Pour appliquer des règles, ouvrez la configuration du filtrage dans Kilobat et approuvez l’extension et le filtre de contenu quand macOS le demande. Sur les versions actuelles de macOS, les extensions se trouvent dans Réglages Système → Général → Ouverture et extensions → Extensions réseau.

Le filtrage s’applique aux nouvelles connexions ; une connexion existante peut continuer jusqu’à sa reconnexion. Si une règle interrompt quelque chose d’important, passez à Sans restriction ou désactivez le filtrage dans les Réglages.

Nouvelles apps : autoriser, demander ou bloquer

Le sélecteur au-dessus de la liste des apps définit ce que Voyage et Travail font des apps sans règle. Autoriser les laisse se connecter. Demander retient les premières connexions d’une app et ouvre une fenêtre indiquant qui l’a signée, son chemin et où elle veut aller ; autorisez-la ou bloquez-la une fois et Kilobat enregistre la règle. Les connexions sans réponse abandonnent au bout d’une minute et l’app redemande. Bloquer ne laisse se connecter que les apps que vous avez autorisées. Activez Autoriser les logiciels Apple pour laisser passer les services macOS et les apps d’Apple sans demander. Votre liste de blocage et vos règles de connexion s’appliquent dans tous les modes, et si Kilobat n’est pas ouvert, les nouvelles apps sont autorisées plutôt que retenues.

Partage de connexion et coût des données

macOS signale certaines connexions comme limitées, comme le partage de connexion d’un iPhone, mais pas tous les partages de connexion Android ni un téléphone relié en USB ou en Ethernet. Chaque réseau a un coût des données : Automatique suit macOS, et Limité ou Illimité, c’est vous qui décidez. Réglez-le dans le menu Wi-Fi, le menu du forfait, l’onglet État ou les Réglages, ou avec kilobat networks cost metered. Sur un réseau limité, Kilobat passe en Voyage, sauf si vous avez choisi un profil pour ce réseau, rétablit votre profil précédent quand vous le quittez et saute les tests de débit programmés. kilobat conditions --json et le serveur MCP indiquent à la fois metered et ce que dit macOS (osMetered). Kilobat doit pouvoir distinguer un réseau avant que vous puissiez définir son coût : pour le Wi-Fi, il a donc besoin de l’accès à la localisation pour voir le nom du réseau.

Mettre en pause les mises à jour sur les réseaux limités

Sur un réseau limité, le filtre réseau met aussi en pause les assistants qui téléchargent des mises à jour d’eux-mêmes : Google Updater (et l’ancien agent Keystone), Microsoft AutoUpdate, la mise à jour de logiciels de macOS (softwareupdated), les téléchargements de l’App Store (appstored, appstoreagent, storedownloadd), le service de téléchargement de Sparkle et les programmes d’installation de Sparkle et de Squirrel (Autoupdate, Updater.app, ShipIt). Ils sont bloqués par une règle de filtrage ordinaire, le journal des connexions bloquées indique « Mise à jour en pause sur un réseau limité », et les apps elles-mêmes continuent de fonctionner. Dès que le réseau n’est plus limité, les mises à jour reprennent. Rien n’est modifié dans les autres apps, leurs dossiers de préparation ou les Réglages Système : il n’y a donc rien à restaurer. L’option est activée par défaut ; désactivez-la dans les Réglages ou avec kilobat updaters off. Les règles qui s’appliquent déjà à une connexion, comme une règle de destination ou une autorisation temporaire, passent en premier : « Autoriser 30 minutes » laisse donc passer une mise à jour. Sans restriction ne met rien en pause.

L’onglet État, kilobat updaters et l’outil MCP get_updaters indiquent quels outils de mise à jour sont couverts, quels octets de mise à jour sont passés malgré tout sur ce réseau (les octets propres à un outil de mise à jour, et les téléchargements Système comme nsurlsessiond qui se sont connectés pour l’un d’eux, dont les octets incluent d’autres téléchargements), et quelles apps installées se mettent à jour depuis leur propre processus. La plupart des apps basées sur Sparkle ou Electron téléchargent la mise à jour dans l’app et ne confient que l’installation à un assistant : impossible de les mettre en pause sans bloquer l’app. Le filtre bloque les nouvelles connexions : un téléchargement déjà en cours quand le réseau est devenu limité peut donc se terminer. La recherche de mises à jour programmée de Kilobat attend elle aussi un réseau illimité ; Rechercher les mises à jour fonctionne toujours à la main.

Forfaits de données et quotas par app

Chaque réseau a son propre forfait. Par défaut, il compte jusqu’à ce que vous le réinitialisiez. Faites-le repartir à zéro chaque jour, chaque semaine le jour de votre choix, ou chaque mois le jour où votre abonnement se renouvelle ; un abonnement qui se renouvelle le 31 repart le dernier jour des mois plus courts. Un forfait avec un cycle s’appuie sur l’historique d’utilisation de ce réseau, il continue donc après un redémarrage. Kilobat envoie une notification par cycle à 80 % et 100 % par défaut, et à 50 % si vous l’ajoutez.

Une app peut avoir son propre quota : une limite par cycle sur tout ce qu’elle échange ou seulement sur ses envois, sur un réseau ou sur tous. Définissez-en un depuis le panneau de bande passante de l’app ou avec kilobat quota com.getdropbox.dropbox 2 --upload. Avec le filtrage activé, un forfait épuisé bloque les nouvelles connexions, et un quota épuisé bloque les nouvelles connexions de cette app. Une autorisation temporaire ou une règle de connexion passe toujours. Kilobat échantillonne le trafic chaque seconde : les forfaits et les quotas sont donc approximatifs, et une app peut les dépasser légèrement avant d’être arrêtée.

Ce qui compte : Internet, réseau local et VPN

Les forfaits, les quotas et les données consommées ne comptent que le trafic Internet. Le trafic vers votre réseau local (imprimantes, NAS, autres ordinateurs, page d’administration du routeur), AirDrop et les autres liens entre appareils proches (AWDL) est affiché à part, sous la forme « Réseau local : 2,1 GB, non compté », quand vous survolez le chiffre consommé de la carte du forfait, ainsi que dans le panneau de bande passante de chaque app. Le total du Mac vient des compteurs Wi-Fi et Ethernet : il inclut donc ce qu’aucune app ne comptabilise, à savoir les en-têtes de paquets et les accusés de réception, que les compteurs d’octets des apps excluent (en général 5 à 10 % de plus), un processus lancé et terminé entre deux échantillons, le Partage Internet, ou un VPN que macOS gère lui-même. La même infobulle affiche cette part sous la mention « Non lié à une app » ; elle n’est jamais attribuée à une app.

Avec un VPN, le trafic d’une app passe par le tunnel et le VPN le fait sortir par le Wi-Fi ou l’Ethernet. Kilobat le compte une seule fois, là où il quitte le Mac, comme votre opérateur, et étiquette la part de l’app « Via un VPN ». Avec un proxy (un proxy système, HTTPS_PROXY ou une app de proxy locale), les apps parlent au proxy sur ce Mac et c’est le proxy qui établit les connexions Internet : les octets apparaissent donc sous le proxy, et Kilobat ne peut pas savoir quelle app se trouvait derrière. Un proxy en mode TUN est un VPN pour Kilobat : la connexion propre de chaque app est étiquetée « Via un VPN », et le trafic sortant du proxy apparaît sous le proxy. Un proxy d’entreprise sur une adresse privée compte comme réseau local.

Téléchargements Système

Les apps confient certains téléchargements à macOS : nsurlsessiond (transferts en arrière-plan pour des apps comme Musique et Podcasts), mobileassetd (modèles d’Apple Intelligence et de Siri, voix, polices), softwareupdated, appstored et appstoreagent, cloudd et bird (iCloud), fileproviderd et la mise en cache de contenu. La liste des apps les regroupe sous Téléchargements Système, avec le rôle de chacun. Avec le filtrage activé, le filtre voit pour quelle app chaque connexion a été établie : la liste indique alors « Pour Musique » et un blocage s’affiche sous la forme « com.apple.Music via nsurlsessiond ». Sans filtrage, nettop ne voit que le service : Kilobat ne peut donc pas dire à quelle app un téléchargement était destiné.

Un processus qui n’est ni une app ni un composant de macOS, comme node, python, deno, bun ou un binaire Go dans votre dossier de départ ou dans Homebrew, affiche le chemin de son exécutable quand vous développez sa ligne : un agent ou un outil inconnu ne passe donc pas inaperçu.

Activez Envois inhabituels dans les Réglages pour être prévenu quand une app envoie cinq fois plus que d’habitude en une heure, et au moins 50 MB, au plus une fois par jour et par app. Cette option se contente de notifier. Les règles temporaires et les règles de connexion qui expirent sont listées sous Profils avec le temps restant, pour que vous puissiez y mettre fin plus tôt.

Bloquer des domaines et des IP

Faites un clic droit sur une connexion ouverte d’une app pour bloquer cet hôte pour l’app ou pour toutes les apps. La liste de blocage accepte les domaines (sous-domaines compris ; *.example.com fonctionne aussi), les adresses IP et les plages CIDR, en plus d’une liste hosts importée. Depuis le Terminal : kilobat block-host ads.example.com.

Offrez Pro, recevez Pro

Chaque licence Pro a son propre lien de parrainage, kilobat.app/r/ suivi d’un code court. Vous le trouverez dans les Réglages sous Kilobat Pro, ou sous une carte à partager, avec « Copier le lien » et « Partager ». Il n’y a pas de compte : le code vient de votre licence et ne révèle pas votre clé.

Un ami qui ouvre votre lien puis Kilobat obtient un essai Pro de 30 jours au lieu de 7. Chaque Mac peut utiliser un seul lien de parrainage, une seule fois. Quand il achète Pro, dans l’app ou sur le site après avoir suivi votre lien, votre licence gagne un Mac de plus. Tous les trois amis, vous gagnez une licence Pro gratuite : un code à usage unique affiché dans les Réglages, à saisir lors du paiement pour vous-même ou pour qui vous voulez.

Un achat compte une fois passé le délai de remboursement de 14 jours ; d’ici là, les Réglages l’affichent comme en attente. Les achats remboursés, les licences gratuites et les achats via votre propre lien ne comptent pas.

Confidentialité

L’historique du trafic, les noms des réseaux et les règles restent sur votre Mac. Pas de compte, pas de télémétrie. Les diagnostics contactent des services de test, et l’activation de licence et la recherche de mises à jour contactent leurs services respectifs. Lisez la politique de confidentialité.