Pergunte diretamente a assistentes de IA como o Claude sobre o estado de segurança do seu Mac / Linux
O RoamSwitch inclui um servidor MCP (Model Context Protocol) só de leitura. Ligue-o a um cliente MCP e basta perguntar, em linguagem natural, «o meu Mac / Linux está seguro neste momento?» ou «que portas estão expostas?» — obterá respostas baseadas nos diagnósticos precisos do próprio RoamSwitch, não em suposições. Não pode alternar o nível de bloqueio, isolar portas nem realizar qualquer outra ação; toda a comunicação permanece inteiramente no dispositivo através de stdio (uma extensão da nossa política Zero Telemetry).
🔒 Porque é seguro
- Só de leitura: apenas diagnósticos de segurança, monitorização de portas e verificação do estado das guardas. Não é implementada nenhuma ferramenta operacional como alternar o bloqueio, isolar portas ou ejetar dispositivos.
- Totalmente local: a comunicação é feita apenas via stdio, exclusivamente entre o seu cliente de IA (Claude Desktop/Code, etc.) e o processo RoamSwitch no seu Mac / Linux; nunca é enviado nada para um servidor externo.
- Prevenção de erros: como não existem ferramentas operacionais, não há risco de uma injeção de prompt ou similar alterar acidentalmente a firewall ou as definições de rede.
Configuração em dois passos
1Localização do binário
Incluído na RoamSwitch.app — não é necessário descarregar ou instalar em separado.
/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2aPara o Claude Desktop
Adicione o seguinte a "mcpServers" em ~/Library/Application Support/Claude/claude_desktop_config.json e reinicie o Claude Desktop.
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
2bPara o Claude Code
Basta executar uma vez o seguinte comando no terminal.
claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2cPara o OpenAI Codex CLI
Adicione o seguinte a ~/.codex/config.toml, ou execute o comando abaixo no terminal.
[mcp_servers.roamswitch] command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2dPara o OpenCode
Adicione o seguinte ao opencode.json na raiz do projeto (ou global em ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
}
}
}
💡 Suporte para LLMs locais: Ao utilizar modelos locais via Ollama ou LM Studio, pode consultar o RoamSwitch totalmente offline, mesmo quando a rede foi isolada de emergência perante uma ameaça.
2ePara o Antigravity
Adicione o seguinte a ~/.gemini/config/mcp_config.json (ou a .agents/mcp_config.json na raiz do seu workspace).
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
* Observação: Se encontrar erros de Hook Failure ou telemetria no Antigravity CLI (agy), desative o hook definindo "enabled": false em ~/.gemini/config/plugins/.../hooks.json.
1Localização do binário
Incluído no pacote apt / rpm / AUR e instalado automaticamente em /usr/bin/roamswitch-mcp. Não é necessário nenhum download ou build separado (igual para a edição Cliente e a edição Servidor).
/usr/bin/roamswitch-mcp
O mesmo binário e os mesmos passos de configuração funcionam da mesma forma na edição Servidor (sem interface gráfica). Consulte o capítulo «Agentes de IA / Integração MCP» do manual de operação do Linux Server para mais detalhes.
2aPara o Claude Desktop
O Claude Desktop não tem uma versão oficial para Linux. Se estiver a usar uma versão não oficial (por exemplo, claude-desktop-debian), adicione o seguinte a "mcpServers" em ~/.config/Claude/claude_desktop_config.json e reinicie a aplicação.
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
2bPara o Claude Code
Basta executar uma vez o seguinte comando no terminal.
claude mcp add roamswitch /usr/bin/roamswitch-mcp
2cPara o OpenAI Codex CLI
Adicione o seguinte a ~/.codex/config.toml, ou execute o comando abaixo no terminal.
[mcp_servers.roamswitch] command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp
2dPara o OpenCode
Adicione o seguinte ao opencode.json na raiz do projeto (ou global em ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/usr/bin/roamswitch-mcp"]
}
}
}
💡 Suporte para LLMs locais: Ao utilizar modelos locais via Ollama ou LM Studio, pode consultar o RoamSwitch totalmente offline, mesmo quando a rede foi isolada de emergência perante uma ameaça.
2ePara o Antigravity
Adicione o seguinte a ~/.gemini/config/mcp_config.json (ou a .agents/mcp_config.json na raiz do seu workspace).
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
* Observação: Se encontrar erros de Hook Failure ou telemetria no Antigravity CLI (agy), desative o hook definindo "enabled": false em ~/.gemini/config/plugins/.../hooks.json.
Ferramentas só de leitura (atualmente 17 no Mac / 25 no Linux, em expansão contínua)
get_security_report
Executa uma auditoria de 18 pontos no Mac (FileVault, SIP, Gatekeeper, firewall, robustez da encriptação Wi-Fi, ARP spoofing, portas expostas, etc.) ou de 24 pontos no cliente / 30 pontos no servidor em Linux (reforço do kernel, proteção do socket Docker e de contentores privilegiados, isolamento do runtime de contentores, vulnerabilidades conhecidas, etc.), devolvendo uma pontuação e recomendações de melhoria.
get_exposed_ports
Lista todas as portas atualmente em escuta e, para as expostas externamente, devolve uma auditoria detalhada que inclui a deteção de serviços de risco conhecidos (Redis, MongoDB, etc.).
get_guard_status
Retorna o status das proteções de portas, contenção ARP, USB, Bluetooth, downloads Web/Mail, ameaças DNS e o nível de segurança atual.
audit_url_safety
Analisa links de e-mail ou URLs da web para detectar phishing, ataques homógrafos Unicode, subdomínios enganosos e TLDs de alto risco (Zero Telemetry).
get_app_help
Pesquisa na base de conhecimento oficial do RoamSwitch abrangendo todas as funcionalidades, alertas, configurações e resolução de problemas no dispositivo para fornecer explicações e conselhos precisos.
audit_security_logs
Agrega os registos de segurança recentes (Mac: falhas de autenticação sudo, tentativas de força bruta SSH, bloqueios do Gatekeeper, deteções do XProtect, etc. / Linux: falhas de autenticação sudo, força bruta SSH, bloqueios da firewall, recusas do AppArmor, deteções do ClamAV, etc.), mascara automaticamente informação sensível como chaves de API e tokens, e devolve também os resultados da deteção de novos padrões (através de modelos de registo) e de anomalias de frequência (picos estatísticos).
get_notification_history
Devolve o histórico das notificações enviadas pelo RoamSwitch (anomalias de auditoria de registos de segurança, deteções de ClickFix e outras) dos últimos 7 dias, mais recentes primeiro.
roamswitch://docs/* (MCP Resources)
Recursos de documentação oficial que os clientes de IA podem carregar diretamente no contexto (funcionalidades, alertas, configurações, resolução de problemas).
Outras ferramentas apenas de leitura
| Ferramenta | Plataforma | Descrição |
|---|---|---|
audit_secrets |
Mac / Linux | Deteta chaves de API e chaves privadas expostas em texto, num ficheiro ou numa árvore de diretórios (os resultados são mascarados na saída). |
run_active_vuln_scan |
Mac / Linux | Verificação ativa de vulnerabilidades, não destrutiva e limitada a 127.0.0.1. A única ferramenta que usa a rede: desativada por predefinição, exige ativação nas definições. |
run_package_cve_scan |
Mac / Linux | Compara os pacotes instalados (Mac: Homebrew / Linux: dpkg, dnf, zypper, pacman) com um mapa de CVE local. Não ocorre qualquer comunicação de rede. |
run_package_cve_scan_languages |
Mac / Linux | Compara os ficheiros de bloqueio de dependências do npm, PyPI, crates.io, RubyGems, Packagist, Go e Maven com o mesmo mapa de CVE local. Não ocorre qualquer comunicação de rede. |
get_quarantine_status |
Mac / Linux | Devolve o conteúdo do cofre de quarentena: caminho original, nome da ameaça detetada, data de quarentena e tamanho. |
get_canary_status |
Mac / Linux | Devolve o estado dos ficheiros-isco anti-ransomware (canary) e até aos 50 incidentes detetados mais recentes. |
get_port_anomaly_incidents |
Mac / Linux | Devolve o estado da linha de base da proteção contra portas anómalas, as portas atualmente bloqueadas automaticamente e até aos 50 incidentes mais recentes. A resposta indica explicitamente que as portas atualmente bloqueadas são uma captura do estado atual, sem marca temporal, distinta do histórico de incidentes, que tem marca temporal. |
get_runtime_threat_status |
Mac | Indica se este Mac está isolado (Air-Gap) devido a uma deteção de malware do XProtect e qual o incidente que a desencadeou. É o primeiro a consultar durante um Air-Gap ativo. |
verify_fim |
Linux | Volta a calcular o hash de cerca de 150 ficheiros críticos do sistema e compara-o com a linha de base guardada para verificar a integridade. |
get_file_scan_guard_status |
Linux (Server) | Devolve a configuração do File Scan Guard (ClamAV) e o estado do cofre de quarentena que utiliza. |
get_ebpf_incidents |
Linux (Server) | Devolve o estado de isolamento atual da guarda de execução eBPF e o historial de incidentes que lhe deu origem. |
get_resource_guard_incidents |
Linux (Server) | Devolve o historial da guarda de esgotamento de recursos e anomalias de processos (fugas de memória, ciclos de falha), com um nível de confiança. |
get_incident_timeline |
Mac / Linux | Reúne as deteções de todas as guardas numa única linha cronológica, com a ascendência dos processos e etiquetas MITRE ATT&CK (experimental). |
get_network_history |
Mac | Regista, para cada rede Wi-Fi memorizada, quantos dispositivos de gateway distintos responderam e quando foi vista pela última vez, sinalizando outras redes com nomes suspeitosamente semelhantes (possíveis Evil Twin). Também permite saber se já se ligou a uma determinada rede antes. |
get_vpn_status |
Linux (Client) | Indica se a VPN em redes não fiáveis (WireGuard / Tailscale) está ativada, se o túnel está de facto estabelecido e se o kill switch antifugas está armado. |
get_link_guard_status |
Linux (Client) | Devolve o estado de ativação do Link Guard (bloqueio de phishing / sites maliciosos através de inspeção de DNS / TLS SNI / host HTTP), o seu modo (desativado / aviso / bloqueio), a lista de permitidos e os eventos de bloqueio/aviso dos últimos 7 dias. |
get_air_gap_status |
Linux (Client) | Indica se o isolamento de emergência Air-Gap (todo o tráfego bloqueado) está atualmente ativo, o motivo que o desencadeou, o tempo restante até à libertação automática e todos os processos atualmente congelados com SIGSTOP. |
get_sharing_services_status |
Linux (Client) | Devolve a definição que para automaticamente o SSH, o Samba e a partilha de ecrã (GNOME Remote Desktop / VNC / xrdp) em redes não fiáveis, e o estado real dos serviços efetivamente parados e restaurados. |
get_bluetooth_guard_status |
Linux (Client) | Devolve a definição do Bluetooth Guard que desativa à força a visibilidade em redes não fiáveis, e o estado real do controlador (ligado, visível, dispositivos ligados). |
get_usb_guard_status |
Linux (Client) | Devolve as definições da guarda de armazenamento USB e da guarda de teclado BadUSB (a entrada é apenas suprimida via evdev — um dispositivo nunca é desautorizado ao nível do kernel), juntamente com os dispositivos ligados e os pendentes de aprovação. |
Das ferramentas acima, as que só leem o estado local (quarentena, canary, anomalias de portas, ameaças em tempo de execução, histórico de notificações, linha temporal de incidentes, histórico de rede, estado de VPN / Link Guard / Air-Gap / serviços de partilha / Bluetooth / guarda USB, etc.) continuam a funcionar mesmo quando o RoamSwitch cortou a rede de emergência devido a uma ameaça detetada. Combinadas com um LLM local, permitem investigar a causa no local durante o corte.
Como consultar a IA no trabalho e desenvolvimento diário
Exemplos práticos de prompts e respostas de IA para auditoria de portas em desenvolvimento local, verificação de Wi-Fi público, deteção de URLs de phishing e mais. Copie os prompts diretamente para a IA.
Auditoria de exposição de portas de servidores locais e BD
Ao iniciar Next.js, Vite, Python, Docker, Redis, etc., peça à IA para auditar se existem portas inadvertidamente expostas em 0.0.0.0 a toda a rede local.
• 🚨 Porta 3000 (node / Next.js): Exposta externamente em
0.0.0.0:3000• 🚨 Porta 6379 (redis-server): Exposta externamente em
0.0.0.0:6379 (sem autenticação; acessível por outros dispositivos no mesmo Wi-Fi)• ✅ Porta 5432 (postgres): Vinculada a
127.0.0.1:5432 (apenas localhost / seguro)💡 Recomendação: Altere a configuração do Redis para
bind 127.0.0.1 e inicie o Next.js com npm run dev -- -H 127.0.0.1.Verificação de segurança ao ligar a Wi-Fi público
Logo após ligar-se a uma rede Wi-Fi pública num café ou hotel, peça à IA um diagnóstico completo para verificar se a firewall e a proteção ARP estão ativas.
• 🛡️ Pontuação global: 88 / 100 (Grade: A-)
• 📡 Estado da rede: Rede não confiável (Modo em viagem / filtro de pacotes ativo)
• ✅ Firewall / Modo invisível: Ativado (bloqueia pacotes de sondagem externa)
• ✅ Isolamento automático anti-ARP spoofing: Ativado (isolamento automático em caso de interceção)
• ⚠️ Ação recomendada: A encriptação FileVault está desativada. Recomenda-se a ativação nas Definições do Sistema.
Análise de links suspeitos em e-mails e chats
Peça à IA para inspecionar instantaneamente URLs recebidos por e-mail ou mensagens de Slack/Discord totalmente em local, sem enviar o link para servidores externos (Zero Telemetry).
• 🚨 Nível de risco: Dangerous (Perigoso / Pontuação: 8/100)
• ❌ Subdomínio enganoso: Finge ser
apple.com, mas o domínio real é login-auth-verify.xyz.• ❌ TLD de alto risco:
.xyz é frequentemente utilizado em campanhas de phishing efémeras.• 🔒 Zero Telemetry: Inspecionado localmente no seu Mac sem qualquer transferência de dados para o exterior.
• 🛑 Recomendação: Não abra o link sob qualquer circunstância, elimine e reporte o e-mail.
Proteção de segurança autónoma durante a programação
Ao delegar tarefas ao Claude Code ou Antigravity, deixe o agente executar as ferramentas MCP autonomamente como salvaguarda para verificar se não foram abertas portas indevidas.
1. Servidor Fastify iniciado na porta 8080.
2. 🔍 Verificação RoamSwitch MCP: Executou
get_exposed_ports e confirmou que a porta está estritamente vinculada a 127.0.0.1:8080 (apenas localhost).3. Ambiente seguro verificado. A prosseguir com os testes de integração.
Relatório de segurança diário e exportação Markdown
Gere com um clique um relatório em Markdown claro e estruturado para conformidade de TI, auditorias da empresa ou o seu registo de trabalho diário.
## 🛡️ Mac Security Health Report (2026-08-28)
- Pontuação global: 96 / 100 (Grade: A+)
- Estado das defesas principais:
• FileVault: ✅ Ativado (APFS Encrypted)
• SIP: ✅ Ativado
• Firewall / Modo invisível: ✅ Ativado
• Isolamento automático ARP: ✅ Ativado
• Proteção contra ameaças DNS: ✅ Ativado (Quad9 Secure DNS)
- Ações recomendadas: Nenhuma (excelente estado de segurança)Verificação do estado dos guards de USB, Bluetooth e transferências
Confirme se as defesas em tempo real, como o alerta de USB desconhecido, monitorização de Bluetooth e proteção de downloads, estão operacionais.
• 🛡️ Nível de proteção ativo: Balanced (Modo padrão de proteção)
• ✅ Guarda de armazenamento USB: Ativo (alerta/bloqueia pens USB não registadas)
• ✅ Guarda de Bluetooth: Ativo (monitoriza a proximidade de dispositivos não emparelhados)
• ✅ Proteção de downloads Web/Mail: Ativo (análise automática ClamAV de ficheiros em quarentena)
• ✅ Proteção contra ameaças DNS: Ativo (bloqueia domínios maliciosos C2 e phishing)
Uso do app e esclarecimento de mensagens de alerta
Consulte a IA sobre qualquer notificação, aviso ou detalhe técnico (filtro de pacotes, FSEvents, quarentena ClamAV, guarda USB, etc.) e receba conselhos oficiais verificados.
• 🚪 Motivo: O servidor iniciou em
0.0.0.0 (aberto na LAN). O RoamSwitch bloqueou acessos externos de entrada.• ⚙️ Solução:
1. Recomendado: Inicie com
npm run dev -- -H 127.0.0.1.2. Partilha na LAN: Autorize a porta 3000 na auditoria de portas.
• 🔍 Análise do incidente: Um dispositivo falsificou pacotes ARP para se passar pelo router (ataque Man-in-the-Middle).
• 🛡️ Defesa automática: O RoamSwitch isolou imediatamente a ligação em modo air-gap de emergência.
• 🛑 Recomendação: Não volte a ligar-se a essa rede Wi-Fi. Continue a trabalhar com segurança através do hotspot.
• 🔌 Motivo da ejeção: Ejetado automaticamente para prevenir roubo de dados e BadUSB.
• ⚙️ Passos de registo: 1. Abra 'Definições' no ícone do RoamSwitch → 2. Selecione 'Proteção USB' → 3. Clique em 'Adicionar de dispositivos ligados' → 4. Defina a permissão como 'Apenas leitura (Recomendado)' e guarde.
• ⚠️ Causa: A comunicação XPC com o daemon privilegiado
RoamSwitchHelper foi temporariamente interrompida.• 🛠️ Restauro:
1. Abra o Terminal e reinicie o assistente:
sudo killall RoamSwitchHelper2. Reinicie a app RoamSwitch.
3. Em 'Definições do Sistema' > 'Geral' > 'Itens de início e extensões', certifique-se de que o
RoamSwitchHelper está ativado.Triagem offline com um LLM local + MCP após um bloqueio de emergência Air-Gap
Quando o Air-Gap (bloqueio de rede de emergência) é acionado — por exemplo, ao detetar ransomware —, a comunicação com clientes de IA na nuvem como o Claude Desktop também é cortada. Mas o servidor MCP do RoamSwitch continua a funcionar, pois comunica apenas através de um canal de processo local; combine-o com um LLM local (por exemplo, via Ollama) e poderá continuar o diagnóstico sem qualquer acesso à rede. A deteção de anomalias em registos, a deteção de adulteração e a verificação de CVE conhecidas são totalmente locais, por isso este é exatamente o momento para o qual foram concebidas: quando a própria rede desaparece.
• 🐛 Isco acionado: deteção de encriptação de
/var/www/decoy_invoice.pdf às 14:32:07; o processo suspicious_enc (PID 8823) foi imediatamente congelado e isolado• 🔌 Monitorização de portas (Port Anomaly Guard): sem novos bloqueios automáticos no histórico de incidentes — o isco acionado parece ser o único ponto de entrada, sem portas backdoor adicionais abertas
• 📜 Correlação de registos (deteção de anomalias): um pico de falhas de autenticação
sshd começa 12 minutos antes do acionamento (pico de frequência detetado, Z-score 5,2) — um possível ponto de entrada• 🔒 Deteção de adulteração (FIM): sem adulteração encontrada em ~150 caminhos críticos do sistema — sem indícios de que a violação tenha atingido a camada do sistema
• 📦 Verificação de CVE conhecidas: comparado com o mapa de CVE local — sem vulnerabilidades conhecidas críticas nos pacotes afetados
💡 Ação recomendada: a violação está provavelmente confinada à raiz web. Antes de restaurar a partir de uma cópia de segurança, verifique também individualmente os outros ficheiros nesse diretório.
Sobre a integração MCP
Q. É verdade que nunca comunica com o exterior?
A. Sim. O servidor MCP é um processo local iniciado diretamente pelo seu cliente de IA através da entrada/saída padrão (stdio) e não contém qualquer código de rede. Os resultados do diagnóstico também são calculados na hora, neste Mac / Linux.
Q. Posso usar sem a versão Pro?
A. Sim, todas as ferramentas funcionam na versão gratuita. No entanto, a eficácia real de cada guarda automática também depende do estado da licença Pro, pelo que a ferramenta só consegue confirmar o estado do interruptor nas Definições.
Q. Que clientes de IA são suportados?
A. Qualquer cliente que suporte o transporte stdio do MCP (Model Context Protocol) deverá funcionar em geral, mesmo além dos listados acima. Verificado com o Claude Desktop, Claude Code, OpenAI Codex CLI, OpenCode e Antigravity.
Q. O Antigravity exibe um erro de «Hook Failure» ou telemetria ao chamar ferramentas?
A. Um hook PreToolUse de plugins externos (como a telemetria do Google Cloud) no Antigravity pode bloquear a execução. Abra ~/.gemini/config/plugins/.../hooks.json e defina "enabled": false.
Q. Posso efetuar consultas quando o acesso à rede está bloqueado?
A. Sim, se utilizar um LLM local (com OpenCode via Ollama ou LM Studio), tudo é processado 100% no seu Mac / Linux e funciona offline mesmo durante o isolamento de rede de emergência. Se utilizar um LLM na nuvem (como a API Claude), mude para uma ligação segura como hotspot antes de consultar.