Skip to content
Projets

iliyami/MacSai has 2,133 GitHub stars and 133 forks. GitHot measured +69 in 7 days. Last checked 2026-11-09 21:24 UTC. Last push 2026-10-29.

Comment ces chiffres sont mesurés

Mac Sai est un logiciel libre qui nettoie et optimise les Mac et détecte les logiciels malveillants. Développé avec Swift 6 et SwiftUI, il constitue une alternative gratuite à CleanMyMac et est notarié par Apple.

What you can do

  • 🧹 Cleanup Smart Scan (one click) System Junk (16+ categories) Mail Attachments Trash Bins Project Junk (build folders) Disk Hogs (Docker, simulators) Clean History (one-click Restore) - 🛡️ Protection Malware Removal Privacy (browsers) Browser Extensions Saved Wi-Fi Permissions Overview - ⚡ Performance Optimization (login items) Maintenance (system tasks)

Progression mesurée des étoiles

in 24h
Mise à jour retardée
in 7 days
+69
in 15 days
Mise à jour retardée
in 1 month
Mise à jour retardée

Variations nettes sur des périodes qui se chevauchent, pas des totaux quotidiens. Les mesures absentes restent vides. Les étoiles indiquent l’intérêt, pas la qualité.

README.fr.md

Original

Mac Sai Icon

Mac Sai

Le nettoyeur, optimiseur et scanner de logiciels malveillants open source pour Mac.
Une alternative gratuite et notariée par Apple à CleanMyMac, conçue avec Swift 6 et SwiftUI.
Téléchargé plus de 100 000 fois. Gratuit pour toujours, sans télémétrie.

English | 简体中文 | 繁體中文 | Deutsch | Français | Русский

Total downloads GitHub stars Homebrew installs Latest release Commit activity
Notarized No telemetry macOS 14+ Swift 6 Tests License

Mac Sai Screenshot

Installez en une commande :

brew install --cask mac-sai

Ou récupérez le dernier DMG. Il est notarié par Apple, il s'ouvre donc directement, sans clic droit, sans avertissement, sans Terminal.

Jamais de pub dans l'application. Cette page propose un seul emplacement sponsor sélectionné, et il est libre.


Pourquoi Mac Sai ?

Un nettoyeur Mac complet ne devrait pas coûter un abonnement annuel ni vous demander de faire confiance à une boîte noire disposant d'un accès étendu à vos fichiers. Mac Sai vous offre toute la boîte à outils, à découvert.

  • Gratuit, pour toujours. Pas d'abonnement, pas d'achats intégrés, pas de « passage à Pro », pas de fenêtres insistantes. Sous licence BSD-3.
  • Zéro télémétrie. Pas d'analytique, pas de rapport de plantage, pas de traqueurs, aucun serveur où téléphoner. Et vous n'avez pas à nous croire sur parole, vérifiez-le vous-même en deux commandes.
  • Chaque outil majeur de CleanMyMac, dans une seule app. 22 modules couvrant le nettoyage, la protection, les performances, les applications et l'analyse du disque, plus un widget dans la barre des menus.
  • Sûr par conception. Suppression d'abord vers la corbeille, une liste de chemins protégés, des protections contre les liens symboliques et TOCTOU, et un SafetyGuard qui valide chaque chemin. Conçu pour ne jamais perdre vos données.
  • Notarié par Apple et entièrement open source. Votre Mac vérifie la signature à chaque lancement, et chaque ligne est ici, à lire.

Fonctionnalités en un coup d'œil

🧹 Nettoyage

  • Smart Scan (un clic)
  • System Junk (16+ catégories)
  • Mail Attachments
  • Trash Bins
  • Project Junk (dossiers de build)
  • Disk Hogs (Docker, simulateurs)
  • Clean History (restauration en un clic)

🛡️ Protection

  • Malware Removal
  • Privacy (navigateurs)
  • Browser Extensions
  • Saved Wi-Fi
  • Permissions Overview

