Maestrale
Icona di Maestrale

Il vento che mette in ordine il Mac.

Il maestrale spazza via le nuvole e lascia il cielo terso. Maestrale è un'app macOS indipendente e open source, scritta in Swift 6 e SwiftUI, che riunisce in una sola finestra pulizia, spazio, applicazioni, protezione e velocità del Mac. Ogni operazione parte da un clic, si vede prima di essere eseguita e finisce nel log.

macOS 14 o successivo · firmata ad-hoc: al primo avvio clic destro → Apri

Maestrale, schermata Smart Care: pulizia, protezione, aggiornamenti, prestazioni e spazio riassunti in cinque schede
16moduli nella barra laterale
14controlli di Protezione
140test automatici
~10krighe di Swift
MITlicenza, codice su GitHub
0telemetria, abbonamenti, demoni
Funzioni

Pulizia, spazio, applicazioni, protezione: modulo per modulo.

La barra laterale è divisa in quattro aree: Pulizia, Spazio, Applicazioni, Protezione e velocità. Ogni modulo produce un elenco di categorie e voci con dimensione, rischio e preselezione; l'interfaccia è la stessa per tutti.

Pulizia sistema

Cache utente e di sistema, cache delle app e degli strumenti di sviluppo, log, file di Xcode: ciò che macOS e le app ricreano da sole.

  • Esclusioni intelligenti: le cache delle app aperte restano, anche dentro il loro container.
  • Rischio alto mai preselezionato: cache e log di sistema si attivano a mano.
  • Seleziona tutto, filtro, scansiona di nuovo in ogni elenco.
Pulizia sistema con 7 gruppi di cache e log

Space Lens

La mappa del disco cartella per cartella, come treemap e come elenco. Doppio clic per entrare, selezione multipla, rimozione diretta nel Cestino.

  • Cartella Inizio o qualunque cartella a scelta.
  • Seleziona tutto / Deseleziona tutto sull'elenco di destra.
  • Completano l'area Spazio: File grandi e vecchi, Duplicati, Immagini simili.
Space Lens: treemap della cartella Inizio, 226 GB in 1,9 milioni di file

Disinstallazione

Scegli un'app e vedi tutto ciò che ha sparso nel sistema: bundle, Application Support, Containers, preferenze, cache, launch agent.

  • Il bundle è sempre preselezionato, i dati utente mai.
  • App di root (per esempio Slack in /Applications): rimosse con la password tramite l'helper privilegiato.
  • Elenco ridimensionabile, ordinamento per dimensione, nome o ultimo uso.
Disinstallazione: Visual Studio Code con i suoi 5 elementi e 958 MB selezionati

Aggiornamenti e avanzi

App Store, Sparkle e Homebrew in una sola lista. Quando aggiorni un'app, la voce sparisce da sola: l'elenco rilegge le versioni installate ogni volta che torni in primo piano.

  • Niente falsi positivi: le voci dello Store che richiedono un macOS più recente e i cask già aggiornati dall'app stessa non compaiono.
  • Avanzi di app rimosse: cartelle che nessuna app, helper, processo o servizio launchd reclama più, con l'età dell'ultima modifica.
Aggiornamenti disponibili da App Store, Sparkle e Homebrew

Prestazioni, con i numeri veri

Libera la RAM, elimina le istantanee locali di Time Machine, svuota la cache DNS, reindicizza Spotlight, ripara i permessi, velocizza Mail.

  • Ogni scheda dice cosa è cambiato: "File in cache: 4,28 GB → 1,29 GB · liberati 2,99 GB".
  • Errori con il motivo, non un generico "non riuscito".
  • Se non c'è niente da fare, lo dice prima di chiedere la password.
Prestazioni in tema scuro: la scheda Libera RAM riporta File in cache 4,28 GB → 1,29 GB, liberati 2,99 GB, fatto alle 21:38

Smart Care

Una scansione che tocca pulizia, protezione, aggiornamenti e prestazioni e riassume tutto in una schermata. Niente viene rimosso senza conferma.

  • Avanzamento visibile per ogni operazione lunga: elementi e byte fatti, elemento in corso, tempo, "Interrompi".
  • Monitor nella barra dei menu e scansioni pianificate.
  • Modalità predefinita a scelta: Cestino, eliminazione, prova.
Smart Care: riepilogo di pulizia, protezione, aggiornamenti, prestazioni e spazio
Protezione

Quattordici controlli, zero download.

La scansione standard non chiede mai la password. I risultati sono filtrabili per gravità e categoria, con ricerca e vista "solo nuovi". I file sospetti finiscono in quarantena, con ripristino.

