Kilobat-Dokumentation

Alles, was du brauchst, um Kilobat aus der Menüleiste, im Terminal oder über einen KI-Agent zu nutzen.

Installation

Die CLI ist kostenlos und Open Source. Installiere sie mit Homebrew:

brew install seifip/kilobat/kilobat

Damit werden kilobat und kb installiert, ein kurzer Alias. Alle Beispiele unten funktionieren mit beiden.

Oder lade die Mac-App, die die CLI ebenfalls enthält, unter Kilobat.app/Contents/Helpers/kilobat.

Kilobat Lite im Mac App Store

Kilobat Lite ist eine kostenlose Ausgabe für den Mac App Store und kommt bald. Sie läuft in Apples App-Sandbox und behält, was dort funktioniert: die Zustandsprüfungen, den Geschwindigkeitstest, das WLAN-Radar und Netzwerke in der Nähe, „Warum keine Verbindung?“ und Wachhalten. Datenverkehr pro App, Regeln und der Netzwerkfilter, DNS-Änderungen, der Helfer für den geschlossenen Deckel und die CLI brauchen Berechtigungen, die die Sandbox nicht erlaubt, deshalb gibt es sie nur in der Kilobat-App von dieser Website. Beide lassen sich nebeneinander installieren.

Aktiviere die Tab-Vervollständigung für deine Shell:

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

Schnellstart

Führe kilobat ohne Argumente aus, um ein interaktives Menü zu öffnen: Pfeiltasten oder j/k zum Bewegen, Eingabetaste zum Öffnen, eine Zahl zum Springen, q zum Beenden.

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

Führe kilobat <command> --help aus, um Hilfe zu einem Befehl zu bekommen.

Befehle

Überwachen

kilobat status [--watch] [--json]Live-Datenverkehr pro App und Sitzungslimit; ein JSON-Schnappschuss oder mit --watch ein JSON-Lines-Stream
kilobat report [--csv|--json] [--summary] [--days 1…365]Lokal aufgezeichneter Nutzungsverlauf oder Tagessummen und Top-Apps; die CSV hat eine Zeile pro App
kilobat report compare --total 40GB [--unit GB|GiB] [--direction both|download|upload] (--from DATE --to DATE | --period last-month) [--network NAME] [--json|--csv]Der Wert eines Routers oder Anbieters neben dem, was Kilobat auf diesem Mac für denselben Zeitraum aufgezeichnet hat, in derselben Einheit, mit den aufgezeichneten Stunden, jeder Lücke und den wahrscheinlichen Gründen für eine Abweichung
kilobat health-history [--hours 1…720] [--json]Router-, Internet-, Jitter- und DNS-Prüfungen, die die App im Zeitverlauf aufgezeichnet hat
kilobat proxy [routes [--app name] | test] [--json]Proxy-Apps, der Systemproxy und ihre Probleme; welche Regel und welchen Node jede App genommen hat; wie schnell jeder Node antwortet
kilobat vpn [--json]Das VPN und ob DNS oder IPv6 daran vorbeilaufen
kilobat calls [--limit 1…200] [--json]Nach jedem Anruf: wie oft er gehangen hat und warum, aus den Berichten der App
kilobat overlay [--port 7171] [--target internet|router|host]Ein Live-Ping-Overlay für OBS und andere Streaming-Apps, auf localhost bereitgestellt bis Ctrl-C
kilobat support-report [--hours 1…168] [--host h] [--markdown|--html] [--output f]Ein Bericht für deinen Anbieter oder IT-Support: Befunde, Latenz, Ausfälle und Geschwindigkeitstests, ohne den Namen deines Netzwerks oder lokale Adressen
kilobat networks [forget <name>]Gesehene Netzwerke mit dem jeweils gespeicherten Profil, Limit und den Datenkosten
kilobat networks cost <metered|unmetered|automatic> [name]Dieses oder ein benanntes Netzwerk als begrenzt oder unbegrenzt behandeln oder wieder macOS folgen
kilobat bandwidth [app] [hour|day|week|month] [--back N] [--json]Gesendete und empfangene Bytes einer App über eine Stunde, einen Tag, eine Woche oder einen Monat, mit Spitzenwert; --back springt zu früheren Zeiträumen
kilobat access-policy <bundle-id> [--json]Die Verbindungen, die der Entwickler einer App in ihrer Internet Access Policy angibt, und warum

Diagnose

kilobat diagnose [--json]WLAN-, Router-, Internet-, DNS- und Captive-Portal-Prüfungen mit Empfehlungen
kilobat radar [--watch] [--json]Signalwert und Suche nach dem besten Platz
kilobat scan [--json]Netzwerke in der Nähe, Kanäle und Kanalbreiten
kilobat channels [--json]Auslastung pro Kanal und der am wenigsten belegte
kilobat speedtest [--json] [--budget-mb 1…80] [--parallel]Geschwindigkeit über Cloudflare, Latenz unter Last und Einschätzung für Anrufe und Streaming, höchstens 80 MB. Standardmäßig eine Verbindung; --parallel öffnet vier, wie die meisten Speedtest-Websites
kilobat speed-compare [<test> <test>] [--json]Was sich zwischen zwei gespeicherten Geschwindigkeitstests unterschied: Netzwerk, Zeit, Server, Verbindungen, WLAN-Band und Signal, VPN, sonstiger Datenverkehr
kilobat ip [--public] [--json]Wo der Datenverkehr hinausgeht: die Schnittstelle und ein etwaiges VPN, ausgelesen auf diesem Mac; --public fragt zusätzlich Cloudflare nach deiner öffentlichen IP und ihrem Registrierungsland
kilobat stutter [--seconds 10…60] [--target router|internet|<host>] [--json]Pingt alle 50 ms, um die kurzen Latenzspitzen zu finden, die Geschwindigkeitstests übersehen – wann sie auftreten und ob sie sich wiederholen
kilobat airdrop [status|everyone|contacts|off] [--json]AirDrop-Sichtbarkeit, die AirDrop-Verbindung (AWDL) und was sie nutzt; zum Ändern der Sichtbarkeit öffnen sich die Systemeinstellungen
kilobat bluetooth [--json]Bluetooth-Geräte und ob sie sich 2,4 GHz mit deinem WLAN teilen
kilobat dns [automatic|cloudflare|google|quad9|flush]DNS lesen oder festlegen oder den Cache leeren

WLAN

kilobat wifi [status]Aktuelles Netzwerk, Signal, Kanal und Übertragungsrate
kilobat wifi on|off|restart|disconnectWLAN ein- und ausschalten und die Verbindung steuern
kilobat wifi join <name> [--password-stdin]Mit einem gespeicherten oder einem neuen Netzwerk verbinden
kilobat wifi knownGespeicherte Netzwerke in der Reihenfolge der Bevorzugung
kilobat wifi password|share <name>Ein gespeichertes Passwort zeigen oder einen QR-Code zum Scannen mit dem Smartphone
kilobat low-latency on [--for 15m|1h|2h] [--until-quit <app>]AirDrop und AWDL während Anrufen und Spielen pausieren: standardmäßig 15 Minuten, bis zu 4 Stunden oder bis eine App beendet wird
kilobat low-latency offAirDrop und AWDL wiederherstellen, auch bei einer in der App gestarteten Pause

Wach & Agenten