⚡ Performances

  • Optimization (objets d'ouverture)
  • Maintenance (tâches système)

📦 Applications

  • Uninstaller (+ Réinitialiser aux valeurs par défaut)
  • Unused Apps
  • Extensions (volets, modules)
  • Updater

🗂️ Fichiers

  • Space Lens (treemap du disque)
  • Large & Old Files
  • Duplicates (+ Consolider)
  • Shredder

📊 Barre des menus

  • CPU / mémoire / disque / batterie en direct
  • Réseau, temps de fonctionnement, swap
  • Recommandations actionnables

Fonctionnalités en détail

🧹 Nettoyage

Module Ce que ça fait
Smart Scan Un clic exécute ensemble les modules de nettoyage, de protection et de performances avec une progression en direct, puis montre exactement ce qui a été libéré par module
System Junk 16+ catégories de scan : caches utilisateur et système, journaux, fichiers de langue, préférences corrompues, objets d'ouverture invalides, versions de documents, sauvegardes iOS, résidus Xcode, caches des gestionnaires de paquets / IDE / outils d'IA, restes d'utilisateurs supprimés, ainsi que l'amincissement des binaires universels (repère les binaires Mach-O gras contenant à la fois arm64 et x86_64 et les réécrit pour votre architecture native via lipo, en respectant l'annulation)
Mail Attachments Trouve les pièces jointes mises en cache par Apple Mail, Outlook et Spark
Trash Bins Vide la corbeille à chaque emplacement, y compris sur les disques externes
Project Junk Trouve les dossiers de build régénérables dans vos projets : node_modules, .next, dist, target de Rust et Maven, build de Gradle, environnements virtuels Python et Pods de CocoaPods. Un dossier ne compte que si les fichiers voisins confirment le type de projet, et dist et Pods seulement si votre .gitignore les nomme. Tout part à la corbeille
Disk Hogs Montre l'espace occupé par Docker et les simulateurs Xcode. Supprime les conteneurs arrêtés, les images orphelines et le cache de build orphelin (chacun après une confirmation), et supprime les simulateurs indisponibles et les anciens runtimes de simulateur. Les volumes Docker et le runtime le plus récent de chaque plateforme ne sont jamais touchés
Clean History Liste vos nettoyages récents (les 30 derniers jours, jusqu'à 20) et remet un nettoyage entier hors de la corbeille en un clic. L'historique reste sur votre Mac dans ~/Library/Logs/MacClean/clean-history.json, lisible uniquement par votre compte utilisateur, et n'est jamais envoyé nulle part

🛡️ Protection

Module Ce que ça fait
Malware Removal Analyse par signatures à 3 profondeurs (Rapide / Équilibré / Approfondi) : agents et démons de lancement, paquets d'apps, extensions de navigateur et motifs connus d'adware/malware. Correspondance exacte de hachages avec les signatures Apple XProtect déjà présentes sur votre Mac, hors ligne, plus un flux optionnel de hachages MalwareBazaar (abuse.ch). Les extensions Safari de la liste de blocage d'Apple et les correspondances MalwareBazaar sont listées pour vérification, jamais présélectionnées (pas un antivirus, et il le dit)
Privacy Nettoie l'historique, les cookies et le cache de Safari, Chrome et Firefox, avec des filtres temporels. Les favoris de Safari ne sont jamais touchés
Browser Extensions Liste les extensions installées dans Safari, Chrome, Brave, Edge, Arc et Firefox. Les extensions Chromium et Firefox que vous avez installées vous-même peuvent aller à la corbeille quand le navigateur est fermé ; celles installées par une stratégie ou par le navigateur lui-même sont affichées mais laissées intactes. Les extensions Safari renvoient vers les réglages de Safari
Saved Wi-Fi Liste vos réseaux sans fil préférés et oublie ceux que vous choisissez
Permissions Overview Une vue en lecture seule, par app, des autorisations de confidentialité (TCC) détenues par chaque app, l'angle que les Réglages Système ne vous donnent pas. Chaque action renvoie vers les Réglages Système, qui possèdent les interrupteurs

⚡ Performances

Module Ce que ça fait
Optimization Gère les objets d'ouverture et les agents de lancement avec activation/désactivation par élément
Maintenance Tâches système : libérer la RAM, exécuter les scripts de maintenance, vérifier le disque de démarrage, reconstruire Launch Services, réindexer Spotlight, vider le DNS, amincir les instantanés Time Machine. Les tâches sont étiquetées par gravité, « Exécuter les tâches sûres » est séquentiel, et le mot de passe administrateur est demandé une seule fois

📦 Applications

Module Ce que ça fait
Uninstaller Un moteur de correspondance par motifs qui trouve chaque fichier associé dans 17+ sous-dossiers de Library (y compris les apps imbriquées dans des sous-dossiers d'éditeur). Suppression complète, Réinitialiser aux valeurs par défaut (effacer les caches et préférences d'une app tout en la conservant) et détection des apps inutilisées
Unused Apps Trouve les apps que vous n'avez pas ouvertes depuis 3, 6 ou 12 mois, d'après la date de dernière utilisation de Spotlight, triées par taille. Les apps en cours d'exécution ne sont jamais listées, et quand Spotlight n'a pas de données d'utilisation, il le dit au lieu de deviner. Un clic confie une app à l'Uninstaller
Extensions Passez en revue les volets de préférences tiers, les modules Internet et les extensions Safari. Les volets et modules installés par l'utilisateur peuvent aller à la corbeille
Updater Vérifie les mises à jour des apps installées via leurs propres flux d'appcast Sparkle (lit uniquement les informations de version, n'envoie rien vous concernant)

🗂️ Fichiers

Module Ce que ça fait
Space Lens Visualisation en treemap carré de l'utilisation du disque avec navigation par exploration
Large & Old Files Trouve les fichiers de plus de 50 Mo, triés par taille et date de dernier accès
Duplicates Détection progressive (regroupement par taille, SHA-256 partiel, hachage complet, vérification d'inode), plus un mode Consolider qui récupère de l'espace avec des clones APFS en copie sur écriture sans supprimer une seule copie
Shredder Effacement sécurisé de fichiers avec les modes standard, permanent et réécriture sécurisée

📊 Widget de la barre des menus

Mac Sai menu bar widget

Un widget de barre des menus au style glassmorphisme qui met les constantes vitales de votre Mac à un clic. C'est un processus indépendant qui se lance à l'ouverture de session et se bascule depuis la barre latérale de l'app, vous n'avez donc jamais à ouvrir la fenêtre principale juste pour jeter un œil.

  • Anneaux de statistiques en direct : charge CPU, pression mémoire, utilisation du disque et batterie dans une grille d'anneaux 2x2 (host_processor_info, vm_statistics64, capacité APFS, source d'alimentation IOKit), graduée en couleur du vert à l'ambre au rouge
  • Affichage configurable : montrez l'espace disque libre, l'utilisation du GPU, l'utilisation de la mémoire ou la température de la batterie ; le choix persiste, et les capteurs indisponibles affichent --
  • Réseau, temps de fonctionnement et swap : débit montant/descendant en temps réel, temps de fonctionnement du système, utilisation du swap
  • Recommandations : conseils actionnables et masquables (« Les caches utilisateur ont atteint 2,52 Go, lancez System Junk »), une touche pour agir, supprimés pendant 30 jours une fois masqués
  • Statut de protection : heure du dernier scan de logiciels malveillants et nombre de menaces, codé en couleur selon la fraîcheur
  • Appareils connectés : volumes externes (avec espace libre) et écrans en un coup d'œil
  • Alertes de santé : notifications limitées et optionnelles lorsque le disque devient critiquement plein ou que la pression mémoire reste élevée

⌨️ Raccourcis clavier

Raccourci Action
⌘R Démarrer un scan dans le module actuel
⌘K Nettoyer la sélection actuelle (quand des résultats sont affichés)
⌘1 à ⌘9 Sauter aux neuf premiers modules de la barre latérale
⌘, Ouvrir les Réglages

Comment Mac Sai se compare

Mac Sai CleanMyMac Pearcleaner PureMac OnyX Mole
Prix Gratuit 39,95 $/an Gratuit Gratuit Gratuit Gratuit (CLI)
Open source ✅ BSD-3 ❌ ✅ Fair-code ✅ MIT ❌ ✅ MIT
Télémétrie ❌ Aucune ⚠️ Oui ❌ Aucune ❌ Aucune ❌ Aucune ❌ Aucune
App GUI native ✅ ✅ ✅ ✅ ✅ ❌ CLI (GUI payante séparée)
Smart Scan (un clic) ✅ ✅ ❌ ➖ Partiel ❌ ➖ CLI interactive
System Junk (16+ catégories) ✅ ✅ ➖ ✅ ➖ Limité ✅
Amincissement des binaires universels ✅ ✅ ❌ ❌ ❌ ❌
Scanner de logiciels malveillants ✅ ✅ ❌ ❌ ❌ ❌
Nettoyeur de confidentialité des navigateurs ✅ ✅ ❌ ❌ ➖ ❌
Désinstalleur avec détection des restes ✅ ✅ ✅ Spécialisé ❌ ❌ ✅
Recherche de doublons (+ consolidation) ✅ ➖ ❌ ❌ ❌ ❌
Visualiseur treemap du disque ✅ ❌ ❌ ❌ ❌ ➖ Analyseur
Moniteur système dans la barre des menus ✅ ✅ Menu ❌ ❌ ❌ ❌
Scripts de maintenance ✅ ✅ ❌ ❌ ✅ Robuste ➖
Notarié par Apple ✅ ✅ ✅ ✅ ✅ N/D
Version de macOS 14+ 13+ 13+ 13+ variable variable

CleanMyMac est un excellent produit, et ceux qui veulent une expérience soignée et prise en charge devraient volontiers payer pour cela. Mac Sai est pour tous ceux qui préfèrent un code source transparent et zéro abonnement.


Langues de l'interface

Choisissez System, Deutsch, Français, Русский, 简体中文, 繁體中文 ou English dans Réglages → Langue de l'interface. L'allemand, le français et le chinois traditionnel traduisent les textes statiques de l'interface ; les messages interpolés conservent pour l'instant le texte anglais et ses règles de pluriel (le chinois traditionnel se rabat sur le simplifié). La fenêtre principale et le widget de la barre des menus partagent le réglage de langue.

Installation

Homebrew (recommandé)

Mac Sai est dans le cask Homebrew officiel, aucun tap n'est donc nécessaire :

brew install --cask mac-sai

Il est notarié par Apple, il se lance donc depuis Spotlight ou le dossier Applications sans avertissement et sans étape supplémentaire.

Autres façons d'installer (script en une ligne, DMG, compilation depuis les sources)

Installateur en une ligne

curl -fsSL https://raw.githubusercontent.com/iliyami/MacSai/main/scripts/install.sh | bash

Télécharge le dernier DMG et installe l'app dans /Applications.

Téléchargement du DMG

Récupérez le dernier DMG depuis les Releases et glissez Mac Sai dans votre dossier Applications.

Compiler depuis les sources

git clone https://github.com/iliyami/MacSai.git
cd MacSai
swift build
swift test                     # exécuter la suite complète de 1048 tests
bash scripts/build-dmg.sh      # compiler un DMG local (non signé)

Nécessite la chaîne d'outils Swift 6 (Xcode 16+).

Installé via l'ancien tap ?

Mac Sai est maintenant dans le cask officiel, vous pouvez donc retirer le tap : brew untap iliyami/macsai (votre app installée et les futurs brew upgrade ne sont pas affectés).

Accorder l'accès complet au disque

Quelques modules (Mail Attachments, Privacy, Malware) ont besoin de l'accès complet au disque pour scanner les zones protégées :

  1. Ouvrez Réglages Système, Confidentialité et sécurité, Accès complet au disque
  2. Cliquez sur + et ajoutez Mac Sai.app
  3. Redémarrez Mac Sai

Désinstaller

Installation Homebrew :

brew uninstall --zap --cask mac-sai

Installation DMG ou manuelle (gère aussi une installation Homebrew) :

curl -fsSL https://raw.githubusercontent.com/iliyami/MacSai/main/scripts/uninstall.sh | bash

Les deux retirent Mac Sai ainsi que ses préférences, caches, journaux et base de données sous ~/Library.


Signé, notarié, et digne de votre confiance

Mac Sai est signé avec un Developer ID Apple et notarié par Apple. Cela compte davantage pour une app de nettoyage que pour presque tout ce que vous installez, car vous êtes sur le point de lui donner un accès étendu à vos fichiers, et vous méritez de savoir que ce qui s'exécute sur votre Mac est vraiment le nôtre et non altéré. Tout cela est imposé par votre propre Mac, pas seulement promis par nous :

  • Apple l'a analysé. Chaque version est soumise à Apple et vérifiée contre les logiciels malveillants avant d'être publiée.
  • Il ne peut pas être altéré. La signature est un sceau cryptographique sur chaque fichier ; changez un seul octet et macOS refuse de l'ouvrir.
  • Il provient incontestablement de nous. La signature est liée à notre identité Apple Developer, personne d'autre ne peut donc publier quelque chose que votre Mac accepte comme Mac Sai.
  • Ça marche, tout simplement. Pas d'avertissement Gatekeeper, pas de clic droit pour ouvrir, pas de Terminal.

Associé à un code entièrement open source, c'est une chaîne de confiance que vous ne prenez pas sur parole : le code est public, nous signons chaque version, Apple la vérifie, et votre Mac revérifie le sceau à chaque ouverture de l'app.

Vérifiez l'absence de télémétrie vous-même

Ne nous croyez pas sur parole. Le code source comme le processus en cours d'exécution sont vérifiables.

1. Cherchez dans le code les API réseau

rg -n 'URLSession|NSURLConnection|Sparkle|SecTrustEvaluate' Sources --glob '*.swift'

Les accès réseau facultatifs sont indiqués ci-dessous. Le nettoyage local n’envoie ni résultats d’analyse ni listes de fichiers :

  • Sources/MacClean/Services/SelfUpdateController.swift: Sparkle consulte le flux HTTPS inscrit dans l’application signée et télécharge les notes de version et les archives de mise à jour signées. La recherche automatique et le téléchargement/installation automatiques sont des réglages distincts ; le profilage système et JavaScript dans les notes sont désactivés. Voir la configuration des mises à jour. Pour les installations directes configurées, la recherche automatique des mises à jour est activée par défaut et a lieu une fois par jour ; chaque requête contient les versions de l’application et de Sparkle dans le User-Agent, et cette recherche peut être désactivée dans Réglages.
  • Sources/MacCleanKit/UpdateChecker.swift: les vérifications Homebrew et la page des versions en solution de repli pour les builds sans flux signé configuré
  • Sources/MacClean/Modules/Updater/UpdaterModule.swift : la vérification, déclenchée par l'utilisateur, des flux Sparkle d'autres apps lorsque vous ouvrez l'Updater
  • Sources/MacCleanKit/MalwareBazaarFeed.swift : le téléchargement optionnel des hachages MalwareBazaar. Il ne s'exécute que si vous ajoutez votre propre Auth-Key abuse.ch et cliquez sur Mettre à jour maintenant dans Réglages > Bases de logiciels malveillants. Chaque requête n'envoie que votre Auth-Key et la requête, jamais de hachages ni de chemins de fichiers. Lorsqu'un hachage téléchargé correspond à un fichier signé, macOS demande à Apple si son certificat de signature a été révoqué, la même vérification que celle de Gatekeeper ; cette requête porte sur le certificat, pas sur vos fichiers

Il n'y a aucun SDK d'analytique, de rapport de plantage ou de traqueur nulle part dans le code.

2. Observez le processus en direct

(
MACSAI_APP=$(cd "/Applications/Mac Sai.app" && pwd -P) || exit 1
MACSAI_PIDS=$(ps -ww -axo pid=,comm= | awk -v bundle="$MACSAI_APP/" '
  { pid=$1; sub(/^[[:space:]]*[0-9]+[[:space:]]+/, "")
    if (index($0, bundle) == 1) print pid }' | paste -sd, -)
if [ -n "$MACSAI_PIDS" ]; then
  ps -p "$MACSAI_PIDS" -o pid=,comm=
  lsof -nP -a -p "$MACSAI_PIDS" -i
else
  echo "No running executables from this Mac Sai bundle"
fi
)

Cet instantané sélectionne les PID selon le chemin des exécutables dans le paquet choisi, ce qui exclut les processus Installer/Updater sans rapport. Les assistants Sparkle copiés ailleurs et les services de confiance de macOS sont hors de cette sélection ; utilisez un pare-feu qui distingue les processus pour les observer. Exécutez la commande pendant une recherche ou un téléchargement pour voir les connexions brèves.

Lorsque les vérifications/téléchargements de mises à jour et la vérification facultative des logiciels malveillants sont inactifs, le nettoyage local n’ouvre aucune connexion réseau. Pendant une mise à jour, observez aussi les sous-processus Sparkle ; les vérifications de certificats Apple passent par les services de confiance de macOS. Little Snitch ou LuLu permettent également de les visualiser.

3. Inspectez le binaire que vous avez réellement installé

Pour une installation par DMG ou Homebrew, cette boucle ne demande que les outils en ligne de commande de macOS, sans copie du code ni Python. Elle lit les sept binaires fournis et affiche les imports réseau courants, les URL statiques et les chaînes de traceurs pour une inspection manuelle :

(
MACSAI_APP="/Applications/Mac Sai.app"
MACSAI_SPARKLE="$MACSAI_APP/Contents/Frameworks/Sparkle.framework/Versions/B"
for MACSAI_BINARY in \
  "$MACSAI_APP/Contents/MacOS/MacClean" \
  "$MACSAI_APP/Contents/Library/LoginItems/MacCleanMenu.app/Contents/MacOS/MacCleanMenu" \
  "$MACSAI_SPARKLE/Sparkle" "$MACSAI_SPARKLE/Autoupdate" \
  "$MACSAI_SPARKLE/Updater.app/Contents/MacOS/Updater" \
  "$MACSAI_SPARKLE/XPCServices/Downloader.xpc/Contents/MacOS/Downloader" \
  "$MACSAI_SPARKLE/XPCServices/Installer.xpc/Contents/MacOS/Installer"
do
  printf '\n%s\n' "$MACSAI_BINARY"
  MACSAI_IMPORTS=$(nm -uj "$MACSAI_BINARY") || exit 1
  printf '%s\n' "$MACSAI_IMPORTS" | grep -Ei \
    'URLSession|URLConnection|CFNetwork|Network|nw_|DNSService|NetService|curl_|^_(socket|connect|connectx|send|recv)([$]|$)' || true
  MACSAI_STRINGS=$(strings -a "$MACSAI_BINARY") || exit 1
  printf '%s\n' "$MACSAI_STRINGS" | grep -Ei \
    '://|sentry|firebase|mixpanel|amplitude|bugsnag|crashlytics|posthog|appsflyer' || true
done
)

Ces listes ne constituent pas un verdict automatique ni la preuve que toutes les destinations choisies à l’exécution sont visibles. Utilisez le contrôle ci-dessous pour l’inventaire complet, les listes d’autorisation explicites et les réglages de confidentialité intégrés.

Exécutez le contrôle depuis une copie du code correspondant à la version installée. Il inspecte le véritable paquet de l’application : exécutable principal, assistant de barre des menus, Sparkle.framework, Autoupdate, Updater.app, Downloader.xpc et Installer.xpc :

bash scripts/check-network-surface.sh "/Applications/Mac Sai.app"

Résultat attendu : sept fichiers Mach-O vérifiés. Un binaire manquant ou inattendu, un import réseau ou une URL statique non autorisés, ou un marqueur de traqueur font échouer le contrôle. Les imports URLSession sont autorisés dans Mac Sai, son assistant de barre des menus, Sparkle et Downloader ; les autres assistants Sparkle n’ont aucun import réseau autorisé. Les liens de documentation et l’espace de noms XML de Sparkle sont explicitement répertoriés, sans être considérés comme des adresses de téléchargement.

Le script affiche aussi la SUFeedURL intégrée et vérifie l’exigence de signature du flux, la vérification avant extraction et les réglages de confidentialité. Comparez les adresses d’archives/notes de ce flux et les flux des autres apps que vous consultez aux connexions observées. Les adresses de repli sont api.github.com/repos/iliyami/MacSai/releases/latest et formulae.brew.sh/api/cask/mac-sai.json ; celle de la base facultative est mb-api.abuse.ch/api/v1/. Les liens du projet, de soutien et des paramètres du navigateur s’ouvrent à votre demande. Le même contrôle du paquet complet s’exécute lors de sa création ; la CI vérifie les deux exécutables compilés et les cinq binaires de la version Sparkle épinglée. Implémentation et listes d’autorisation.


Architecture

Mac Sai
├── MacClean          App SwiftUI principale (22 modules)
├── MacCleanKit       Framework partagé (modèles, constantes, protocoles)
├── MacCleanHelper    Assistant XPC privilégié (LaunchDaemon pour les opérations root)
└── MacCleanMenu      Moniteur de barre des menus (processus indépendant)

Pile technique

Couche Technologie
Langage Swift 6 avec concurrence stricte
UI Hybride SwiftUI + AppKit
Concurrence Actors, TaskGroup, async/await, @Sendable
Base de données GRDB.swift (SQLite) en mode WAL
Analyse de fichiers Préchargement URLResourceKey sur APFS
Mises à jour incrémentielles FSEvents avec relecture historique
Opérations privilégiées SMAppService + NSXPCConnection
Statistiques système API Mach (host_processor_info, vm_statistics64, proc_pidinfo)

Modèle de sécurité

Mac Sai est conçu pour ne jamais causer de perte de données :

  • Liste de chemins protégés : /System, /usr, /bin, /sbin et les apps système Apple sont intouchables, les firmlinks macOS étant canonicalisés pour que la détection de redirection par lien symbolique ne déclenche pas de faux positif sur des chemins système légitimes
  • Filtre de nettoyabilité avant scan : les éléments que le processus actuel ne pourrait pas mettre à la corbeille (enfants appartenant à root des caches système, dossiers ~/Library/Caches/com.apple.* sous coffre de données) sont écartés au moment du scan pour ne jamais apparaître comme nettoyables
  • Suppression d'abord vers la corbeille : chaque suppression va à la corbeille par défaut, et un mode simulation prévisualise sans rien toucher
  • Prévention TOCTOU : les liens symboliques sont réévalués immédiatement avant la suppression
  • Dossiers exclus : choisissez dans les Réglages des dossiers que les scans ignorent entièrement, et SafetyGuard refuse en plus de supprimer quoi que ce soit en dessous
  • Nettoyage par lots annulable : les grandes sélections sont découpées en blocs de 5k éléments qui respectent l'annulation entre les blocs, et les scans reviennent au repos en une seconde environ lorsque vous cliquez sur Annuler
  • Journal d'activité intégré : chaque erreur durant un nettoyage est journalisée avec son chemin complet, consultable et copiable depuis l'écran post-nettoyage, purgé automatiquement après 30 jours
  • Barrière XPC imposée par le noyau : l'assistant privilégié utilise NSXPCListener.setCodeSigningRequirement afin que le noyau lui-même rejette toute connexion dont la signature de code ne correspond pas à l'identifiant et à l'équipe de l'app

Tests

swift test

La suite XCTest compte 1048 tests et traite SafetyGuard et CleaningEngine (les fichiers de vie ou de mort) comme devant être parfaits : couverture adversariale des liens symboliques, de la traversée de chemins, des octets NULL, de SIP, des apps protégées, des plafonds de nombre de fichiers, du TOCTOU et de l'idempotence, plus une couverture d'intégration du nettoyage en simulation / corbeille / permanent, de la machine à états du scan, de chaque catégorie de System Junk, des calculs de treemap, du moteur de correspondance du désinstalleur, de la détection des doublons, de l'analyse d'appcast, et de cycles complets de bout en bout de la préparation au nettoyage. Les fixtures (withTempHome, withFakeApp, withFakePlist) gardent chaque test hors de votre vrai dossier personnel.


Contribuer

Les contributions sont très bienvenues. Lisez les Directives de contribution, puis :

  1. Forkez le dépôt et créez une branche de fonctionnalité
  2. Faites votre modification (une modification ciblée par PR facilite la revue)
  3. Exécutez swift test
  4. Ouvrez une Pull Request

Il y a aussi un vote de fonctionnalités ouvert : mettez un 👍 sur les outils que vous voulez voir construits ensuite.

Licence

BSD 3-Clause. Voir LICENSE. Vous pouvez utiliser, modifier et redistribuer le code, à condition de conserver le texte de copyright et de licence et de ne pas utiliser le nom « Mac Sai » ni les noms des contributeurs pour promouvoir des produits dérivés sans autorisation.

Remerciements

Inspiré par la communauté open source des utilitaires Mac :

  • Pearcleaner : motifs du désinstalleur d'apps
  • Mole : catégories de nettoyage
  • Tencent Lemon Cleaner : architecture modulaire
  • Algorithme de treemap carré de Bruls, Huizing et van Wijk (2000)

Soutien et sponsors

Mac Sai est gratuit et le restera : pas de version payante, pas de pub, pas de pistage. S'il vous a évité un abonnement à un nettoyeur, vous pouvez m'offrir un café ☕ ou devenir membre. Cela permet de continuer à publier des versions signées et notariées.

Soutiens

Les membres reçoivent les coulisses du développement, un aperçu de chaque version, des bêtas sur demande et leur nom dans l'application. Rien dans l'application n'est jamais réservé aux membres.

Aucun membre pour l'instant. Soyez le premier →
Les membres Power User et Team sont remerciés ici. Tout le monde figure dans SUPPORTERS.md (en anglais).

Emplacement sponsor

Mac Sai propose un seul emplacement sponsor, affiché ici et en haut de cette page, dans toutes les langues de ce README.

100 000+

téléchargements

2 000+

étoiles GitHub

17 000

pages vues par mois

6

langues du README

La plupart des visiteurs sont des développeurs et des utilisateurs avancés de Mac, venus surtout de la recherche Google, puis de YouTube, GitHub et Reddit.

  • Un seul sponsor à la fois, pour que votre nom ne se perde pas dans un mur de logos.
  • Sélectionné. Outils pour développeurs, produits de confidentialité et de sécurité, et apps Mac qui respectent leurs utilisateurs. Pas de nettoyeurs ni d'« optimiseurs », pas de crypto, pas d'affiliation VPN, rien qui piste les gens.
  • Jamais dans l'application. Mac Sai n'a ni pub ni télémétrie, et aucun sponsor n'y changera rien.

Cet emplacement est libre. Devenir sponsor →
Audience et candidature : SPONSORS.md (en anglais)

Historique des étoiles

Mac Sai est un logiciel libre construit par la communauté, pour la communauté.
S'il vous a évité un abonnement, une ⭐ aide les autres à le trouver, et un café ☕ le fait vivre.

Explorer des projets similaires