# Kilobat: the full documentation > Kilobat is a Mac menu-bar network app (macOS 14 or later) with a free, open-source CLI (`kilobat`, alias `kb`, GPL-3.0) and an MCP server (`kilobat mcp`). It shows which apps use the connection, blocks background apps on hotspots and capped plans, finds out why the internet is slow and keeps the Mac awake while agents work. This file joins the docs, the setup page for each AI agent and every guide and recipe on https://kilobat.app. The build writes it from the same pages as the site, so the two match. A shorter overview is at https://kilobat.app/llms.txt. Every page also has a Markdown copy at its own address with `.md` in place of `.html`; the homepage's is https://kilobat.app/index.md. ## Install - CLI: `brew install seifip/kilobat/kilobat` installs `kilobat` and its short alias `kb`. Source: https://github.com/seifip/kilobat-cli - Mac app: https://kilobat.app/#pricing. The app also includes the CLI at `Kilobat.app/Contents/Helpers/kilobat`. - Agent skills: `npx skills add seifip/kilobat-skills` (https://github.com/seifip/kilobat-skills). ## MCP setup `kilobat mcp` is a local stdio server. It needs no API key and opens no network port. - Claude Code: `claude mcp add --scope user kilobat -- kilobat mcp` - Codex CLI: `codex mcp add kilobat -- kilobat mcp` - Gemini CLI: `gemini mcp add -s user kilobat kilobat mcp` - Clients with an `mcpServers` file (Cursor, Claude Desktop, Windsurf, Cline): `{ "mcpServers": { "kilobat": { "command": "kilobat", "args": ["mcp"] } } }`. An app opened from the Dock may not see Homebrew's PATH; then use the full path that `command -v kilobat` prints. - Setup for each agent: https://kilobat.app/agents/index.html Read-only tools run freely. Tools that change settings are annotated as destructive, and their descriptions tell the agent to ask the user first. ## Contents - https://kilobat.app/docs.html - https://kilobat.app/agents/index.html - https://kilobat.app/agents/claude-code.html - https://kilobat.app/agents/claude-desktop.html - https://kilobat.app/agents/cline.html - https://kilobat.app/agents/codex.html - https://kilobat.app/agents/cursor.html - https://kilobat.app/agents/gemini-cli.html - https://kilobat.app/agents/mcp-client.html - https://kilobat.app/agents/windsurf.html - https://kilobat.app/agents/zed.html - https://kilobat.app/guides/recipes/agent-lid-closed.html - https://kilobat.app/guides/recipes/approve-new-apps.html - https://kilobat.app/guides/recipes/block-app-on-metered.html - https://kilobat.app/guides/recipes/check-network-before-download.html - https://kilobat.app/guides/recipes/check-vpn-and-public-ip.html - https://kilobat.app/guides/recipes/compare-carrier-usage.html - https://kilobat.app/guides/recipes/compare-speed-tests.html - https://kilobat.app/guides/recipes/connect-agent-hooks.html - https://kilobat.app/guides/recipes/find-better-wifi-spot.html - https://kilobat.app/guides/recipes/hotspot-data-by-app.html - https://kilobat.app/guides/recipes/keep-mac-awake-download.html - https://kilobat.app/guides/recipes/monthly-data-budget.html - https://kilobat.app/guides/recipes/pick-faster-dns.html - https://kilobat.app/guides/recipes/see-where-apps-connect.html - https://kilobat.app/guides/recipes/share-wifi-qr-code.html - https://kilobat.app/guides/recipes/stop-updates-on-hotspot.html - https://kilobat.app/guides/recipes/test-call-stutter.html - https://kilobat.app/guides/recipes/why-cant-it-connect.html - https://kilobat.app/guides/airplay-receiver-port-5000.html - https://kilobat.app/guides/awdl-airdrop-latency-spikes.html - https://kilobat.app/guides/bluetooth-wifi-interference.html - https://kilobat.app/guides/bufferbloat-mac.html - https://kilobat.app/guides/caffeinate-keep-mac-awake.html - https://kilobat.app/guides/captive-portal-not-appearing.html - https://kilobat.app/guides/clamshell-lid-closed-mac.html - https://kilobat.app/guides/connection-not-private-mac.html - https://kilobat.app/guides/content-filter-blocking.html - https://kilobat.app/guides/corporate-proxy-certificates.html - https://kilobat.app/guides/curl-could-not-resolve-host.html - https://kilobat.app/guides/dns-probe-finished-nxdomain.html - https://kilobat.app/guides/dns-server-not-found.html - https://kilobat.app/guides/docker-container-from-mac.html - https://kilobat.app/guides/encrypted-dns-mac.html - https://kilobat.app/guides/err-cert-date-invalid.html - https://kilobat.app/guides/err-connection-timed-out.html - https://kilobat.app/guides/err-internet-disconnected.html - https://kilobat.app/guides/err-name-not-resolved.html - https://kilobat.app/guides/err-network-changed.html - https://kilobat.app/guides/ethernet-adapter-not-detected.html - https://kilobat.app/guides/ethernet-slow-link-speed.html - https://kilobat.app/guides/find-devices-on-network.html - https://kilobat.app/guides/find-saved-wifi-password.html - https://kilobat.app/guides/flush-dns-cache-mac.html - https://kilobat.app/guides/git-could-not-resolve-host-github.html - https://kilobat.app/guides/homebrew-curl-28-timed-out.html - https://kilobat.app/guides/homebrew-npm-download-fails.html - https://kilobat.app/guides/hosts-file-not-working.html - https://kilobat.app/guides/hotspot-background-data.html - https://kilobat.app/guides/icloud-private-relay-sites.html - https://kilobat.app/guides/instant-hotspot-not-showing.html - https://kilobat.app/guides/internet-connection-appears-offline.html - https://kilobat.app/guides/internet-sharing-mac.html - https://kilobat.app/guides/ip-address-conflict-mac.html - https://kilobat.app/guides/ipv6-problems-mac.html - https://kilobat.app/guides/limit-ip-address-tracking.html - https://kilobat.app/guides/local-network-permission.html - https://kilobat.app/guides/localhost-from-container.html - https://kilobat.app/guides/low-data-mode-mac.html - https://kilobat.app/guides/mac-joins-wrong-wifi.html - https://kilobat.app/guides/mac-sleep-stops-downloads.html - https://kilobat.app/guides/macos-firewall-incoming.html - https://kilobat.app/guides/metered-network-mac.html - https://kilobat.app/guides/mtu-problems-mac.html - https://kilobat.app/guides/network-connection-was-lost.html - https://kilobat.app/guides/network-extension-conflicts.html - https://kilobat.app/guides/network-service-order.html - https://kilobat.app/guides/network-settings-terminal.html - https://kilobat.app/guides/networkquality-speed-test.html - https://kilobat.app/guides/npm-econnreset.html - https://kilobat.app/guides/npm-etimedout.html - https://kilobat.app/guides/packet-loss-mac.html - https://kilobat.app/guides/port-already-in-use.html - https://kilobat.app/guides/private-wifi-address.html - https://kilobat.app/guides/proxy-settings-breaking-apps.html - https://kilobat.app/guides/renew-dhcp-lease-mac.html - https://kilobat.app/guides/request-timed-out.html - https://kilobat.app/guides/safari-cant-connect-proxy-server.html - https://kilobat.app/guides/safari-cant-connect-to-server.html - https://kilobat.app/guides/safari-cant-establish-secure-connection.html - https://kilobat.app/guides/safari-cant-find-server.html - https://kilobat.app/guides/safari-not-connected-to-internet.html - https://kilobat.app/guides/self-assigned-ip-address.html - https://kilobat.app/guides/server-hostname-not-found.html - https://kilobat.app/guides/site-works-on-phone-not-mac.html - https://kilobat.app/guides/slow-dns-mac.html - https://kilobat.app/guides/slow-internet-mac-cause.html - https://kilobat.app/guides/slow-wifi-mac-fast-phone.html - https://kilobat.app/guides/software-update-on-hotspot.html - https://kilobat.app/guides/ssh-git-timeouts.html - https://kilobat.app/guides/ssh-port-22-operation-timed-out.html - https://kilobat.app/guides/tailscale-vpn-routing-conflicts.html - https://kilobat.app/guides/traceroute-mac.html - https://kilobat.app/guides/usb-tethering-iphone-mac.html - https://kilobat.app/guides/video-call-stutter-mac.html - https://kilobat.app/guides/vpn-connected-no-internet.html - https://kilobat.app/guides/vpn-dns-leak-mac.html - https://kilobat.app/guides/vpn-split-dns-internal-names.html - https://kilobat.app/guides/wake-for-network-access.html - https://kilobat.app/guides/weak-wifi-signal-mac.html - https://kilobat.app/guides/what-is-appstoreagent.html - https://kilobat.app/guides/what-is-apsd.html - https://kilobat.app/guides/what-is-assetcache.html - https://kilobat.app/guides/what-is-assistantd.html - https://kilobat.app/guides/what-is-bird.html - https://kilobat.app/guides/what-is-cloudd.html - https://kilobat.app/guides/what-is-cloudphotod.html - https://kilobat.app/guides/what-is-configd.html - https://kilobat.app/guides/what-is-fileproviderd.html - https://kilobat.app/guides/what-is-findmydeviced.html - https://kilobat.app/guides/what-is-googleupdater.html - https://kilobat.app/guides/what-is-identityservicesd.html - https://kilobat.app/guides/what-is-locationd.html - https://kilobat.app/guides/what-is-mdnsresponder.html - https://kilobat.app/guides/what-is-microsoft-autoupdate.html - https://kilobat.app/guides/what-is-mobileassetd.html - https://kilobat.app/guides/what-is-netbiosd.html - https://kilobat.app/guides/what-is-nsurlsessiond.html - https://kilobat.app/guides/what-is-parsecd.html - https://kilobat.app/guides/what-is-privatecloudcomputed.html - https://kilobat.app/guides/what-is-rapportd.html - https://kilobat.app/guides/what-is-remotepairingd.html - https://kilobat.app/guides/what-is-reportcrash.html - https://kilobat.app/guides/what-is-sharingd.html - https://kilobat.app/guides/what-is-shipit.html - https://kilobat.app/guides/what-is-softwareupdated.html - https://kilobat.app/guides/what-is-sparkle-autoupdate.html - https://kilobat.app/guides/what-is-symptomsd.html - https://kilobat.app/guides/what-is-syspolicyd.html - https://kilobat.app/guides/what-is-timed.html - https://kilobat.app/guides/what-is-trustd.html - https://kilobat.app/guides/which-app-uses-bandwidth.html - https://kilobat.app/guides/wifi-bands-2-4-5-6-ghz.html - https://kilobat.app/guides/wifi-channel-congestion.html - https://kilobat.app/guides/wifi-connected-no-internet.html - https://kilobat.app/guides/wifi-disconnects-after-sleep.html - https://kilobat.app/guides/wifi-no-hardware-installed.html - https://kilobat.app/guides/wifi-no-internet-connection.html - https://kilobat.app/guides/wifi-weak-security-warning.html - https://kilobat.app/guides/wireless-diagnostics-mac.html --- Source: https://kilobat.app/docs.html ## Kilobat docs Everything you need to run Kilobat from the menu bar, the terminal, or an AI agent. ### Install The CLI is free and open source. Install it with Homebrew: ``` brew install seifip/kilobat/kilobat ``` This installs `kilobat` and `kb`, a short alias. Every example below works with either. Or download the Mac app, which also includes the CLI at `Kilobat.app/Contents/Helpers/kilobat`. [Download for Mac ↓](https://kilobat.app/downloads/Kilobat-1.3.4.dmg) [Download the free CLI ↓](https://kilobat.app/downloads/kilobat-cli-1.3.4-universal.tar.gz) Turn on tab completion for your shell: ``` # zsh echo 'source <(kilobat completion zsh)' >> ~/.zshrc # fish kilobat completion fish > ~/.config/fish/completions/kilobat.fish ``` ### Quick start Run `kilobat` on its own for an interactive menu: arrow keys or j/k to move, Enter to open, a number to jump, q to quit. ``` 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 ``` Run `kilobat --help` for help with any command. ### Commands #### Monitor | | | |---|---| | `kilobat status [--watch] [--json]` | Live per-app traffic and session budget; a JSON snapshot, or a JSON-lines stream with --watch | | `kilobat report [--csv\|--json] [--summary] [--days 1…365]` | Locally recorded usage history, or daily totals and top apps; CSV has one row per app | | `kilobat report compare --total 40GB [--unit GB\|GiB] [--direction both\|download\|upload] (--from DATE --to DATE \| --period last-month) [--network NAME] [--json\|--csv]` | A router's or provider's figure beside what Kilobat recorded on this Mac for the same period, in the same unit, with the hours recorded, every gap and likely reasons for a difference | | `kilobat health-history [--hours 1…720] [--json]` | Router, internet, jitter and DNS checks the app recorded over time | | `kilobat networks [forget ]` | Networks seen, with the profile, budget and data cost remembered for each | | `kilobat networks cost [name]` | Treat this network, or a named one, as metered or unmetered, or follow macOS again | | `kilobat bandwidth [app] [hour\|day\|week\|month] [--back N] [--json]` | One app's sent and received bytes over an hour, day, week or month, with the peak; --back steps to earlier periods | | `kilobat access-policy [--json]` | The connections an app's developer declares in its Internet Access Policy, and why | #### Diagnose | | | |---|---| | `kilobat diagnose [--json]` | Wi-Fi, router, internet, DNS and captive-portal checks with advice | | `kilobat radar [--watch] [--json]` | Signal score and best-spot finder | | `kilobat scan [--json]` | Nearby networks, channels and widths | | `kilobat channels [--json]` | Congestion per channel and the least crowded one | | `kilobat speedtest [--json] [--budget-mb 1…80] [--parallel]` | Cloudflare speed, loaded latency and call and streaming verdicts, 80 MB at most. One connection by default; --parallel opens four, as most speed-test sites do | | `kilobat speed-compare [ ] [--json]` | What differed between two saved speed tests: network, time, server, connections, Wi-Fi band and signal, VPN, other traffic | | `kilobat ip [--public] [--json]` | Where traffic leaves: the interface and any VPN, read on this Mac; --public also asks Cloudflare for your public IP and its registry country | | `kilobat stutter [--seconds 10…60] [--target router\|internet\|] [--json]` | Ping every 50 ms to find the short latency spikes speed tests miss, when they happen and whether they repeat | | `kilobat airdrop [status\|everyone\|contacts\|off] [--json]` | AirDrop visibility, the AirDrop link (AWDL) and what uses it; changing visibility opens System Settings | | `kilobat bluetooth [--json]` | Bluetooth devices and whether they share 2.4 GHz with your Wi-Fi | | `kilobat dns [automatic\|cloudflare\|google\|quad9\|flush]` | Read or set DNS, or flush the cache | #### Wi-Fi | | | |---|---| | `kilobat wifi [status]` | Current network, signal, channel and link rate | | `kilobat wifi on\|off\|restart\|disconnect` | Control Wi-Fi power and the connection | | `kilobat wifi join [--password-stdin]` | Join a saved network, or a new one | | `kilobat wifi known` | Saved networks in order of preference | | `kilobat wifi password\|share ` | Show a saved password, or a QR code to scan with a phone | | `kilobat low-latency on [--for 15m\|1h\|2h] [--until-quit ]` | Pause AirDrop and AWDL during calls and games: 15 minutes by default, up to 4 hours, or until an app quits | | `kilobat low-latency off` | Restore AirDrop and AWDL, also for a pause started in the app | #### Awake & agents | | | |---|---| | `kilobat awake [--display]` | Keep the Mac awake until Ctrl-C; closing the lid still sleeps it unless you add --lid-closed | | `kilobat awake --lid-closed [--for 2h\|--until-quiet\|-- ]` | Keep running with the lid closed too, 8 hours at most, through the app’s power helper; needs Allow running with the lid closed in Settings | | `kilobat awake --for 90m\|2h\|45s` | Stay awake for a while | | `kilobat awake --until-quiet [--app ] [--quiet 1…60]` | Stay awake until downloads or one app go quiet, below 16 KB/s for 3 minutes by default | | `kilobat awake -- [args]` | Stay awake while a command runs, then report the data its processes moved and exit with its status | | `kilobat awake --while-frontmost [--display] [--for 2h]` | Stay awake only while that app is in front, for reading or presenting. Switching away lets the Mac sleep; it ends when the app quits, at 20% battery or after --for. --display keeps the screen on too | | `kilobat settings awake-on-power on\|off` | The app stays awake whenever the power adapter is in and lets the Mac sleep again when it comes out | | `kilobat settings keep-screen-on on\|off` | Keep the screen on too for everything the app keeps awake: timers, downloads, agents, the app in front and plugged in | | `kilobat sessions [--days N] [--json]` | Awake sessions and AI agent runs the app recorded, with data used and network changes | | `kilobat agent-event [--agent name] [--stdin-json\|--json-arg]` | For an agent's hooks: tells the app a run started, waits for you or is done. Silent, always exits 0 | | `kilobat why [--app ] [--proxy ] [--context container\|vm\|remote\|provider] [--failed-at