kilobat awake [--display]Hält den Mac bis Ctrl-C wach; beim Zuklappen geht er trotzdem in den Ruhezustand, außer du fügst --lid-closed hinzu
kilobat awake --lid-closed [--for 2h|--until-quiet|-- <command>]Läuft auch bei geschlossenem Deckel weiter, höchstens 8 Stunden, über den Energie-Helfer der App; erfordert „Betrieb bei geschlossenem Deckel erlauben“ in den Einstellungen
kilobat awake --for 90m|2h|45sEine Weile wach bleiben
kilobat awake --until-quiet [--app <id>] [--quiet 1…60]Wach bleiben, bis Downloads oder eine App ruhig werden, standardmäßig unter 16 KB/s für 3 Minuten
kilobat awake -- <command> [args]Wach bleiben, solange ein Befehl läuft, dann die von seinen Prozessen übertragenen Daten melden und mit seinem Status beenden
kilobat awake --while-frontmost <app> [--display] [--for 2h]Nur wach bleiben, solange diese App vorne ist, zum Lesen oder Präsentieren. Wechselst du weg, darf der Mac in den Ruhezustand; es endet, wenn die App beendet wird, bei 20 % Akku oder nach --for. --display lässt auch den Bildschirm an
kilobat settings awake-on-power on|offDie App bleibt wach, solange das Netzteil angeschlossen ist, und lässt den Mac wieder in den Ruhezustand, wenn es abgezogen wird
kilobat settings keep-screen-on on|offLässt bei allem, was die App wach hält, auch den Bildschirm an: Timer, Downloads, Agents, die App im Vordergrund und am Netzteil
kilobat sessions [--days N] [--json]Wach-Sitzungen und KI-Agent-Läufe, die die App aufgezeichnet hat, mit Datenverbrauch und Netzwerkwechseln
kilobat agent-event <start|working|waiting|done|failed> [--agent name] [--stdin-json|--json-arg]Für die Hooks eines Agents: meldet der App, dass ein Lauf begonnen hat, auf dich wartet oder fertig ist. Ohne Ausgabe, endet immer mit 0
kilobat why <url|host> [--app <id>] [--proxy <url>] [--context container|vm|remote|provider] [--failed-at <time>] [--json]Findet die Ebene, die eine Verbindung stoppt: Netzwerk und Schnittstelle, Proxy und der eigene Proxy der App, DNS, Kilobat-Regeln, IPv4 und IPv6, TLS, der Server und jede Weiterleitung. Ruft genau die URL ab; die Ausgabe verbirgt Query-Werte
kilobat conditions [--json]Begrenzt, Datensparmodus, VPN, Latenz, Akku und Wärme, ob der Deckel zugeklappt werden darf, mit Empfehlungen für lange Läufe

Steuern

kilobat profile [travel|work|unrestricted]Profile auflisten oder eines auswählen
kilobat allow|block <bundle-id> [--minutes 1…1440] [--profile name]Eine App-Regel speichern, optional temporär oder für ein anderes Profil
kilobat reset <bundle-id> [--profile name]Die Regel einer App entfernen, damit sie dem Standard folgt
kilobat rules [--profile name] [--json]Die Regeln eines Profils
kilobat limit [GB] [--cycle session|daily|weekly|monthly] [--reset-day N] [--alert 50,80,100]Datenlimit dieses Netzwerks lesen oder festlegen, wann es neu beginnt und wann es benachrichtigt
kilobat quota <bundle-id> <GB> [--upload] [--all-networks]Die Daten einer App pro Limit-Zyklus begrenzen; quota <bundle-id> --remove hebt das wieder auf
kilobat quota --list [--json]App-Kontingente mit dem, was jedes in diesem Zyklus verbraucht hat
kilobat updaters [--json]In begrenzten Netzwerken pausierte Updater, die Update-Bytes, die in diesem Netzwerk trotzdem durchkamen, und die Apps, die sich von innen heraus aktualisieren
kilobat updaters on|offUpdater-Helfer wie Google Updater und das macOS-Softwareupdate pausieren, solange das Netzwerk begrenzt ist (standardmäßig ein); die Apps funktionieren weiter
kilobat settings [name [value] ]Einstellungen lesen oder ändern, etwa new-apps (allow, ask oder block), apple-software, auto-travel, pause-updaters, awake-on-power, public-ip (standardmäßig aus), speed-streams, alerts und menu-bar
kilobat approvals [--json]Apps, die auf Freigabe warten, während bei neuen Apps nachgefragt wird, mit Signatur und Zielen
kilobat approve|deny <app-id> [--minutes 1…1440]Eine wartende App sofort blockieren oder die Person bitten, das Erlauben in Kilobat zu bestätigen
kilobat block-host|unblock-host <domain|IP|CIDR> [--app <id>]Eine Domain (inklusive Subdomains, *.example.com wird akzeptiert), eine IP oder einen Bereich für alle Apps oder für eine App blockieren
kilobat quit <PID> [--force]Einen Prozess beenden

Einrichtung

kilobat openDie Mac-App öffnen
kilobat doctorApp, Netzwerkfilter und Überwachung prüfen
kilobat completion [zsh|bash|fish]Ein Shell-Vervollständigungsskript ausgeben
kilobat mcpDen MCP-Server für KI-Agents über stdio ausführen
kilobat updateEine Homebrew-Installation aktualisieren

Für Profis

kilobat destinations [--pid PID] [--json]Beobachtete Prozess-Sockets
kilobat devices [--bonjour] [--json]Geräte in deinem Netzwerk und Bonjour-Dienste
kilobat devices name <MAC> <name>Ein Gerät benennen
kilobat trace <host> [--rounds 2…10] [--json]Begrenzte Routenprüfung über 12 Hops; --rounds verfolgt mehrmals und zeigt Verlust und Verzögerung jedes Hops
kilobat route-history --host <host> [--json]Jede gespeicherte Verfolgung zu einem Host, Hop für Hop wie mtr: Verlust, bester, mittlerer und schlechtester Wert, Routenänderungen und wo die Verzögerung beginnt
kilobat http-check <URL> [--json]Timing für DNS, Verbindungsaufbau, TLS und erstes Byte
kilobat dns-benchmarkResolver-Zeiten
kilobat lan-test <server> [--reverse] [--json]Fünf Sekunden iperf3-Test zu einem Gerät, auf dem iperf3 -s läuft; erfordert iperf3, das Kilobat nie installiert
kilobat interfaces [--json]Physische und VPN-Zähler, getrennt
kilobat capture <interface> <file.pcap>Begrenzter Paketmitschnitt
kilobat connection-rule allow|block <app> <host> [port]Eine Zielregel speichern
kilobat blocklist status|import <path>|clearEine Domain-Blockliste verwalten
kilobat wake <MAC-address>Ein Wake-on-LAN-Paket senden
kilobat spots [save <name>|remove <id>]Gespeicherte WLAN-Orte
kilobat outages / speed-history [--days N]Aufgezeichnete Ausfälle und Geschwindigkeitstests als JSON

Skripte und JSON

In einer Pipe wechselt die Ausgabe automatisch zu JSON, sodass Skripte nie das Layout für Menschen parsen müssen. Übergib --json, um es ausdrücklich festzulegen.

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

Setze NO_COLOR, um Farben auszuschalten. Änderungen am DNS erfordern eine Administratorfreigabe.

KI-Agents und MCP

Die Schritt-für-Schritt-Einrichtung für Claude Code, Codex, Cursor, Gemini CLI, Claude Desktop, Windsurf, Cline, Zed und jeden anderen MCP-Client findest du unter Kilobat in deinem KI-Agent einrichten.

Gib einem Agent wie Claude Code, Codex oder Cursor diesen Prompt:

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-Server

kilobat mcp spricht das Model Context Protocol über stdio. Füge ihn zu Claude Code hinzu:

claude mcp add kilobat -- kilobat mcp

Oder füge ihn zu einem beliebigen Client hinzu, der eine mcpServers-Konfiguration liest:

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

