Agentes de IA e MCP
O servidor MCP, os hooks de agentes, o registro de rede dos agentes, as skills para agentes e como manter o Mac acordado.
A configuração passo a passo para Claude Code, Codex, Cursor, Gemini CLI, Claude Desktop, Windsurf, Cline, Zed, Hermes Agent, OpenClaw, OpenCode, GitHub Copilot CLI e qualquer cliente MCP está em Configurar o Kilobat no seu agente de IA.
Dê este prompt a um agente como 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.Servidor MCP
kilobat mcp fala o Model Context Protocol por stdio. Adicione-o ao Claude Code:
claude mcp add kilobat -- kilobat mcp
Ou adicione-o a qualquer cliente que leia uma configuração mcpServers:
{ "mcpServers": { "kilobat": { "command": "kilobat", "args": ["mcp"] } } }
Ferramentas somente de leitura: get_status, diagnose_network, diagnose_connection, get_conditions, get_updaters, get_uploads, get_data_pack, get_wifi, scan_wifi, suggest_wifi_channel, get_usage_report, compare_usage, get_app_bandwidth, get_access_policy, get_network_history, list_sessions, agent_network_log (todos os hosts contatados por um agente e seus comandos), benchmark_dns, check_url, list_connections, list_devices, trace_route, get_route_history, compare_speed_tests, get_exit_path (consulta a Cloudflare para obter seu IP público somente quando o agente passa public_ip), check_vpn_leaks (o teste de vazamento, que consulta serviços externos), list_networks, get_fastest_dns (o DNS mais rápido por rede, com base nas medições discretas do app), list_rules, list_approvals, list_blocked_connections, explain_verdict (todas as regras que correspondem a um host ou app e a que determina o resultado), check_host_reputation (se um host está em uma lista de malware, phishing, golpe ou rastreador, verificado neste Mac), get_protection_status, run_stutter_test e get_game_ping (apenas enviam pings), get_nearby_radios, get_captive_portal (uma página de login de Wi-Fi, igual a kilobat portal --json), service_status (consulta as páginas públicas de status dos serviços nomeados ou dos apps em execução) e create_support_report (o relatório para sua operadora, que o agente entrega a você). Elas retornam o mesmo JSON que a CLI. run_speedtest usa dados, run_lan_test transfere dados na sua própria rede por cinco segundos e pede autorização antes, e keep_awake e release_awake impedem o repouso por inatividade por um tempo definido sem alterar ajustes; keep_awake com lid_closed também mantém o Mac funcionando com a tampa fechada, depois que você permitir, e pede autorização antes. As ferramentas de alteração (set_profile, set_app_rule, set_new_app_mode, decide_approval, block_destination, set_budget, set_data_pack, set_app_quota, set_network_cost, set_updater_pause, set_kill_switch, set_protection, que também orienta o agente a nunca desativar a Proteção para fazer sua própria solicitação passar, hold_upload, que retém o upload de outro app, set_dns, que também limpa o cache, set_fastest_dns, set_dns_fallback e set_airdrop_visibility, que abre os ajustes do AirDrop) são identificadas como alterações, e suas descrições orientam o agente a pedir sua autorização primeiro.
Conectar agentes
Sem ajuda, o Kilobat usa o tráfego e a CPU de um agente, então um agente silencioso pode ter terminado ou estar aguardando você. Seus hooks informam ao Kilobat o projeto de uma execução, quando aguarda você e quando termina. Cada hook executa kilobat agent-event, que não imprime nada, retorna imediatamente e sempre termina com 0, para não prejudicar o agente. Se o app não estiver em execução, eventos aguardam em um pequeno arquivo que ele lê ao abrir. O Kilobat lê IDs de sessão, pastas e texto curto de status, nunca prompts ou respostas. Combine-os com hooks que você já tenha.
Claude Code, em ~/.claude/settings.json. Cada hook recebe JSON em stdin com o ID de sessão e a pasta, que --stdin-json lê. Um pedido de permissão ou entrada significa aguardando; Stop significa concluído após as tarefas em segundo plano terminarem; um limite de taxa significa aguardar até a redefinição.
{
"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, o mais simples: notify em ~/.codex/config.toml. O Codex passa um argumento JSON após cada turno, que --json-arg lê. Ele informa apenas conclusão, e o Codex executa um programa notify.
notify = ["kilobat", "agent-event", "done", "--agent", "codex", "--json-arg"]
Para informar espera também, use hooks do Codex em ~/.codex/hooks.json e confie neles com /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, em ~/.gemini/settings.json. O Gemini CLI executa como node, então o Kilobat não consegue associar seu tráfego à execução, mas o estado é transmitido.
{
"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 e Kanban): instale o plugin do Kilobat, que adiciona um arquivo à loja de plugins do Cline e não altera outros ajustes. cline plugin uninstall kilobat o remove.
cline plugin install https://kilobat.app/agents/cline/kilobat.ts
Ele informa uma execução em andamento, concluída, com falha enquanto o Cline permanece aberto, cancelada, limitada por taxa depois de esgotadas as próprias tentativas do Cline, e aguardando enquanto o Cline faz uma pergunta. Espera subagentes e colegas terminarem antes de declarar a execução concluída. Pedidos de aprovação do Cline não são visíveis a plugins, então a detecção de tráfego e CPU cobre esses casos.
Qualquer outro agente pode chamar kilobat agent-event start|working|waiting|done|failed --agent <name> --session <id> --cwd <folder> dos próprios hooks. Adicione --verbose para ver o que aconteceu ao testar manualmente.
Registro de rede dos agentes
Enquanto Claude Code, Codex, Cursor, Gemini CLI, Aider, Windsurf, Claude Desktop, ChatGPT ou outro agente trabalha, o Kilobat registra cada host contatado por ele e pelos processos que inicia: npm, pip, uv, curl, git, brew, servidores MCP, inclusive quando há um shell entre eles. Cada sessão, do início do processo do agente até ele e tudo que iniciou encerrarem, lista os hosts pelo processo que conectou, ordenados pelo maior envio, com porta e protocolo, primeira e última observação, bytes enviados e recebidos e número de conexões, além da pasta de projeto em que o agente executou. Fica em Histórico › Registro de rede dos agentes, e o menu mostra uma linha enquanto um agente trabalha, como “Claude Code · 14 hosts · 2,1 MB enviados”. Copiar como Markdown coloca a tabela de uma sessão na área de transferência para uma issue ou revisão.
Sinalizações indicam o que merece uma segunda olhada, nunca que algo está errado: primeira vez (nenhum agente neste Mac contatou esse host antes; registros conhecidos como registry.npmjs.org, pypi.org e github.com e o próprio serviço do agente nunca são chamados de novos), HTTP sem criptografia (porta 80), upload grande (mais de 10 MB para um host que não seja o próprio serviço do agente, então o Claude Code enviando contexto à Anthropic não é sinalizado), somente endereço (nenhum nome de host conhecido) e compartilhamento ou túnel (uma lista curta de sites de colagem, compartilhamento de arquivos como transfer.sh, túneis como ngrok e trycloudflare.com e receptores de solicitações como webhook.site). Apenas sinalizados mostra somente esses.
Como funciona: o Kilobat já lê a cada segundo as estatísticas de rede por conexão do macOS (o mesmo que nettop), com o processo de cada conexão. Reconhece agentes pelo executável, pacote executado por um interpretador (node …/@openai/codex, python3 -m aider) ou executável do próprio app, e acompanha a árvore de processos de cada agente: o kernel informa quando um processo da árvore cria outro, então um curl que dura um décimo de segundo é identificado enquanto executa, e processos transferidos para launchd continuam pertencendo ao agente. O agente mais próximo prevalece, então Claude Code executado no Terminal do Cursor pertence ao Claude Code. Nomes de host vêm do filtro de rede do Kilobat quando ativo (o nome solicitado pelo app), da consulta de hosts conhecidos de desenvolvimento e hosts nas URLs curl ou git de um agente com o resolvedor do Mac e correspondência de endereços, ou de DNS reverso, que é marcado por ser o nome do servidor, não o solicitado pelo app. Sem nenhum deles, a linha mostra o endereço.
O que ele não consegue ver: tráfego que serviços do macOS geram para um processo (consultas DNS passam por mDNSResponder, downloads por nsurlsessiond), contêineres Docker e VMs (seu tráfego sai pelo próprio processo do Docker ou da VM) e agentes dentro de um editor executados no processo de extensões, como Cline ou Copilot no VS Code, que não podem ser distinguidos do editor. No Cursor e no Windsurf, os comandos digitados no terminal deles contam como tráfego do app. Uma conexão que abre e fecha entre duas amostras de um segundo ainda conta nos bytes da sessão, sem um host. Um processo que inicia e termina antes de o aviso de fork do kernel ser tratado pode passar despercebido. O registro é gravado com o Kilobat Pro somente neste Mac, em ~/Library/Application Support/Kilobat/agent-network-log.json, mantido por 30 dias e nunca enviado a lugar nenhum; Limpar oferece a última hora, hoje ou tudo.
Com Proteção ativa, conexões recusadas pelo Kilobat também aparecem na sessão, marcadas como Bloqueadas com a lista ou regra de proteção de agentes, mesmo sem transportar bytes.
No Terminal, kilobat agent-log imprime a sessão mais recente ou a do próprio agente quando executado por ele; --all, --since 2h, --agent claude, --flagged e --json refinam o resultado. A leitura é grátis, e kilobat agent-log --watch registra ao vivo no Terminal sem o app ou Pro, sem salvar nada. Agentes chamam a ferramenta MCP somente leitura agent_network_log, que sem argumentos retorna sua própria sessão, para que possam verificar com quem uma instalação que executaram se comunicou.
Limpar histórico ou esquecer um site
Em Ajustes › Dados e privacidade, Esquecer um site remove um host das tentativas bloqueadas, do registro de rede dos agentes, dos destinos de execuções de agentes e sessões de atividade e da memória de notificações da Proteção. Inclua subdomínios para remover também nomes como www.example.com. Apagar histórico de sites remove os mesmos registros da última hora, desde a meia-noite ou de todo o período. Tentativas bloqueadas e o registro de rede dos agentes também têm seus próprios menus Limpar; o menu de contexto de uma linha de host oferece Esquecer. Limpar o histórico mantém suas regras e ajustes de proteção. Atividades futuras podem voltar a ser registradas.
No Terminal, use kilobat history forget example.com --subdomains --json ou kilobat history clear --hour (--today e --all também estão disponíveis). O comando pede ao app que apague seus registros ativos quando estiver em execução, ou altera os históricos salvos quando estiver fechado. O MCP clear_history faz o mesmo, somente quando você pede ao agente para apagar o histórico. A exclusão não pode ser desfeita; o resultado informa quantas entradas foram removidas de cada histórico.
Enquanto um app estiver em primeiro plano
Para leitura ou apresentação, Enquanto um app estiver em primeiro plano na xícara mantém o Mac ativo apenas enquanto o app escolhido estiver em primeiro plano e permite repouso assim que você mudar. Manter a tela ligada na xícara decide se a tela também permanece ligada, como para tudo que o Kilobat mantém ativo. O Kilobat acompanha os eventos de troca de app do macOS: não consulta repetidamente, não move o mouse nem simula atividade, portanto não pode fazer você parecer presente a software de monitoramento. Termina quando o app encerra, quando você desativa ou com bateria em 20% (ou no limite definido para execução com tampa fechada), e nunca mantém o Mac funcionando com a tampa fechada. Tem sua própria retenção, então trocar ou encerrar o app nunca termina uma sessão ativa ou execução de agente. Pelo Terminal: kilobat awake --while-frontmost Keynote --display.
Enquanto conectado à tomada
Ative Manter ativo enquanto conectado à tomada (Ajustes › Manter ativo e agentes), ou Enquanto conectado à tomada na xícara, e conectar o adaptador mantém o Mac ativo até desconectá-lo, como indica “Ativo enquanto conectado à tomada”. Manter a tela ligada decide se ela também permanece ligada. Desative e permanecerá desativado até a próxima conexão à tomada, mesmo que o Kilobat reinicie. O Kilobat recebe a mudança pela notificação de fonte de energia do macOS, sem consultas repetidas. Desconectar encerra apenas a sessão iniciada pela tomada: uma sessão iniciada por você, download aguardado, app em primeiro plano, execução de agente ou retenção do Terminal continua. Nunca mantém o Mac ativo com a tampa fechada. Pelo Terminal: kilobat settings awake-on-power on, e kilobat settings keep-screen-on on para a tela; kilobat conditions --json informa como awakeOnPower.
Executar com a tampa fechada
Fechar a tampa coloca o Mac em repouso, mesmo enquanto o Kilobat o mantém ativo, a menos que você permita execução com a tampa fechada em Ajustes › Manter ativo e agentes. Isso instala um pequeno auxiliar executado como root; o macOS pede permissão em Ajustes do Sistema › Geral › Itens de Início. Com ele ativo, uma execução de agente em andamento mantém o Mac ativo com a tampa fechada, assim como uma sessão ativa quando você marca Com a tampa fechada também no menu da xícara. Um agente aguardando você só mantém o Mac ativo com Manter ativo enquanto um agente aguarda habilitado, por no máximo 30 minutos.
Um Mac fechado em uma bolsa pode superaquecer e descarregar a bateria, então o próprio auxiliar permite repouso no limite de bateria (20% por padrão), quando o Mac aquece, assim que é desconectado se você escolher apenas na tomada, após o período máximo definido (até 8 horas) e um minuto após o Kilobat encerrar. Se o auxiliar ou o Mac reiniciar durante a retenção, ele restaura o ajuste primeiro. O Kilobat mostra como cada retenção terminou, por exemplo “Permitiu o repouso do Mac: bateria em 20%”.
No Terminal, kilobat awake --lid-closed pede ao app que mantenha o Mac ativo da mesma forma e explica por que não consegue quando falha; a sessão termina com o comando. Agentes usam keep_awake com lid_closed, cuja descrição orienta confirmar com você antes. kilobat conditions --json informa lidClosedAllowed e o lidHold atual.
Skills de agentes
Nove Agent Skills ensinam agentes de programação a solucionar problemas de rede do Mac e manter execuções longas com o Kilobat. Elas interpretam medições, explicam incertezas e perguntam antes de alterar ajustes. Instale-as juntas; a skill kilobat encaminha o agente à adequada.
npx skills add seifip/kilobat-skills
| kilobat | Comece aqui. Configuração, regras de segurança e qual skill se encaixa na pergunta. |
| mac-network-troubleshooting | Internet lenta ou instável sem causa clara: encontra a camada que falhou. |
| mac-wifi-troubleshooting | Wi-Fi fraco ou caindo, canais congestionados, melhor local para o Mac ou roteador. |
| mac-hotspot-data-saver | Acessos pessoais e limites de dados: o que usa dados, perfil Viagem e limites. |
| mac-dns-troubleshooting | Consultas lentas, comparação de resolvedores, troca de DNS e portais cativos. |
| video-call-network-check | Chamadas e transmissões de jogos com interrupções: picos de latência, jitter, perda, bufferbloat e uploads em segundo plano. |
| mac-bandwidth-monitor | Quais apps usam a conexão, histórico de uso e onde se conectam. |
| mac-app-firewall | Bloqueie ou permita apps, domínios e IPs; pergunte sobre novos apps e responda. |
| mac-agent-runs | Execuções longas de agentes: mantenha o Mac ativo, verifique condições, conecte hooks e veja quando uma execução terminou, aguarda você ou parou. |
Instale a CLI do Kilobat separadamente com o comando Homebrew acima ou conecte seu servidor MCP. A CLI exige macOS 14 ou posterior; a compilação do código-fonte pelo Homebrew exige Xcode 16 ou posterior. Veja as skills no skills.sh ou leia seu código-fonte e referências.
Siri e Atalhos
Pergunte à Siri sobre sua conexão e o Kilobat responde com suas próprias verificações, em uma ou duas frases, com um cartão de números. Diga o nome do app na pergunta, como a Siri exige: “Por que minha internet está lenta no Kilobat?” executa uma nova verificação e informa a causa: “Seu Wi-Fi está bem; a linha da sua operadora perde 4% dos pacotes desde 21h05. Isso está no relatório da operadora.” As outras perguntas: “Minha conexão está boa no Kilobat?”, “Por que minha chamada travou no Kilobat?” (o último relatório de chamada), “O Slack está fora do ar no Kilobat?” (qualquer serviço cuja página de status o Kilobat lê, ou “Meus apps estão fora do ar no Kilobat?” para os que você usa), “O que está usando minha internet no Kilobat?”, “Quantos dados usei no Kilobat?”, “Estou pronto para minha chamada no Kilobat?”, “Minha VPN está vazando dados no Kilobat?” e “Testar velocidade com Kilobat”. As mesmas perguntas funcionam no Spotlight, e cada uma é uma ação no app Atalhos que passa a resposta à próxima etapa: estado da rede com saúde, causa, latência e perda; relatório de chamada; serviços e se informam uma queda; e dados de hoje como tamanho. A ação Usar Modelo do Atalhos pode passar esses resultados ao Apple Intelligence. Sem o Kilobat Pro, a Siri informa o problema e as medidas da linha, quantas vezes uma chamada travou e se um serviço está fora do ar; o Pro acrescenta o motivo e o que fazer. Atalhos prontos usam essas mesmas ações.