Protezione: risultati a due colonne con filtri per gravità e categoria
⏻

Avvio e persistenza

Elementi di login, launch agent e daemon, cron e file di shell, profili di configurazione.

🧩

Estensioni

Estensioni di sistema e kernel, estensioni dei browser con l'origine presa dalle preferenze del profilo, dirottamento del browser.

🌐

Rete e fiducia

Configurazione di rete, certificati radice, permessi TCC, firme delle app, installazioni recenti.

🛡

Difese del sistema

XProtect e postura di sicurezza: SIP, Gatekeeper, FileVault, firewall, aggiornamenti automatici.

Y

YARA e liste di hash

libyara compilata nel pacchetto. Le regole le aggiungi tu dalle Impostazioni, con lo SHA-256 da confrontare: l'app non scarica nulla.

⌁

Attività e Privacy

Processi per CPU, memoria, energia e rete. Cronologia, cookie, elementi recenti, reti Wi-Fi, permessi: con copia di sicurezza prima di cancellare.

Com'è fatto

Un core piccolo, un modulo per funzione, un solo eseguibile che tocca il sistema.

Swift Package con tre librerie e due eseguibili, più l'app SwiftUI. Nessuna dipendenza esterna oltre a libyara.

Maestrale.appSwiftUI, macOS 14+, Swift 6 con strict concurrency. Barra laterale, elenchi, Smart Care, barra dei menu, impostazioni.
MaestraleCoreRuleEngine, SafeRemover, PinnedFileSystem, log delle operazioni, modelli di scansione.
MaestraleModulesUn tipo per modulo (pulizia, cestini, Space Lens, duplicati, disinstallazione, aggiornamenti, protezione, privacy, prestazioni…).
CYaralibyara 4.5.4 senza OpenSSL e senza scansione dei processi.
mshelperL'unico codice che tocca i file di sistema come root. Copiato in una cartella di sola proprietà di root, verificato con SHA-256, poi eseguito.
mscliLe stesse scansioni da Terminale, in sola lettura.

Le specifiche funzionali in docs/spec/ descrivono ogni modulo: cosa cerca, cosa preseleziona, cosa non tocca mai. Le regole sono scritte sulla conoscenza pubblica di macOS. L'ultimo ciclo di lavoro è documentato con il metodo BMAD in docs/bmad/: brief, PRD, architettura, storie e QA.

Sicurezza

Progettato per non perdere niente.

Un'app che cancella file deve sbagliare dalla parte giusta. Queste regole valgono in tutti i moduli.

Cestino di default

I file vanno nel Cestino; c'è una modalità "Prova" che non rimuove nulla. Nel Cestino un elemento esistente non viene mai sostituito.

Cartelle consentite

SafeRemover rimuove solo dentro un elenco di cartelle, risolve i symlink prima del controllo e rifiuta i file protetti da SIP.

Operazioni chiuse

Le azioni da amministratore sono un elenco fisso. L'helper lavora relativamente a descrittori aperti da /: uno scambio di cartelle durante la richiesta della password fa fallire l'operazione.

Tutto è dato, niente è codice

Plist, manifest, script, output dei comandi e regole YARA vengono parsati con limiti di dimensione e mai eseguiti.

Copia prima di cancellare

I database dei browser sono copiati con SQLite (VACUUM INTO) e riletti prima di toccare l'originale. I duplicati sono ricontrollati prima della pulizia.

Log di ogni operazione

Riuscite o rifiutate, tutte le operazioni finiscono in ~/Library/Logs/Maestrale/operations.log.

Installazione

Scarica il DMG, o compila in tre comandi.

Dal DMG: scarica l'ultima release, trascina Maestrale in Applicazioni. L'app è firmata ad-hoc e non notarizzata, quindi al primo avvio macOS la blocca: clic destro → Apri → Apri, una volta sola (oppure xattr -dr com.apple.quarantine /Applications/Maestrale.app). Poi concedi l'Accesso completo al disco in Impostazioni di Sistema → Privacy e sicurezza. Accanto al DMG c'è il file .sha256 per verificarlo.

Da sorgente: servono Xcode e XcodeGen (brew install xcodegen); non serve un account Apple Developer.

git clone https://github.com/nicomil/maestrale.git && cd maestrale
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

xcodegen generate
xcodebuild -project Maestrale.xcodeproj -scheme Maestrale \
  -configuration Release -derivedDataPath build/DerivedData build
ditto build/DerivedData/Build/Products/Release/Maestrale.app /Applications/Maestrale.app

# test della logica (129 test; altri 11 nel target MaestraleTests)
(cd Packages/MaestraleKit && swift test)
Galleria

Le altre schermate.