Nur lesende Tools: 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 (fragt Cloudflare nur dann nach deiner öffentlichen IP, wenn der Agent public_ip übergibt), list_networks, list_rules, list_approvals, list_blocked_connections, run_stutter_test (sendet nur Pings), get_nearby_radios und create_support_report (der Bericht für deinen Anbieter, den der Agent dir übergibt). Sie liefern dasselbe JSON wie die CLI. run_speedtest verbraucht Daten, run_lan_test überträgt fünf Sekunden lang Daten in deinem eigenen Netzwerk und fragt vorher, und keep_awake und release_awake verhindern den Ruhezustand bei Inaktivität für eine festgelegte Zeit, ohne Einstellungen zu ändern; keep_awake mit lid_closed hält den Mac auch bei geschlossenem Deckel am Laufen, sofern du das erlaubt hast, und fragt dich vorher. Ändernde Tools (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, das auch den Cache leert, und set_airdrop_visibility, das die AirDrop-Einstellungen öffnet) sind als Änderungen markiert, und ihre Beschreibungen weisen den Agent an, dich vorher zu fragen.

Wenn etwas keine Verbindung bekommt

kilobat why <host> (MCP: diagnose_connection) prüft einen Host Ebene für Ebene von diesem Mac aus, ohne curl oder nc auszuführen, sodass ein strenges Profil die Prüfung selbst nicht blockieren kann. IPv4 und IPv6 werden getrennt getestet: Ein Netzwerk mit kaputtem IPv6 – eine häufige Ursache für Agents, die hängen oder sich ständig neu verbinden – bekommt eine klare Antwort. Es nennt die genutzte Schnittstelle, etwa WLAN, einen Smartphone-Hotspot oder ein VPN, und probiert jede einzelne, wenn es mehrere gibt. Es meldet den Proxy, den das System oder seine PAC-Datei wählt, und mit --app die Variable HTTPS_PROXY aus der Umgebung dieser App, ohne Passwörter. Ist ein VPN oder Proxy aktiv, vergleicht es den direkten Weg mit dem Tunnel. Bei einem privaten Namen, der an den eigenen Resolver eines VPN geht, sagt es, an welchen, und ob er antwortet. Code in einem Container, einer VM oder auf einem entfernten Rechner hat ein eigenes Netzwerk: Übergib --context, und der Bericht endet mit einem Befehl, den du dort ausführst. Stellt ein gehosteter Dienst die Anfrage von seinen eigenen Servern aus, wie Warp bei einem eigenen Inferenz-Endpunkt, sagt --context provider, wenn das Ziel privat ist (localhost, eine LAN- oder Tailscale-Adresse) und damit für diese Server unerreichbar – auch wenn es vom Mac aus funktioniert.

Gib ihm genau die URL, die fehlschlägt, samt Query: Es ruft diese URL ab, zeigt Query-Werte in jeder Ausgabe aber als [redacted], sodass ein signierter Download-Link privat bleibt. Es sendet die Anfrage so, wie die App es tun würde: über die Variable HTTPS_PROXY der App, den System-Proxy oder mit --proxy <url> über eine Proxy-Adresse, die die App in ihren eigenen Einstellungen festlegt. Funktioniert dieser Proxy und direkte Verbindungen nicht, wie in vielen Firmennetzwerken, sagt es das, statt zu scheitern; funktionieren direkte Verbindungen und die Anfrage über den Proxy der App scheitert, sagt es, dass das Netzwerk in Ordnung ist und der Weg der App nicht. Eine Einstellung, die es nicht lesen oder nicht nutzen kann, etwa der Hugging-Face-Proxy-Schalter von LM Studio für Downloads von huggingface.co, bekommt einen eigenen Hinweis mit dem, was Nutzer berichtet haben, und das Ergebnis sagt dann, dass das Netzwerk den Host erreicht – nicht, dass die Anfrage der App funktioniert. Kilobat ändert nie die Einstellungen einer anderen App. Ein Server, der HEAD ablehnt, bekommt ein einziges GET für ein einzelnes Byte, nie einen Download. Es folgt bis zu fünf Weiterleitungen, nennt den Schritt, der scheitert, und prüft IPv4 und IPv6 für den Host, bei dem die Weiterleitungen enden. Mit --app listet es die offenen Verbindungen der App zu diesem Host oder ihrem Proxy, sagt, wenn sie eine andere IP-Version oder einen anderen Server nutzen als die frische Prüfung, und schaut ein paar Sekunden später noch einmal nach: Eine Übertragung, die still geworden ist, wird als still gemeldet, nie als abgeschlossen. Der Bericht hält Name und Version der App fest, die gesendete Methode, den genommenen Weg und mit --failed-at den Zeitpunkt, zu dem die App scheiterte, neben dem Zeitpunkt der Prüfung. Eine bestandene Prüfung heißt: Diese Anfrage funktioniert jetzt von diesem Mac über diesen Weg. Wie es einer bereits laufenden Übertragung geht, sieht sie nicht – beobachte das mit kilobat bandwidth <app>.

Agents verbinden

Ohne Hilfe richtet sich Kilobat nach dem Datenverkehr und der CPU-Last eines Agents, also kann ein stiller Agent fertig sein oder auf dich warten. Seine Hooks sagen Kilobat, zu welchem Projekt ein Lauf gehört, wann er auf dich wartet und wann er fertig ist. Jeder Hook führt kilobat agent-event aus, das nichts ausgibt, sofort zurückkehrt und immer mit 0 endet, sodass es den Agent nicht stören kann. Läuft die App nicht, warten die Ereignisse in einer kleinen Datei, die sie beim Öffnen liest. Kilobat liest Sitzungs-IDs, Ordner und kurze Statustexte, nie Prompts oder Antworten. Führe diese mit deinen vorhandenen Hooks zusammen.

Claude Code, in ~/.claude/settings.json. Jeder Hook bekommt auf stdin JSON mit Sitzungs-ID und Ordner, das --stdin-json liest. Eine Berechtigungs- oder Eingabeabfrage bedeutet „wartet“; Stop bedeutet „fertig“, sobald Hintergrundaufgaben abgeschlossen sind; ein Rate-Limit bedeutet „wartet“, bis es zurückgesetzt wird.

