Agent setup
Set up Kilobat in OpenCode
OpenCode can inspect your Mac’s traffic, explain failed connections and keep long tasks awake with Kilobat.
Install the CLI
The Kilobat CLI is free and open source, and it includes the MCP server. Install it with Homebrew:
brew install seifip/kilobat/kilobatCheck it with kilobat --version. kilobat doctor says whether the Kilobat app is running, its network filter is on and Pro is active; the tools work without the app, which adds Wi-Fi names, history and rule enforcement. The CLI needs macOS 14 or later.
Connect the MCP server
Run the agent backend and Kilobat on the Mac you want to check. A cloud runner, Linux server or container cannot use this local command to inspect your Mac.
Merge this into your project’s
opencode.json, or your global~/.config/opencode/opencode.json.{ "mcp": { "kilobat": { "type": "local", "command": ["kilobat", "mcp"], "enabled": true } }, "permission": { "kilobat_*": "ask" } }Check the configured server, then start a fresh OpenCode session.
opencode mcp list
The example follows the current stable OpenCode docs. OpenCode v2 uses mcp.servers and disabled instead; use its versioned documentation if that is the version you run.
Add the skills
Nine Agent Skills teach the agent to read Kilobat's measurements and to ask before changing settings. Install them for all your projects with skills.sh:
npx skills add seifip/kilobat-skills -g -a opencode
This puts them in ~/.config/opencode/skills/. Leave out -g to install them for the current project only, or leave out both flags to pick agents from a list.
The kilobat skill is the entry point: it holds the setup and safety rules and sends the agent to the skill that fits, such as mac-network-troubleshooting or mac-agent-runs. See all nine skills.
Try these prompts
Ask in plain words. The agent picks the tools; these are the ones each request usually needs.
| Ask | MCP tools |
|---|---|
| The internet feels slow. Find out why and tell me what to fix first. | diagnose_network, get_status |
| npm install hangs on registry.npmjs.org. Find the layer that fails. | diagnose_connection |
| Keep the Mac awake for the next two hours while you run the full test suite, then release it. | keep_awake, release_awake |
| Something is uploading a lot. Which app is it, and how much has it sent in the last hour? | get_status, get_app_bandwidth |
| Pages are slow to start loading. Compare DNS resolvers and tell me if switching would help. Don't change anything yet. | benchmark_dns, diagnose_network |
What OpenCode can and can't change
Kilobat's MCP server marks every tool as read-only or as a change, and each change tool's description tells the agent to get your confirmation first. The kilobat skill holds the same rule: read freely, ask before changing.
Read-only measurements
- Measure Wi-Fi, router, internet and DNS latency, and per-app traffic:
diagnose_network,get_status,get_wifi,scan_wifi. - Find the layer that stops one host, trace a route and compare resolvers:
diagnose_connection,trace_route,benchmark_dns. - Read history, sessions, rules and approvals:
get_usage_report,list_sessions,list_rules,list_approvals. - Check every host it and the commands it ran contacted, with bytes and flags:
agent_network_log. - Ping for latency spikes with
run_stutter_test, which sends pings only.
Asks you first
- A speed test, which uses up to 80 MB (
run_speedtest; on a metered network, 10 MB or less), and a five-second LAN test (run_lan_test). - Looking up your public IP with Cloudflare (
get_exit_pathwithpublic_ip). - Profiles, app rules, blocked hosts, the new-app mode, budgets, quotas, a network's data cost and pausing updaters (
set_profile,set_app_rule,block_destination,set_new_app_mode,set_budget,set_app_quota,set_network_cost,set_updater_pause). - Holding another app's upload, such as Dropbox, until a better network (
hold_upload). - DNS, which macOS also guards with an administrator password prompt (
set_dns). - Keeping the Mac running with the lid closed, every time (
keep_awakewithlid_closed). A plainkeep_awakechanges no settings and ends when it expires.
Can't do
- Let a waiting app connect on its own:
decide_approvalcan block at once, but allowing opens Kilobat's approval window for you to confirm. - Change AirDrop visibility:
set_airdrop_visibilityopens System Settings for you. - Change sleep settings, another app's settings, or anything outside Kilobat. It never reads prompts or replies.
- Enforce rules without the Kilobat app and its network filter (Pro). Without them, rules are saved, not applied, and the agent should say so.
The example asks before every Kilobat tool. Keep confirmation for changes when narrowing that policy; MCP annotations alone are not a permission rule.
If the agent can also run shell commands, the kilobat CLI can do what the MCP tools do. The skills tell it which commands to run freely and which to ask about.
Track agent runs
Kilobat recognizes OpenCode’s process for traffic and CPU-based activity. A quiet process may be waiting or done. There is no ready-made OpenCode hook adapter in Kilobat; custom integrations can use kilobat agent-event. See Connect agents.
Sources
- OpenCode: MCP servers
- OpenCode: permissions
- OpenCode v2: MCP servers
- Kilobat docs: AI agents and MCP
- skills.sh: supported agents and their skill folders
Checked on 1 November 2026. Agents change their settings often; if a step no longer matches, tell us at the support address.