Chiedi direttamente ad assistenti IA come Claude lo stato di sicurezza del tuo Mac / Linux
RoamSwitch include un server MCP (Model Context Protocol) di sola lettura. Collegalo a un client MCP e chiedi semplicemente, in linguaggio naturale, "il mio Mac / Linux è sicuro in questo momento?" oppure "quali porte sono esposte?": otterrai risposte basate sulle diagnosi precise di RoamSwitch stesso, non su supposizioni. Non può cambiare il livello di blocco, isolare porte o eseguire altre azioni; tutta la comunicazione rimane interamente sul dispositivo tramite stdio (un'estensione della nostra politica Zero Telemetry).
🔒 Perché è sicuro
- Sola lettura: solo diagnostica di sicurezza, monitoraggio delle porte e verifica dello stato delle guardie. Non è implementato alcuno strumento operativo come il cambio del livello di blocco, l'isolamento delle porte o l'espulsione dei dispositivi.
- Completamente locale: la comunicazione avviene solo tramite stdio, esclusivamente tra il tuo client IA (Claude Desktop/Code, ecc.) e il processo RoamSwitch sul tuo Mac / Linux; non viene mai inviato nulla a un server esterno.
- Prevenzione di errori: non essendoci strumenti operativi, non c'è rischio che un'iniezione di prompt o simili modifichi accidentalmente il firewall o le impostazioni di rete.
Configurazione in due passaggi
1Percorso del binario
Incluso in RoamSwitch.app: non è necessario alcun download o installazione separati.
/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2aPer Claude Desktop
Aggiungi quanto segue a "mcpServers" in ~/Library/Application Support/Claude/claude_desktop_config.json, quindi riavvia Claude Desktop.
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
2bPer Claude Code
Basta eseguire una volta il seguente comando nel terminale.
claude mcp add roamswitch /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2cPer OpenAI Codex CLI
Aggiungi quanto segue a ~/.codex/config.toml, oppure esegui il comando seguente nel terminale.
[mcp_servers.roamswitch] command = "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
codex mcp add roamswitch -- /Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer
2dPer OpenCode
Aggiungi quanto segue a opencode.json nella root del progetto (o globale in ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"]
}
}
}
💡 Supporto LLM locali: Con modelli locali tramite Ollama o LM Studio, puoi consultare RoamSwitch offline anche se la rete è stata isolata per emergenza in presenza di minacce.
2ePer Antigravity
Aggiungi quanto segue a ~/.gemini/config/mcp_config.json (oppure a .agents/mcp_config.json nella radice del tuo workspace).
{
"mcpServers": {
"roamswitch": {
"command": "/Applications/RoamSwitch.app/Contents/MacOS/RoamSwitchMCPServer"
}
}
}
* Nota: se si verifica un errore Hook Failure o di telemetria in Antigravity CLI (agy), disabilitare l'hook impostando "enabled": false in ~/.gemini/config/plugins/.../hooks.json.
1Percorso del binario
Incluso nel pacchetto apt / rpm / AUR e installato automaticamente in /usr/bin/roamswitch-mcp. Non è necessario alcun download o build separato (uguale per l'edizione Client e l'edizione Server).
/usr/bin/roamswitch-mcp
Lo stesso binario e la stessa procedura di configurazione funzionano invariati anche con l'edizione Server (headless). Per i dettagli, consulta il capitolo "Agenti IA / Integrazione MCP" del manuale operativo di Linux Server.
2aPer Claude Desktop
Claude Desktop non ha una versione Linux ufficiale. Se usi una build non ufficiale (ad es. claude-desktop-debian), aggiungi quanto segue a "mcpServers" in ~/.config/Claude/claude_desktop_config.json e riavvia l'app.
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
2bPer Claude Code
Basta eseguire una volta il seguente comando nel terminale.
claude mcp add roamswitch /usr/bin/roamswitch-mcp
2cPer OpenAI Codex CLI
Aggiungi quanto segue a ~/.codex/config.toml, oppure esegui il comando seguente nel terminale.
[mcp_servers.roamswitch] command = "/usr/bin/roamswitch-mcp"
codex mcp add roamswitch -- /usr/bin/roamswitch-mcp
2dPer OpenCode
Aggiungi quanto segue a opencode.json nella root del progetto (o globale in ~/.config/opencode/opencode.json).
{
"mcp": {
"roamswitch": {
"type": "local",
"command": ["/usr/bin/roamswitch-mcp"]
}
}
}
💡 Supporto LLM locali: Con modelli locali tramite Ollama o LM Studio, puoi consultare RoamSwitch offline anche se la rete è stata isolata per emergenza in presenza di minacce.
2ePer Antigravity
Aggiungi quanto segue a ~/.gemini/config/mcp_config.json (oppure a .agents/mcp_config.json nella radice del tuo workspace).
{
"mcpServers": {
"roamswitch": {
"command": "/usr/bin/roamswitch-mcp"
}
}
}
* Nota: se si verifica un errore Hook Failure o di telemetria in Antigravity CLI (agy), disabilitare l'hook impostando "enabled": false in ~/.gemini/config/plugins/.../hooks.json.
Strumenti di sola lettura (attualmente 18 su Mac / 25 su Linux, in continua espansione)
get_security_report
Esegue una verifica a 18 punti su Mac (FileVault, SIP, Gatekeeper, firewall, robustezza della crittografia Wi-Fi, ARP spoofing, porte esposte, ecc.) oppure a 24 punti client / 30 punti server su Linux (hardening del kernel, protezione del socket Docker e dei container privilegiati, isolamento del runtime dei container, vulnerabilità note, ecc.), restituendo un punteggio e consigli di miglioramento.
get_exposed_ports
Elenca tutte le porte attualmente in ascolto e, per quelle esposte esternamente, restituisce un controllo dettagliato che include il rilevamento di servizi a rischio noti (Redis, MongoDB, ecc.).
get_guard_status
Restituisce lo stato delle protezioni per porte, ARP, USB, Bluetooth, download Web/Mail, minacce DNS e il livello di sicurezza attivo.
audit_url_safety
Analizza i link e-mail o URL web per rilevare phishing, attacchi omografi Unicode, sottodomini ingannevoli e TLD ad alto rischio (Zero Telemetry).
get_app_help
Cerca nella base di conoscenza ufficiale di RoamSwitch riguardante tutte le funzioni, avvisi, impostazioni e risoluzione dei problemi in locale per fornire spiegazioni e consigli precisi.
audit_security_logs
Aggrega i log di sicurezza recenti (Mac: errori di autenticazione sudo, tentativi di forza bruta SSH, blocchi Gatekeeper, rilevamenti XProtect, ecc. / Linux: errori di autenticazione sudo, forza bruta SSH, blocchi firewall, dinieghi AppArmor, rilevamenti ClamAV, ecc.), maschera automaticamente le informazioni sensibili come chiavi API e token, e restituisce anche i risultati del rilevamento di nuovi pattern (tramite template dei log) e delle anomalie di frequenza (picchi statistici).
get_notification_history
Restituisce la cronologia delle notifiche inviate da RoamSwitch (anomalie di controllo dei log di sicurezza, rilevamenti ClickFix e altro) degli ultimi 7 giorni, le più recenti per prime.
roamswitch://docs/* (MCP Resources)
Risorse di documentazione ufficiali che i client IA possono leggere direttamente nel contesto (specifiche, avvisi, impostazioni, FAQ).
Altri strumenti di sola lettura
| Strumento | Piattaforma | Descrizione |
|---|---|---|
audit_secrets |
Mac / Linux | Rileva chiavi API e chiavi private esposte in un testo, un file o un albero di directory (i risultati vengono mascherati nell'output). |
run_active_vuln_scan |
Mac / Linux | Verifica attiva delle vulnerabilità, non distruttiva e limitata a 127.0.0.1. L'unico strumento che usa la rete: disattivato per impostazione predefinita, richiede l'attivazione nelle impostazioni. |
run_package_cve_scan |
Mac / Linux | Confronta i pacchetti installati (Mac: Homebrew / Linux: dpkg, dnf, zypper, pacman) con una mappa CVE locale. Non avviene alcuna comunicazione di rete. |
run_package_cve_scan_languages |
Mac / Linux | Confronta i file di lock delle dipendenze di npm, PyPI, crates.io, RubyGems, Packagist, Go e Maven con la stessa mappa CVE locale. Non avviene alcuna comunicazione di rete. |
get_quarantine_status |
Mac / Linux | Restituisce il contenuto del vault di quarantena: percorso originale, nome della minaccia rilevata, data e dimensione. |
get_canary_status |
Mac / Linux | Restituisce lo stato dei file esca anti-ransomware (canary) e fino ai 50 incidenti rilevati più recenti. |
get_ransomware_recovery_snapshots |
Mac | Restituisce gli snapshot APFS di recupero (precedenti al danno, di rilevamento, manuali), quello consigliato per il ripristino, lo stato della modalità di conservazione e l'intervallo degli snapshot. Uno snapshot di rilevamento può contenere già file cifrati. Solo Pro. |
get_port_anomaly_incidents |
Mac / Linux | Restituisce lo stato della baseline della protezione dalle porte anomale, le porte attualmente bloccate in automatico e fino ai 50 incidenti più recenti. La risposta indica esplicitamente che le porte attualmente bloccate sono un'istantanea dello stato attuale, priva di timestamp, distinta dalla cronologia degli incidenti, che invece è dotata di timestamp. |
get_runtime_threat_status |
Mac | Indica se questo Mac è isolato (Air-Gap) a causa di un rilevamento malware di XProtect e qual è l'incidente che lo ha attivato. È il primo strumento da consultare durante un Air-Gap attivo. |
verify_fim |
Linux | Ricalcola l'hash di circa 150 file di sistema critici e lo confronta con la baseline salvata per verificarne l'integrità. |
get_file_scan_guard_status |
Linux (Server) | Restituisce la configurazione del File Scan Guard (ClamAV) e lo stato del vault di quarantena che utilizza. |
get_ebpf_incidents |
Linux (Server) | Restituisce lo stato di isolamento attuale della guardia runtime eBPF e la cronologia degli incidenti all'origine. |
get_resource_guard_incidents |
Linux (Server) | Restituisce la cronologia della guardia contro l'esaurimento delle risorse e le anomalie di processo (memory leak, crash loop), con un livello di confidenza. |
get_incident_timeline |
Mac / Linux | Unisce i rilevamenti di tutte le guardie in un'unica linea temporale, con la genealogia dei processi e i tag MITRE ATT&CK (sperimentale). |
get_network_history |
Mac | Registra, per ogni rete Wi-Fi memorizzata, quanti dispositivi gateway distinti hanno risposto e quando è stata vista l'ultima volta, segnalando altre reti con nomi sospettosamente simili (possibili Evil Twin). Permette anche di sapere se ci si è già connessi in passato a una determinata rete. |
get_vpn_status |
Linux (Client) | Indica se la VPN sulle reti non affidabili (WireGuard / Tailscale) è attiva, se il tunnel è realmente stabilito e se il kill switch anti-fuga è armato. |
get_link_guard_status |
Linux (Client) | Restituisce lo stato di attivazione di Link Guard (blocco di phishing / siti malevoli tramite ispezione DNS / TLS SNI / host HTTP), la sua modalità (disattivato / avviso / blocco), la lista consentiti e gli eventi di blocco/avviso degli ultimi 7 giorni. |
get_air_gap_status |
Linux (Client) | Indica se l'isolamento di emergenza Air-Gap (tutto il traffico bloccato) è attivo in questo momento, il motivo che lo ha attivato, il tempo residuo prima del rilascio automatico e tutti i processi attualmente congelati con SIGSTOP. |
get_sharing_services_status |
Linux (Client) | Restituisce l'impostazione che arresta automaticamente SSH, Samba e la condivisione dello schermo (GNOME Remote Desktop / VNC / xrdp) sulle reti non affidabili, e lo stato reale dei servizi effettivamente arrestati e ripristinati. |
get_bluetooth_guard_status |
Linux (Client) | Restituisce l'impostazione di Bluetooth Guard che disattiva forzatamente la rilevabilità sulle reti non affidabili, e lo stato reale del controller (acceso, rilevabile, dispositivi connessi). |
get_usb_guard_status |
Linux (Client) | Restituisce le impostazioni della guardia di archiviazione USB e della guardia tastiera BadUSB (l'input viene soppresso solo tramite evdev — un dispositivo non viene mai deautorizzato a livello di kernel), insieme ai dispositivi connessi e a quelli in attesa di approvazione. |
Tra gli strumenti sopra, quelli che leggono solo lo stato locale (quarantena, canary, anomalie delle porte, minacce runtime, cronologia notifiche, timeline degli incidenti, cronologia di rete, stato di VPN / Link Guard / Air-Gap / servizi di condivisione / Bluetooth / guardia USB, ecc.) continuano a funzionare anche quando RoamSwitch ha isolato la rete d'emergenza a seguito di una minaccia rilevata. Abbinati a un LLM locale, permettono di indagare sulla causa sul momento durante l'isolamento.
Come interrogare l'IA nel lavoro e nello sviluppo quotidiano
Esempi pratici di prompt e risposte dell'IA per l'audit delle porte in sviluppo locale, controlli di sicurezza su Wi-Fi pubblici, analisi di URL di phishing e altro. Copia i prompt direttamente nell'IA.
Audit esposizione porte server locali e DB
All'avvio di Next.js, Vite, Python, Docker, Redis, ecc., chiedi all'IA di verificare se le porte sono inavvertitamente esposte su 0.0.0.0 a tutta la rete locale.
• 🚨 Porta 3000 (node / Next.js): Esposta esternamente su
0.0.0.0:3000• 🚨 Porta 6379 (redis-server): Esposta esternamente su
0.0.0.0:6379 (senza autenticazione; accessibile da altri dispositivi sullo stesso Wi-Fi)• ✅ Porta 5432 (postgres): Associata a
127.0.0.1:5432 (solo localhost / sicuro)💡 Raccomandazione: Modifica la configurazione di Redis impostando
bind 127.0.0.1 e avvia Next.js con npm run dev -- -H 127.0.0.1.Controllo di sicurezza alla connessione a Wi-Fi pubblico
Subito dopo esserti connesso a una rete Wi-Fi pubblica in un bar o in hotel, chiedi all'IA una diagnosi completa per verificare se firewall, modalità invisibile e protezione ARP sono attivi.
• 🛡️ Punteggio globale: 88 / 100 (Grade: A-)
• 📡 Stato rete: Rete non attendibile (Modalità mobilità / filtro pacchetti attivo)
• ✅ Firewall / Modalità invisibile: Abilitato (blocca i pacchetti di scansione esterni)
• ✅ Isolamento automatico anti-ARP spoofing: Abilitato (isolamento automatico in caso di intercettazione)
• ⚠️ Azione consigliata: La crittografia disco FileVault è disabilitata. Si consiglia di abilitarla in Impostazioni di Sistema.
Analisi dei link sospetti in email e chat
Fai ispezionare istantaneamente all'IA i link ricevuti via email o nei messaggi Slack/Discord interamente in locale, senza inviare l'URL a server esterni (Zero Telemetry).
• 🚨 Livello di rischio: Dangerous (Pericoloso / Punteggio: 8/100)
• ❌ Sottodominio ingannevole: Finge di essere
apple.com, ma il dominio reale è login-auth-verify.xyz.• ❌ TLD ad alto rischio:
.xyz è frequentemente impiegato per campagne di phishing temporanee.• 🔒 Zero Telemetry: Ispezionato localmente sul tuo Mac senza alcun trasferimento di dati all'esterno.
• 🛑 Raccomandazione: Non aprire assolutamente il link, elimina e segnala l'email.
Salvaguardia di sicurezza autonoma durante la programmazione
Quando affidi a Claude Code o Antigravity la creazione di servizi o l'esecuzione di suite di test, fai eseguire autonomamente gli strumenti MCP come protezione per evitare aperture accidentali di porte.
1. Server Fastify avviato sulla porta 8080.
2. 🔍 Verifica RoamSwitch MCP: Eseguito
get_exposed_ports e confermato che la porta è rigorosamente associata a 127.0.0.1:8080 (solo localhost).3. Ambiente sicuro verificato. Proseguo con i test di integrazione.
Report di sicurezza giornaliero ed esportazione Markdown
Genera con un clic un report sintetico e strutturato in Markdown sullo stato di sicurezza del Mac per la conformità aziendale, verifiche IT o il diario di lavoro quotidiano.
## 🛡️ Mac Security Health Report (2026-08-28)
- Punteggio globale: 96 / 100 (Grade: A+)
- Stato difese principali:
• FileVault: ✅ Abilitato (APFS Encrypted)
• SIP: ✅ Abilitato
• Firewall / Modalità invisibile: ✅ Abilitato
• Isolamento automatico ARP: ✅ Abilitato
• Protezione minacce DNS: ✅ Abilitato (Quad9 Secure DNS)
- Azioni consigliate: Nessuna (eccellente stato di sicurezza)Verifica dello stato dei guard USB, Bluetooth e download
Verifica che le protezioni in tempo reale come l'avviso di memorie USB sconosciute, il monitoraggio Bluetooth e l'analisi dei file scaricati siano attive.
• 🛡️ Livello di protezione attivo: Balanced (Modalità standard di protezione)
• ✅ Guardia memoria USB: Attivo (avvisa/blocca memorie USB non registrate)
• ✅ Guardia Bluetooth: Attivo (monitora la vicinanza di dispositivi non associati)
• ✅ Protezione download Web/Mail: Attivo (scansione automatica ClamAV dei file in quarantena)
• ✅ Protezione minacce DNS: Attivo (blocca domini malevoli C2 e phishing)
Uso dell'app e spiegazione dei messaggi di avviso
Consulta l'IA su qualsiasi notifica, avviso o dettaglio tecnico (filtro pacchetti, FSEvents, quarantena ClamAV, protezione USB, ecc.) e ricevi consigli ufficiali.
• 🚪 Motivo: Il server si è avviato su
0.0.0.0 (aperto alla LAN). RoamSwitch ha bloccato gli accessi esterni in entrata.• ⚙️ Soluzione:
1. Consigliato: Avvia con
npm run dev -- -H 127.0.0.1.2. Condivisione LAN: Consenti la porta 3000 in Port Audit.
• 🔍 Analisi dell'incidente: Un dispositivo ha inviato pacchetti ARP falsificati per impersonare il router (attacco Man-in-the-Middle).
• 🛡️ Difesa automatica: RoamSwitch ha isolato immediatamente la connessione in modalità air-gap per bloccare le intercettazioni.
• 🛑 Raccomandazione: Non riconnetterti a quel Wi-Fi pubblico. Continua a lavorare in sicurezza tramite hotspot.
• 🔌 Motivo espulsione: Espulsa automaticamente per prevenire esfiltrazioni di dati e attacchi BadUSB.
• ⚙️ Procedura: 1. Apri 'Impostazioni' dall'icona RoamSwitch → 2. Seleziona 'Protezione USB' → 3. Fai clic su 'Aggiungi da dispositivi connessi' → 4. Imposta il permesso su 'Sola lettura (Consigliato)' e salva.
• ⚠️ Causa: La comunicazione XPC con il demone privilegiato
RoamSwitchHelper è temporaneamente interrotta.• 🛠️ Ripristino:
1. Apri Terminale e riavvia l'assistente:
sudo killall RoamSwitchHelper2. Riavvia l'applicazione RoamSwitch.
3. In 'Impostazioni di Sistema' > 'Generali' > 'Elementi login ed estensioni', verifica che
RoamSwitchHelper sia abilitato.Triage offline con un LLM locale + MCP dopo un blocco di emergenza Air-Gap
Quando si attiva Air-Gap (blocco di rete di emergenza) — ad esempio al rilevamento di un ransomware —, viene interrotta anche la comunicazione con i client IA cloud come Claude Desktop. Ma il server MCP di RoamSwitch continua a funzionare, poiché comunica solo tramite una pipe di processo locale; abbinalo a un LLM locale (ad esempio tramite Ollama) e potrai continuare la diagnosi senza alcun accesso alla rete. Il rilevamento di anomalie nei log, il rilevamento di manomissioni e il confronto con le CVE note sono interamente locali: è esattamente il momento per cui sono stati progettati, quando la rete stessa non c'è più.
• 🐛 Canary attivato: rilevata la cifratura di
/var/www/decoy_invoice.pdf alle 14:32:07; il processo suspicious_enc (PID 8823) è stato immediatamente bloccato e isolato• 🔌 Monitoraggio delle porte (Port Anomaly Guard): nessun nuovo blocco automatico nella cronologia degli incidenti — l'attivazione del canary sembra essere l'unico punto di ingresso, nessuna porta backdoor aggiuntiva aperta
• 📜 Correlazione dei log (rilevamento anomalie): un picco di fallimenti di autenticazione
sshd inizia 12 minuti prima dell'attivazione (picco di frequenza rilevato, Z-score 5,2) — un possibile punto di ingresso• 🔒 Rilevamento manomissioni (FIM): nessuna manomissione riscontrata su ~150 percorsi di sistema critici — nessun indizio che la violazione abbia raggiunto il livello di sistema
• 📦 Verifica CVE note: confrontato con la mappa CVE locale — nessuna vulnerabilità nota critica nei pacchetti interessati
💡 Azione consigliata: la violazione è probabilmente confinata alla web root. Prima di ripristinare da un backup, controlla individualmente anche gli altri file di quella directory.
Sull'integrazione MCP
Q. È vero che non comunica mai con l'esterno?
A. Esatto. Il server MCP è un processo locale avviato direttamente dal tuo client IA tramite standard I/O (stdio) e non contiene alcun codice di rete. Anche i risultati della diagnosi vengono calcolati sul momento, su questo Mac / Linux.
Q. Posso usarlo senza la versione Pro?
A. Sì, tutti gli strumenti funzionano con la versione gratuita. Tuttavia, l'effettiva attivazione di ciascuna guardia automatica dipende anche dallo stato della licenza Pro, quindi lo strumento può confermare solo lo stato dell'interruttore nelle impostazioni.
Q. Quali client IA sono supportati?
A. Qualsiasi client che supporti il trasporto stdio di MCP (Model Context Protocol) dovrebbe funzionare in generale, anche oltre a quelli elencati sopra. Verificato con Claude Desktop, Claude Code, OpenAI Codex CLI, OpenCode e Antigravity.
Q. Antigravity mostra un errore «Hook Failure» o di telemetria durante l'esecuzione degli strumenti?
A. Un hook PreToolUse di plug-in esterni (come la telemetria di Google Cloud) in Antigravity potrebbe bloccare l'esecuzione. Apri ~/.gemini/config/plugins/.../hooks.json e imposta "enabled": false.
Q. Posso inviare richieste anche quando la connessione di rete è interrotta?
A. Sì, se utilizzi un LLM locale (tramite OpenCode con Ollama o LM Studio), tutto viene elaborato al 100% sul Mac / Linux e funziona offline anche durante l'isolamento d'emergenza della rete. Se utilizzi un LLM cloud (come l'API Claude), passa a una connessione sicura come hotspot prima di consultare l'IA.