{
  "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, am einfachsten: notify in ~/.codex/config.toml. Codex übergibt nach jedem Zug ein JSON-Argument, das --json-arg liest. Es meldet nur „fertig“, und Codex führt nur ein einziges notify-Programm aus.

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

Um auch „wartet“ zu melden, nutze stattdessen Codex-Hooks in ~/.codex/hooks.json und vertraue ihnen mit /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, in ~/.gemini/settings.json. Gemini CLI läuft als node, daher kann Kilobat den Datenverkehr nicht dem Lauf zuordnen, aber der Status kommt an.

{
  "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 und Kanban): Installiere Kilobats Plug-in, das eine Datei zu Clines Plug-in-Speicher hinzufügt und keine anderen Einstellungen ändert. cline plugin uninstall kilobat entfernt es.

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

Es meldet einen Lauf als arbeitend, fertig, fehlgeschlagen (solange Cline offen bleibt), abgebrochen, durch ein Rate-Limit gebremst (sobald Clines eigene Wiederholungen aufgebraucht sind) und wartend, während Cline dir eine Frage stellt. Es wartet auf Subagents und Teammitglieder, bevor es einen Lauf als fertig meldet. Clines Freigabeabfragen sind für Plug-ins nicht sichtbar, daher deckt die Erkennung über Datenverkehr und CPU-Last diese ab.

Jeder andere Agent kann kilobat agent-event start|working|waiting|done|failed --agent <name> --session <id> --cwd <folder> aus seinen eigenen Hooks aufrufen. Füge --verbose hinzu, um zu sehen, was passiert, wenn du es von Hand ausprobierst.

Warum Geschwindigkeitstests voneinander abweichen

Kilobats Geschwindigkeitstest sendet jeweils eine HTTPS-Verbindung an das nächstgelegene Rechenzentrum von Cloudflare, 8 Sekunden pro Richtung und höchstens 80 MB, und pingt 1.1.1.1 vor und während der Übertragungen. Speedtest by Ookla, fast.com und networkQuality von macOS öffnen mehrere Verbindungen gleichzeitig und wählen eigene Server, daher zeigen sie bei schnellen oder weit entfernten Leitungen meist mehr. Wähle 4 Verbindungen neben der Testtaste im Tab „Tempo“ oder führe kilobat speedtest --parallel aus, um zu sehen, wie viel das bei deiner Verbindung ausmacht. Jeder gespeicherte Test behält das Cloudflare-Rechenzentrum, die Anzahl der Verbindungen, die Verbindungsart (WLAN-Band, Kanal, Signal und Übertragungsrate oder Ethernet), das genutzte VPN und wie viel anderen Datenverkehr dieser Mac währenddessen übertragen hat. Verlauf › Vergleich der Geschwindigkeitstests, kilobat speed-compare und das MCP-Tool compare_speed_tests stellen zwei Tests nebeneinander und listen auf, was sich unterschied, jeweils mit einem Hinweis, wie das ein Ergebnis verändert. Sie listen Unterschiede auf, keine Ursachen: Auch andere Geräte in deinem Netzwerk konkurrieren um die Leitung, und die sieht Kilobat nicht.

VPN und öffentliche IP

Zustand › Wo der Datenverkehr hinausgeht, das WLAN-Menü und kilobat ip zeigen die Schnittstelle, die die Standardroute nutzt, und ob das ein VPN ist – ausgelesen aus den Routen dieses Mac und den VPNs, die macOS als verbunden anzeigt. Ein VPN, das verbunden ist, während die Standardroute über WLAN läuft, etwa Tailscale ohne Exit-Node, erscheint als „Geteilt“: Nur manche Ziele laufen darüber. Schalte Einstellungen › Netzwerk › Öffentliche IP abfragen ein, um auch die Adresse zu sehen, die Websites sehen. Sie wird bei Netzwerkwechseln und alle 30 Minuten bei Cloudflare abgefragt, zusammen mit dem Land, in dem sie registriert ist, aus den DB-IP-Daten, die Kilobat mitbringt. Standardmäßig ist das aus, da Cloudflare diese Anfrage sieht; kilobat ip --public fragt einmal. Das Registrierungsland ist nicht der Ort, an dem du oder ein Server sich befinden, und weder es noch ein VPN zeigt, dass eine Verbindung privat oder anonym ist. Einstellungen › Menüleiste › VPN zeigt „Ein“, „Geteilt“ oder „Aus“ (mit Ländercode, wenn die Abfrage aktiv ist) neben der Fledermaus, und der Verlauf listet, wann ein VPN ein- oder ausgeschaltet wurde und wann sich die öffentliche IP geändert hat.

Routenverlauf

Tools › DNS & LAN › 3-mal verfolgen oder kilobat trace <host> --rounds 3 verfolgt eine Route dreimal mit drei Proben pro Hop und speichert jede Verfolgung. Verlauf › Gespeicherte Routen fasst jede gespeicherte Verfolgung zu einem Host Hop für Hop zusammen, wie mtr: Verlust, bester, mittlerer, schlechtester und letzter Wert der Verzögerung, welche Hops den Router gewechselt haben und wo dauerhafte Verzögerung beginnt. Ein Hop, der Antworten auslässt, während spätere Hops antworten, ist ein Router, der Proben drosselt – kein Verlust. Nur für das lokale Netzwerk führt kilobat lan-test <device> fünf Sekunden iperf3 gegen ein Gerät aus, auf dem iperf3 -s läuft; iperf3 installierst du selbst, Kilobat installiert nie etwas.

Solange eine App vorne ist

Zum Lesen oder Präsentieren hält „Solange eine App vorne ist“ in der Teetasse den Mac nur wach, solange die gewählte App im Vordergrund ist, und lässt ihn wieder in den Ruhezustand, sobald du wegwechselst. „Bildschirm anlassen“ in der Teetasse entscheidet, ob auch der Bildschirm an bleibt – wie bei allem, was Kilobat wach hält. Kilobat folgt den App-Wechsel-Ereignissen von macOS: Es fragt nicht ständig ab, bewegt nicht die Maus und täuscht keine Aktivität vor, kann dich also gegenüber Überwachungssoftware nicht anwesend erscheinen lassen. Es endet, wenn die App beendet wird, wenn du es ausschaltest oder im Akkubetrieb bei 20 % (oder dem Minimum, das du für Läufe bei geschlossenem Deckel festgelegt hast), und es hält nie den Deckel. Es hat eine eigene Sperre, sodass ein App-Wechsel oder das Beenden der App nie eine Wach-Sitzung oder einen Agent-Lauf beendet. Im Terminal: kilobat awake --while-frontmost Keynote --display.

Am Netzteil

Schalte „Am Netzteil wach bleiben“ ein (Einstellungen › Wach & Agenten) oder „Am Netzteil“ in der Teetasse, und das Anschließen des Netzteils hält den Mac wach, bis du es abziehst – wie die Statusleiste mit „Wach am Netzteil“ anzeigt. „Bildschirm anlassen“ entscheidet, ob auch der Bildschirm an bleibt. Schaltest du es aus, bleibt es bis zum nächsten Einstecken aus, auch wenn Kilobat neu startet. Kilobat erfährt vom Wechsel über die Stromquellen-Mitteilung von macOS selbst, ohne ständiges Abfragen. Abziehen beendet nur die Sitzung, die das Einstecken gestartet hat: Eine Sitzung, die du selbst gestartet hast, ein Download, auf den du wartest, eine App im Vordergrund, ein Agent-Lauf oder eine Sperre aus dem Terminal laufen weiter. Bei geschlossenem Deckel hält es den Mac nie am Laufen. Im Terminal: kilobat settings awake-on-power on und kilobat settings keep-screen-on on für den Bildschirm; kilobat conditions --json meldet es als awakeOnPower.

Betrieb bei geschlossenem Deckel

Zuklappen versetzt den Mac in den Ruhezustand, auch wenn Kilobat ihn wach hält – außer du erlaubst den Betrieb bei geschlossenem Deckel unter Einstellungen › Wach & Agenten. Dabei wird ein kleiner Helfer installiert, der als root läuft; macOS bittet dich, ihn unter Systemeinstellungen › Allgemein › Anmeldeobjekte zu erlauben. Ist er aktiv, hält ein arbeitender Agent-Lauf den Mac bei geschlossenem Deckel am Laufen, ebenso eine Wach-Sitzung, wenn du im Teetassen-Menü „Auch bei geschlossenem Deckel“ ankreuzt. Ein Agent, der auf dich wartet, hält ihn nur, wenn „Wach halten, während ein Agent wartet“ an ist, und höchstens 30 Minuten.

Ein zugeklappter Mac in einer Tasche kann überhitzen und seinen Akku leeren. Deshalb lässt der Helfer selbst den Mac in den Ruhezustand gehen: bei deinem Akku-Minimum (standardmäßig 20 %), wenn der Mac heiß wird, sobald er vom Netzteil getrennt wird, falls du „nur am Netzteil“ wählst, nach der längsten Dauer, die du festlegst (höchstens 8 Stunden), und eine Minute nachdem Kilobat beendet wurde. Startet der Helfer oder der Mac neu, während er hält, stellt er die Einstellung zuerst zurück. Kilobat zeigt, wie jede Sperre geendet hat, zum Beispiel „Mac durfte schlafen: Akku bei 20 %“.

Im Terminal bittet kilobat awake --lid-closed die App um dieselbe Sperre und sagt, warum, wenn es nicht geht; die Sperre endet mit dem Befehl. Agents nutzen keep_awake mit lid_closed, und dessen Beschreibung weist sie an, das vorher mit dir abzustimmen. kilobat conditions --json meldet lidClosedAllowed und den aktuellen lidHold.

Agent-Skills

Neun Agent-Skills bringen Coding-Agents bei, das Netzwerk eines Mac zu untersuchen und lange Läufe mit Kilobat am Laufen zu halten. Sie deuten seine Messungen, erklären, was unsicher ist, und fragen, bevor sie Einstellungen ändern. Installiere sie zusammen; der Skill kilobat schickt den Agent zu dem, der passt.

npx skills add seifip/kilobat-skills
kilobatHier anfangen. Einrichtung, Sicherheitsregeln und welcher Skill zur Frage passt.
mac-network-troubleshootingLangsames oder unzuverlässiges Internet mit unklarer Ursache: findet die fehlerhafte Ebene.
mac-wifi-troubleshootingSchwaches oder abbrechendes WLAN, volle Kanäle, der beste Platz für Mac oder Router.
mac-hotspot-data-saverSmartphone-Hotspots und Datenobergrenzen: was Daten verbraucht, Reiseprofil, Limits.
mac-dns-troubleshootingLangsame DNS-Abfragen, Resolver-Benchmarks, DNS-Wechsel, Captive Portals.
video-call-network-checkRuckelnde Anrufe und Spiele-Streams: Latenzspitzen, Jitter, Verlust, Bufferbloat und Uploads im Hintergrund.
mac-bandwidth-monitorWelche Apps die Verbindung nutzen, Nutzungsverlauf und wohin sie sich verbinden.
mac-app-firewallApps, Domains und IPs blockieren oder erlauben; bei neuen Apps fragen und antworten.
mac-agent-runsLange Agent-Läufe: den Mac wach halten, Bedingungen prüfen, Agent-Hooks verbinden, sehen, wann ein Lauf fertig ist, auf dich wartet oder hängt.

Installiere die Kilobat-CLI separat mit dem Homebrew-Befehl oben oder verbinde ihren MCP-Server. Die CLI erfordert macOS 14 oder neuer; der Homebrew-Build aus dem Quellcode erfordert Xcode 16 oder neuer. Sieh dir die Skills auf skills.sh an oder lies ihren Quellcode und ihre Referenzen.

Die Mac-App

  1. Lade das Disk-Image, zieh Kilobat in den Ordner „Programme“ und öffne es von dort.
  2. Live-Datenverkehr, die WLAN-Auswahl, Geschwindigkeitstests, Wachhalten und „Warum keine Verbindung?“ sind kostenlos, ebenso die gesamte CLI. Pro ergänzt in der App Regeln und Nachfragen, Limits, WLAN-Zustand, die Verbindungskarte, das Radar und den Verlauf. Um Pro freizuschalten, starte die 7-tägige Testphase oder füge deine Lizenz in den Einstellungen ein.
  3. Wähle deine Menüleistenobjekte in den Einstellungen. Halte beim Ziehen eines Menüleistenobjekts die Befehlstaste gedrückt, um es zu verschieben.

Erlaube den Zugriff auf deinen Standort, wenn du gefragt wirst, damit Kilobat WLAN-Namen zeigen und Netzwerke in der Nähe scannen kann. Dein Standort wird nirgendwohin gesendet.

Bandbreite pro App

Die Zeile jeder App zeigt ihre letzte Minute Datenverkehr, Upload über der Linie und Download darunter. Klicke darauf für das Echo der App: ein Satz dazu, was sie übertragen hat, dann eine Live-Wellenform der letzten fünf Minuten und mit Pro ihr Verlauf nach Stunde, Tag, Woche oder Monat. Markierungen zeigen, wann der Mac sich mit einem anderen Netzwerk verbunden hat oder ein Agent-Lauf die App genutzt hat, und Kacheln zeigen, welche Netzwerke den Verkehr getragen haben, wie er im Vergleich zu den letzten vier Zeiträumen der App ausfällt und welchen Anteil er am gesamten Datenverkehr hat. Unter dem Diagramm stehen die offenen Verbindungen der App mit der jeweils übertragenen Datenmenge und dem Land sowie die Verbindungen, die der Entwickler der App in einer Internet Access Policy angibt, falls die App eine mitbringt.

Vergleich mit deinem Router oder Anbieter

Wenn dein Router, Internetanbieter oder Mobilfunkanbieter eine andere Gesamtmenge zeigt als Kilobat, öffne Verlauf › Mit Router oder Anbieter vergleichen oder führe kilobat report compare aus. Gib den Wert so ein, wie er dort steht, mit Einheit und ob er Download, Upload oder beides zählt, dann denselben Zeitraum und das Netzwerk, für das er gilt. Kilobat zeigt seine eigene Gesamtmenge in derselben Einheit und die Differenz und liest den Wert auch im anderen Einheitensystem, da viele Anbieter GB für 1.073.741.824 Byte (GiB) schreiben statt für 1.000.000.000.

Eine Leiste zeigt die Stunden, die Kilobat tatsächlich aufgezeichnet hat, und seine Lücken: Zeit, in der der Mac im Ruhezustand war (aufgezeichnet ab Kilobat 1.3), Zeit, in der er aus oder offline war oder Kilobat nicht lief, Zeit in anderen Netzwerken und Zeit vor Beginn seines Verlaufs. Darunter stehen die wahrscheinlichen Gründe für die Abweichung, der wahrscheinlichste zuerst. Kilobat sieht nur diesen Mac, nicht die Smartphones, Fernseher und anderen Computer, die ein Router oder Anbieter mitzählt. Datenverkehr im lokalen Netzwerk und über AirDrop, der nie das Internet erreicht, lässt es weg, und Paket-Header, die keiner App zugeordnet sind, zählt es als „nicht zugeordnet“. Anbieter zählen Tage womöglich in einer anderen Zeitzone oder verbuchen die Nutzung verspätet. Kilobat sagt nicht, welcher Wert stimmt. Exportiere den Vergleich als CSV oder JSON, mit Zeitraum, Netzwerken, aufgezeichneten Stunden und jeder Lücke, um ihn mit deinem Anbieter zu teilen.

Ruckeltest

Anrufe, Game-Streaming und Remote-Desktops können ruckeln, während Geschwindigkeit und Verlust gut aussehen, denn eine Ping-Spitze von ein paar hundert Millisekunden verschwindet im Durchschnitt. Der Ruckeltest im Tab „Zustand“ pingt deinen Router (oder das Internet) 20 Sekunden lang alle 50 ms an und zeichnet jede Antwort, Spitzen in Rosa, mit Median, p95, p99 und schlechtestem Ping. Er sagt dir, ob sich die Spitzen in regelmäßigen Abständen wiederholen, was oft auf AirDrop/AWDL-Scans hindeutet, oder zufällig auftreten, was auf ein ausgelastetes Netzwerk, Störungen oder ein schwaches Signal hindeutet. Viele Router beantworten nur etwa zehn Pings pro Sekunde; Kilobat erkennt dieses Muster und zählt es nicht als Verlust. Mit Pro führt Mit Niedriglatenz-Pause vergleichen den Test erneut aus, während AirDrop/AWDL pausiert sind, und sagt, ob es geholfen hat.

Die Niedriglatenz-Pause schaltet AirDrop, Sidecar und Universal Control für 15 Minuten, 1 oder 2 Stunden oder so lange aus, bis eine App wie dein Spiel oder dein Anruf beendet wird, höchstens 4 Stunden. Alles wird immer wiederhergestellt, wenn die Zeit abläuft, die App beendet wird, Kilobat beendet wird oder das Netzwerk wechselt, und beim nächsten Start, falls der Mac abgestürzt ist. macOS fragt nach einer Administratorfreigabe. Der Bereich „In der Nähe“ im Tab „Zustand“ zeigt außerdem, ob der AirDrop-Funk aktiv ist und was ihn nutzt, deine AirDrop-Sichtbarkeit und auf Wunsch die Bluetooth-Geräte, die sich das 2,4-GHz-Band mit dem WLAN teilen.

Das WLAN-Menü listet deine Bluetooth-Geräte unter den Netzwerken: Klicke auf eines, um es zu verbinden oder zu trennen. Ein 2,4-GHz-Etikett markiert verbundene Kopfhörer, Tastaturen und Mäuse, die sich das Band mit deinem WLAN teilen, mit einer Abkürzung zu einem bekannten 5-GHz-Netzwerk. Darunter steht AirDrop, mit seiner Sichtbarkeit, dem, was die Verbindung nutzt, und der Niedriglatenz-Pause. Bluetooth erscheint erst, nachdem du „Bluetooth-Geräte anzeigen“ gewählt hast, sodass macOS erst dann nach dem Zugriff fragt.

Proxys und VPNs

Kilobat arbeitet mit Proxy-Apps (Clash Verge, ClashX, mihomo, Mihomo Party, FlClash, Surge, sing-box, Stash, V2Ray, Xray, Shadowsocks) und VPNs zusammen. Es liest sie nur aus; es leitet nie Datenverkehr um und ändert nie ihre Einstellungen.

  • Datenverkehr zählt für die richtige App. Einer App, die über einen lokalen Proxy sendet, wird ihr eigener Datenverkehr angerechnet, und der Proxy-Kern oder VPN-Tunnel, der ihn weiterleitet, heißt „Leitet Datenverkehr anderer Apps“, statt doppelt gezählt zu werden.
  • Welchen Weg jede App genommen hat. Mit einer Clash-kompatiblen API (Clash Verge, ClashX, mihomo, Mihomo Party, FlClash, clash_api von sing-box) zeigt die Zeile einer App den Node, über den sie lief, etwa „über HK-01 · 2 direkt“, und ihr Tooltip listet jeden Host, jeden Node und jede Regel auf. Kilobat liest die API-Adresse und das Secret aus der Konfiguration der App selbst und zeigt das Secret nie an.
  • Probleme, in „Zustand“ unter „Wo der Datenverkehr hinausgeht“:
    • ein Systemproxy, der auf eine App zeigt, die nicht läuft – das legt jeden Browser lahm;
    • DNS oder IPv6 am VPN vorbei;
    • ein Proxy und ein VPN, die beide Datenverkehr übernehmen;
    • globaler Modus;
    • Blockieren, das Apps hinter einem Systemproxy nicht sieht. Filter von macOS sehen Verbindungen zu 127.0.0.1 nie, also schalte den TUN-Modus des Proxys ein oder blockiere die App in den Regeln des Proxys.
  • Warum keine Verbindung? ergänzt eine Ebene „Proxy-App“ mit dem Modus des Proxys und der Antwortzeit seiner aktuellen Nodes und sagt, wenn ein toter Node das Problem ist.

Im Terminal: kilobat proxy, kilobat proxy routes --app Telegram, kilobat proxy test und kilobat vpn. Für einen Kern, den Kilobat nicht selbst findet, übergib --controller 127.0.0.1:9090 --secret …. Agents bekommen dasselbe über get_proxy_status, test_proxy_nodes und check_vpn.

Widgets

Füge Kilobat zu deinem Schreibtisch oder der Mitteilungszentrale hinzu: Klicke mit der rechten Maustaste auf den Schreibtisch, wähle „Widgets bearbeiten“ und suche nach Kilobat. Netzwerkstatus zeigt die Fledermaus als Zustand der Verbindung mit Internet- und Router-Ping; die mittlere Größe ergänzt die letzten 30 Minuten Latenz, deinen letzten Geschwindigkeitstest und eine Test-Taste. Daten heute zeigt die heutigen Internetdaten, Download und Upload, pro Stunde; mit Pro auch dein Datenlimit. Geschwindigkeitstest zeigt dein letztes Ergebnis und startet mit einem Klick einen neuen (10 MB in einem begrenzten Netzwerk). Die Widgets zeigen keine Netzwerknamen oder Adressen, aktualisieren sich, wenn sich etwas ändert, und sagen, wie alt ihre Werte sind, wenn Kilobat nicht läuft.

Anrufberichte

Nach jedem Anruf sagt dir Kilobat, ob er gehangen hat und warum. Es erkennt einen Anruf, wenn Zoom, Microsoft Teams, FaceTime, Slack, Webex, Discord, Skype, WhatsApp, Telegram, Signal oder ein Browser das Mikrofon länger als zehn Sekunden nutzt. Den Anruf hört es nie: Es sieht nur, welche App das Mikrofon nutzt, was macOS ohnehin anzeigt. Bis der Anruf endet, pingt es einmal pro Sekunde das Internet und deinen Router an, merkt sich die aktivste andere App und prüft alle fünf Sekunden CPU, Arbeitsspeicher, Temperatur und GPU des Mac.

Zwei oder mehr Sekunden am Stück mit verlorenen Pings oder mit Pings, die 200 ms langsamer sind als sonst im Anruf, zählen als Hänger. Jeder Hänger bekommt eine Ursache: eine andere App, die gerade hoch- oder herunterlädt, das WLAN (wenn auch der Router stockte), der AirDrop-Scan oder etwas hinter deinem Router. Getrennt davon sagt die Karte, wann der Mac selbst zu kämpfen hatte: CPU voll ausgelastet (und durch welche App), Arbeitsspeicher knapp, der Mac drosselt sich wegen Hitze oder GPU voll ausgelastet. Die Karte erscheint unter Zustand › Anrufe und als Mitteilung. Ohne Pro zeigt sie, wie oft der Anruf gehangen hat; Kilobat Pro nennt die Ursachen und sagt, was du probieren kannst. Schalte sie unter Einstellungen › Netzwerk › Bericht nach jedem Anruf aus. Im Terminal listet kilobat calls die Karten auf, und Agents bekommen sie über get_call_reports.

Streaming-Overlay

Zeig deinen Live-Ping im Stream. Schalte Einstellungen › Netzwerk › Streaming-Overlay ein und füge dann http://localhost:7171/ in OBS, Streamlabs oder einer anderen Streaming-App als Browser-Quelle hinzu (640 × 80 reicht völlig). Eine kleine Pille zeigt Ping, Jitter, Verlust und die letzte Minute als Linie. Die Fledermaus am Anfang lächelt blau, solange die Linie gut ist, wird violett, wenn es langsamer wird, und schmollt in Rosa, wenn es schlecht ist. Ändern kannst du das in der URL: ?show=ping,jitter,loss,graph,speed, theme=dark, light oder clear sowie size=s, m oder l. Mit Pro blendet brand=0 den Schriftzug aus, und face=0 zeigt statt der Fledermaus einen einfachen Punkt. Solange es aktiv ist, pingt Kilobat einmal pro Sekunde 1.1.1.1; die Seite wird auf 127.0.0.1 bereitgestellt, also kann nur dieser Mac sie öffnen. Ohne die App liefert kilobat overlay dieselbe Seite aus, bis du Ctrl-C drückst.

Ein Bericht für deinen Anbieter

Wenn die Verbindung schlecht ist, will dein Anbieter oder IT-Support Belege sehen. In „Zustand“ erstellt die Taste für einen Bericht einen aus dem, was Kilobat in diesem Netzwerk in den letzten 24 Stunden oder 7 Tagen aufgezeichnet hat. Er umfasst Ausfälle, Latenz am Router und dahinter, Ping-Verlust und Geschwindigkeitstests im Vergleich zu deinem Tarif, dazu eine Prüfung der Website, die nicht geht, falls du eine angibst. Jeder Befund sagt, was wo gemessen wurde, nie, wer schuld ist. Kopiere ihn als Text für einen Support-Chat oder sichere oder teile ihn als PDF. Er lässt den Namen deines Netzwerks, alle lokalen IP- und Hardwareadressen, Gerätenamen und die Apps, die das Netzwerk genutzt haben, weg. Führe im Terminal kilobat support-report --host github.com aus, oder --html --output report.html für die Seite.

Karten zum Teilen

„Teilen & Exportieren“ im Kontextmenü des Menüleistensymbols erstellt ein quadratisches Bild zum Posten: das Wochenecho (die übertragenen Daten, dein aktivster Tag und deine hungrigste App), deinen letzten Geschwindigkeitstest oder „Dieser Ort“, einen WLAN-Bericht für das Café, den Coworking-Space, das Hotel oder die Bibliothek, wo du gerade arbeitest. „Dieser Ort“ zeigt den Namen des Orts, den du eintippst oder aus der Suche von Apple Karten auswählst, dann Download, Upload und Ping aus dem neuesten Geschwindigkeitstest in diesem Netzwerk, ob es für Videoanrufe reicht, wie es sich unter Last hält, und das WLAN-Band. Wähl den Ort aus der Suche, und die Karte bekommt einen kleinen Kartenausschnitt der Umgebung mit einem Punkt darauf; schalte „Karte zeigen“ aus, um ihn wegzulassen. Füge Tags wie „Steckdosen“, „Ruhig“ oder „Lange geöffnet“ und eine einzeilige Notiz hinzu. Kilobat merkt sie sich für dieses Netzwerk auf diesem Mac. Kopiere die Karte, sichere sie oder teile sie auf Nomad List, in einer Google-Maps-Bewertung oder in einem Coworking-Chat. Keine Karte zeigt einen Netzwerknamen oder eine Adresse. Der Kartenausschnitt zeigt den gewählten Ort, nie, wo du bist – außer du wählst „Meinen Standort verwenden“, das einzige Mal, dass „Dieser Ort“ nach deinem Standort fragt.

Andere Apps können Kilobat mit einem kilobat://-Link (ab 1.3.4) an der richtigen Stelle öffnen: kilobat://open/speed öffnet einen Tab (overview, connections, health, radar, speed, history, tools oder settings), kilobat://share/speed, kilobat://share/week oder kilobat://share/place öffnet eine Karte zum Teilen, und kilobat://speedtest startet einen Geschwindigkeitstest. Starte einen Link im Terminal mit open kilobat://open/history oder leg ihn in einem Launcher auf eine Taste. Die Raycast-Erweiterung nutzt diese Links für ihre Aktionen „Open in Kilobat“, und die Kurzbefehle-Aktionen von Kilobat starten Prüfungen, Geschwindigkeitstests, Wachhalten und Berichte aus der Kurzbefehle-App.

Wohin es sich verbindet

„Verbindungen“ zeigt jede offene Verbindung auf einem Globus, gezogen zu dem Land, in dem ihre Adresse registriert ist, mit den aktivsten Ländern in einer Liste und den Sockets darunter. Klicke auf ein Land, um zu filtern. Das Land stammt aus der kostenlosen Datenbank von DB-IP, die der App beiliegt, sodass keine Adresse deinen Mac verlässt. Es ist das Registrierungsland: Eine CDN- oder VPN-Adresse zeigt das Land ihres Eigentümers, nicht den Standort des Servers.

Blockieren und Filtern

Die Überwachung funktioniert ohne Filterung. Um Regeln durchzusetzen, öffne die Filter-Einrichtung in Kilobat und genehmige die Erweiterung und den Inhaltsfilter, wenn macOS fragt. In aktuellen macOS-Versionen findest du Erweiterungen unter Systemeinstellungen → Allgemein → Anmeldeobjekte & Erweiterungen → Netzwerkerweiterungen.

Die Filterung wirkt auf neue Verbindungen; eine bestehende Verbindung kann weiterlaufen, bis sie sich neu verbindet. Wenn eine Regel etwas Wichtiges unterbricht, wechsle zu Uneingeschränkt oder schalte die Filterung in den Einstellungen aus.

Neue Apps: erlauben, fragen oder blockieren

Der Schalter über der App-Liste legt fest, was Reise und Arbeit mit Apps ohne Regel tun. Erlauben lässt sie verbinden. Fragen hält die ersten Verbindungen einer App an und öffnet ein Fenster mit Signatur, Pfad und Ziel; erlaube oder blockiere sie einmal, und Kilobat speichert die Regel. Unbeantwortete Verbindungen geben nach einer Minute auf, und die App fragt erneut. Blockieren lässt nur Apps verbinden, die du erlaubt hast. Schalte Apple-Software erlauben ein, um macOS-Dienste und Apples Apps ohne Nachfrage durchzulassen. Deine Blockliste und Verbindungsregeln gelten in jedem Modus, und wenn Kilobat nicht läuft, werden neue Apps erlaubt statt angehalten.

Hotspots und Datenkosten

macOS markiert manche Verbindungen als begrenzt, etwa einen iPhone-Hotspot, aber nicht jeden Android-Hotspot und kein Smartphone, das per USB oder Ethernet angebunden ist. Jedes Netzwerk hat Datenkosten: Automatisch folgt macOS, Begrenzt oder Unbegrenzt legst du fest. Stell das im WLAN-Menü, im Limit-Menü, im Tab „Zustand“ oder in den Einstellungen ein oder mit kilobat networks cost metered. In einem begrenzten Netzwerk wechselt Kilobat zu Reise, außer du hast für dieses Netzwerk ein Profil gewählt, holt beim Verlassen dein vorheriges Profil zurück und lässt geplante Geschwindigkeitstests aus. kilobat conditions --json und der MCP-Server melden sowohl metered als auch, was macOS sagt (osMetered). Kilobat muss ein Netzwerk erkennen können, bevor du seine Kosten festlegst, daher braucht es für WLAN den Zugriff auf den Standort, um den Namen des Netzwerks zu sehen.

Updater in begrenzten Netzwerken pausieren

In einem begrenzten Netzwerk pausiert der Netzwerkfilter außerdem die Helfer, die Updates von sich aus laden: Google Updater (und den älteren Keystone-Agent), Microsoft AutoUpdate, das macOS-Softwareupdate (softwareupdated), App-Store-Downloads (appstored, appstoreagent, storedownloadd), den Download-Dienst von Sparkle sowie die Installer von Sparkle und Squirrel (Autoupdate, Updater.app, ShipIt). Sie werden mit einer gewöhnlichen Filterregel blockiert, das Protokoll blockierter Verbindungen meldet „Updater in begrenztem Netzwerk pausiert“, und die Apps selbst funktionieren weiter. Sobald das Netzwerk nicht mehr begrenzt ist, laufen die Updates weiter. In anderen Apps, ihren Staging-Ordnern oder den Systemeinstellungen wird nichts geändert, es gibt also nichts wiederherzustellen. Standardmäßig ist das an; schalte es in den Einstellungen oder mit kilobat updaters off aus. Regeln, die bereits für eine Verbindung gelten, etwa eine Zielregel oder eine temporäre Erlaubnis, haben Vorrang, sodass „30 Minuten erlauben“ ein Update durchlässt. Uneingeschränkt pausiert nichts.

Der Tab „Zustand“, kilobat updaters und das MCP-Tool get_updaters zeigen, welche Updater abgedeckt sind, welche Update-Bytes in diesem Netzwerk trotzdem durchgekommen sind (die eigenen Bytes eines Updaters sowie Systemdownloads wie nsurlsessiond, die sich für einen verbunden haben und deren Bytes auch andere Downloads enthalten) und welche installierten Apps sich innerhalb ihres eigenen Prozesses aktualisieren. Die meisten Apps auf Basis von Sparkle oder Electron laden das Update in der App selbst und überlassen nur die Installation einem Helfer, daher lassen sie sich nicht pausieren, ohne die App zu blockieren. Der Filter stoppt neue Verbindungen, sodass ein Download, der schon lief, als das Netzwerk begrenzt wurde, zu Ende laufen kann. Auch Kilobats eigene geplante Update-Prüfung wartet auf ein unbegrenztes Netzwerk; „Nach Updates suchen“ funktioniert von Hand weiterhin.

Datenlimits und App-Kontingente

Jedes Netzwerk hat sein eigenes Limit. Standardmäßig zählt es, bis du es zurücksetzt. Lass es täglich neu beginnen, wöchentlich an einem Wochentag deiner Wahl oder monatlich an dem Tag, an dem sich dein Tarif erneuert; ein Tarif, der sich am 31. erneuert, beginnt in kürzeren Monaten am letzten Tag. Ein Limit mit Zyklus zählt den Nutzungsverlauf dieses Netzwerks und läuft daher nach einem Neustart weiter. Kilobat benachrichtigt einmal pro Zyklus, standardmäßig bei 80 % und 100 %, und bei 50 %, wenn du das hinzufügst.

Eine App kann ein eigenes Kontingent haben: eine Grenze pro Zyklus für alles, was sie überträgt, oder nur für ihre Uploads, in einem Netzwerk oder in allen. Lege es im Bandbreitenbereich der App fest oder mit kilobat quota com.getdropbox.dropbox 2 --upload. Bei aktiver Filterung stoppt ein aufgebrauchtes Limit neue Verbindungen, und ein aufgebrauchtes Kontingent stoppt die neuen Verbindungen dieser App. Eine temporäre Erlaubnis oder eine Verbindungsregel kommt trotzdem durch. Kilobat misst den Datenverkehr jede Sekunde, daher sind Limits und Kontingente ungefähr: Eine App kann etwas darüber hinausgehen, bevor sie gestoppt wird.

Was zählt: Internet, lokales Netzwerk und VPNs

Limits, Kontingente und der Datenverbrauch zählen nur Internet-Datenverkehr. Datenverkehr in deinem lokalen Netzwerk (Drucker, NAS, andere Computer, die Admin-Seite eines Routers), über AirDrop und andere Verbindungen zu Geräten in der Nähe (AWDL) wird getrennt gezeigt, als „Lokales Netzwerk: 2,1 GB, nicht gezählt“, wenn du den Zeiger über den Verbrauchswert der Limit-Karte bewegst, und im Bandbreitenbereich jeder App. Die Gesamtmenge des Mac stammt aus den WLAN- und Ethernet-Zählern und enthält daher, was keiner App zugeordnet ist: Paket-Header und Bestätigungen, die in den Byte-Zählungen der Apps fehlen (meist 5–10 % mehr), einen Prozess, der zwischen zwei Messungen gestartet und beendet wurde, die Internetfreigabe oder ein VPN, das macOS selbst betreibt. Derselbe Tooltip zeigt diesen Teil als „Keiner App zugeordnet“; er wird nie einer App zugerechnet.

Mit einem VPN läuft der Datenverkehr einer App durch den Tunnel, und das VPN trägt ihn über WLAN oder Ethernet hinaus. Kilobat zählt ihn einmal, dort, wo er den Mac verlässt, wie es auch dein Anbieter tut, und kennzeichnet den Anteil der App mit „Über ein VPN“. Mit einem Proxy (einem System-Proxy, HTTPS_PROXY oder einer lokalen Proxy-App) sprechen Apps mit dem Proxy auf diesem Mac, und der Proxy baut die Internetverbindungen auf, daher erscheinen die Bytes beim Proxy; Kilobat kann nicht sagen, welche App dahinterstand. Ein Proxy im TUN-Modus ist für Kilobat ein VPN: Die eigene Verbindung jeder App wird mit „Über ein VPN“ gekennzeichnet, und der ausgehende Verkehr des Proxys erscheint beim Proxy. Ein Firmen-Proxy unter einer privaten Adresse zählt als lokales Netzwerk.

Systemdownloads

Apps übergeben manche Downloads an macOS: nsurlsessiond (Hintergrundübertragungen für Apps wie Musik und Podcasts), mobileassetd (Modelle für Apple Intelligence und Siri, Stimmen, Schriften), softwareupdated, appstored und appstoreagent, cloudd und bird (iCloud), fileproviderd und Inhaltscaching. Die App-Liste fasst sie als Systemdownloads zusammen, jeweils mit ihrer Aufgabe. Bei aktiver Filterung sieht der Filter, für welche App jede Verbindung war, daher steht in der Liste „Für Musik“, und eine Blockierung lautet „com.apple.Music via nsurlsessiond“. Ohne Filterung sieht nettop nur den Dienst, daher kann Kilobat nicht sagen, für welche App ein Download war.

Ein Prozess, der weder eine App noch Teil von macOS ist, etwa node, python, deno, bun oder ein Go-Programm in deinem Benutzerordner oder in Homebrew, zeigt seinen Programmpfad, wenn du seine Zeile aufklappst, sodass ein unbekannter Agent oder ein unbekanntes Tool auffällt.

Schalte Ungewöhnliche Uploads in den Einstellungen ein, um zu erfahren, wenn eine App in einer Stunde das Fünffache ihres Üblichen hochlädt, mindestens 50 MB, höchstens einmal pro Tag und App. Es benachrichtigt nur. Temporäre Regeln und ablaufende Verbindungsregeln stehen unter „Profile“ mit der verbleibenden Zeit, sodass du eine früher beenden kannst.

Domains und IPs blockieren

Klicke mit der rechten Maustaste auf eine offene Verbindung einer App, um diesen Host für die App oder für alle Apps zu blockieren. Die Blockliste nimmt Domains (inklusive Subdomains; *.example.com funktioniert auch), IP-Adressen und CIDR-Bereiche an, zusätzlich zu einer importierten Hosts-Liste. Im Terminal: kilobat block-host ads.example.com.

Pro schenken, Pro bekommen

Jede Pro-Lizenz hat ihren eigenen Empfehlungslink, kilobat.app/r/ plus ein kurzer Code. Du findest ihn in den Einstellungen unter Kilobat Pro oder unter einer Karte zum Teilen, mit „Link kopieren“ und „Teilen“. Es gibt kein Konto: Der Code stammt aus deiner Lizenz und verrät deinen Schlüssel nicht.

Ein Freund, der deinen Link und dann Kilobat öffnet, bekommt eine 30-tägige Pro-Testphase statt 7 Tagen. Jeder Mac kann einen Empfehlungslink einmal nutzen. Kauft er Pro, in der App oder auf der Website, nachdem er deinem Link gefolgt ist, bekommt deine Lizenz einen Mac mehr. Jeder dritte Freund bringt dir eine kostenlose Pro-Lizenz: einen Einmalcode in den Einstellungen, den du an der Kasse für dich oder für jemand anderen eingibst.

Ein Kauf zählt, sobald die 14-tägige Rückerstattungsfrist vorbei ist; bis dahin zeigen die Einstellungen ihn als ausstehend. Erstattete Käufe, kostenlose Lizenzen und Käufe über deinen eigenen Link zählen nicht.

Datenschutz

Datenverkehrsverlauf, Netzwerknamen und Regeln bleiben auf deinem Mac. Es gibt kein Konto und keine Telemetrie. Diagnosen kontaktieren Testdienste, und Lizenzaktivierung und Update-Prüfungen kontaktieren ihre Dienste. Lies den Datenschutzhinweis.