About Kilobat
Kilobat is a macOS network-diagnostics CLI for developers and AI agents. It investigates app traffic, Wi-Fi, DNS and failed connections, and can keep a Mac awake during long jobs; an optional Mac app adds history and network controls.
Key features
- 01Inspect traffic by app
- 02Diagnose Wi-Fi, DNS and connections
- 03Trace API connectivity problems
- 04Check routes, latency and network conditions
- 05Keep Mac awake for commands
- 06Structured JSON diagnostic output
Use cases
- 01Find which apps use the network
- 02Investigate a failing API request
- 03Check Wi-Fi conditions before a build
- 04Prevent sleep during long-running jobs
MCP support
The `kilobat mcp` command runs a local stdio MCP server that exposes network diagnostics and other tools to connected clients. Some tools depend on the companion app, its permissions, license tier or configuration.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEKilobat CLI
Network diagnostics for macOS, in your terminal and your AI agent. Find which apps use your connection, diagnose Wi-Fi and DNS problems, trace a failing API request, and keep your Mac awake through a long build.
Free and open source under GPL-3.0-only. No account or telemetry. The CLI runs on its own; the optional Kilobat Mac app adds a menu-bar interface, recorded history, and network filtering.
Quick start · Mac app · AI agents · Build from source · Tool reference
Quick start
Requires macOS 14 or later. Homebrew builds from source and requires Xcode 16 or newer.
brew install seifip/kilobat/kilobat
kilobat diagnose
Homebrew also installs kb as a short alias for kilobat.
| Find out… | Command |
|---|---|
| Which apps are using the connection | kilobat status --watch |
| Why a host or API won't connect | kilobat why api.github.com |
| How strong the Wi-Fi signal is | kilobat wifi |
| Which Wi-Fi channels are less crowded | kilobat channels |
| Whether traffic leaves through a VPN | kilobat ip |
| Whether this connection suits a long job | kilobat conditions |
Keep your Mac awake until a command finishes:
kilobat awake -- make test
Use --json for structured diagnostic output, or --watch --json for a live traffic stream:
kilobat diagnose --json
kilobat why api.github.com --json
kilobat status --watch --json
Run kilobat --help or kilobat <command> --help for more options. Commands that change system settings may require confirmation and administrator authorization. Network checks contact test endpoints; speed tests transfer data.
Kilobat for Mac
Prefer a view you can glance at? Kilobat puts live traffic in your menu bar and brings diagnostics, usage history, Wi-Fi tools, and app-level network controls into a native Mac app.
The app is a separate product with free and paid features, under its own terms. You don't need it for standalone CLI diagnostics or MCP setup.
| Capability | What it needs |
|---|---|
| Live traffic, connection diagnostics, Wi-Fi signal and channels | CLI alone |
| Wi-Fi network names | Running app with macOS Location permission; otherwise names appear hidden |
| Recorded history and per-network budgets | Data recorded or supplied by the app |
| Enforcing app and destination blocking | App with its signed Network Extension activated and approved in macOS |
Some app-backed features also depend on the app's license tier and configuration. Saving a rule through the CLI does not by itself enable filtering.
Use with AI agents (MCP)
kilobat mcp runs a local stdio Model Context Protocol server. Install the CLI first, then connect your agent:
Claude Code
claude mcp add kilobat -- kilobat mcp
Codex CLI
codex mcp add kilobat -- kilobat mcp
Claude Desktop: configure a local stdio server with the full executable path returned by /usr/bin/which kilobat and argument mcp. See the local-server setup guide.
Cursor, Windsurf, Zed, Gemini CLI, Cline, and other MCP clients: add a stdio server with command kilobat and argument mcp.
Try asking:
- “Why is my internet slow?”
- “Is this a metered connection before I download 5 GB?”
- “Why can't this API connect from my Mac?”
- “Keep the Mac awake until this build finishes.”
Tools that change settings carry confirmation requirements in their descriptions; the client controls permission prompts. Connected clients discover available tools, input schemas, and annotations with tools/list.
See the agent setup guides for client-specific instructions. Optional agent skills teach agents when and how to use Kilobat:
npx skills add seifip/kilobat-skills
Build from source
Requires macOS 14 or later and Swift 6.
git clone https://github.com/seifip/kilobat-cli.git
cd kilobat-cli
swift build -c release
.build/release/kilobat --help
Run the tests with swift test.
MCP tool reference
The following names and titles are defined in v0.45.1. Use your installed server's tools/list for its full descriptions, input schemas, and annotations. Availability and returned data can depend on the companion app, its license tier, permissions, and configuration.
Browse the MCP tools
| Tool | Purpose |
|---|---|
get_status | Live traffic snapshot |
diagnose_network | Diagnose connection |
scan_wifi | Nearby Wi-Fi networks |
run_speedtest | Speed and bufferbloat test |
get_usage_report | Usage history |
compare_usage | Compare with a router or provider |
list_rules | Profile rules |
set_profile | Set profile |
set_app_rule | Allow or block an app |
set_dns | Set DNS servers |
get_fastest_dns | Fastest DNS for this network |
set_fastest_dns | Switch to the fastest DNS automatically |
set_dns_fallback | Set the fallback DNS |
get_wifi | Wi-Fi connection |
get_wifi_nodes | Wi-Fi mesh nodes |
reconnect_wifi | Move to the closer Wi-Fi node |
suggest_wifi_channel | Least crowded channel |
get_network_history | Network history |
benchmark_dns | Compare DNS resolvers |
check_url | Time one website |
list_connections | Open connections by process |
list_devices | Devices on the local network |
trace_route | Trace the route to a host |
get_route_history | Route to a host over time |
compare_speed_tests | Why two speed tests differ |
get_plan_check | Speed against the plan |
get_router_checkup | Router check-up |
get_weekly_digest | Weekly digest |
get_outage_credit | Outage credit from the provider |
get_service_speed | Real speed to GitHub, iCloud, Steam and more |
get_hotspot_throttling | Is the carrier capping the phone hotspot? |
get_exit_path | Where traffic leaves: VPN and public IP |
run_lan_test | Throughput to a device on the network |
list_networks | Known networks |
get_conditions | Conditions for a long run |
get_updaters | Updaters paused on metered networks |
get_uploads | Big uploads and held ones |
diagnose_connection | Why something can't connect |
list_sessions | Awake sessions and agent runs |
agent_network_log | Agent network log |
create_support_report | Report for an ISP or IT desk |
get_proxy_status | Proxy apps and routes |
test_proxy_nodes | Test proxy nodes |
check_vpn | VPN leak and conflict check |
check_vpn_leaks | VPN leak test |
get_call_reports | Call quality reports |
get_remote_session_reports | SSH and remote desktop session reports |
get_stream_reports | OBS stream reports |
check_stream_readiness | Check before going live |
get_cloud_gaming | Cloud gaming sessions |
get_household | Paired Macs on the home network |
get_home_usage | Every device's usage at home |
check_smart_home | Matter, Thread and HomeKit check |
service_status | Is it them or me? |
explain_connection | What is this process or host? |
get_captive_portal | Wi-Fi sign-in page (captive portal) |
get_starlink_status | Starlink dish status |
keep_awake | Keep the Mac awake |
release_awake | Let the Mac sleep again |
set_budget | Set the data budget |
get_data_pack | Data packs and when they run out |
set_data_pack | Add, correct or end a data pack |
set_network_cost | Set a network's data cost |
set_updater_pause | Pause updaters on metered networks |
set_kill_switch | VPN kill switch |
hold_upload | Send an upload later |
set_app_quota | Set an app's data quota |
get_app_bandwidth | One app's bandwidth over time |
get_access_policy | Connections an app declares |
set_new_app_mode | How new apps are treated |
list_approvals | Apps waiting for approval |
decide_approval | Allow or block a waiting app |
block_destination | Block a domain or IP |
list_blocked_connections | Recently blocked connections |
explain_verdict | Why Kilobat allows or blocks a connection |
clear_history | Clear history or forget a site |
check_host_reputation | Is a host known to be malicious? |
get_protection_status | Protection status |
set_protection | Change Protection |
run_stutter_test | Find latency spikes |
get_game_ping | Ping game data centers |
get_nearby_radios | AirDrop and Bluetooth |
get_bluetooth_audio | Bluetooth audio: why headphones crackle |
check_local_network | Can I cast or print here? |
set_airdrop_visibility | Change AirDrop visibility |
License
Kilobat CLI code is licensed under the GNU General Public License version 3.0 only; see LICENSE. Bundled geolocation and device-manufacturer data have additional licenses documented in THIRD_PARTY_NOTICES.md. Kilobat's name and artwork are not licensed for use as trademarks. The separate Kilobat desktop app is distributed under its own terms.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.
