Ce qui se passe
SCM, pour Screen Memories, est une application macOS présentée sur Hacker News le 4 octobre. Elle indexe les photos et vidéos d'un dossier et permet d'y chercher en langage naturel, sans compte ni envoi : les poids des modèles se téléchargent une fois, puis tout tourne sur le Mac. Version 0.2.4, Electron et React, avec Bun comme gestionnaire de paquets.
L'application compte moins que son architecture, qui range chaque question dans l'une de deux familles : ce qui relève du sens passe par des vecteurs, ce qui relève du texte se cherche littéralement.
Cinq modes de recherche
| Mode | Ce qu'il trouve | Technique |
|---|---|---|
| Files | une photo ou une vidéo entière | similarité cosinus sur les vecteurs d'image, bonus sur le nom de fichier |
| Scenes | un plan précis dans une vidéo | un vecteur par segment, ouverture au bon timecode |
| OCR | le texte visible à l'image | Tesseract, correspondance littérale |
| Dialogue | les mots prononcés | transcription Whisper, correspondance littérale |
| LLMs (option) | une réponse sourcée | llama.cpp local, sur ce qui a déjà été extrait |
Les modes OCR et Dialogue n'utilisent ni vecteurs ni seuils : ils répondent même quand le moteur de vision n'est pas prêt. Côté vecteurs, chaque modèle a son plancher de score calibré, et une recherche de scènes sans résultat convaincant répond « aucun plan » au lieu de remplir la grille, avec trois plans au plus par vidéo.
Ce que coûte chaque modèle
Quatre modèles de vision, exécutés par ONNX Runtime, au choix par bibliothèque :
| Modèle | Rôle | CPU | Poids |
|---|---|---|---|
| CLIP ViT-L/14@336 (défaut) | recherche de scènes | ~480–570 ms/image | ~435 Mo |
| SigLIP-2-B/16 | import en masse | ~50–100 ms/image | ~412 Mo |
| SigLIP-2-L/16@256 | petits objets, texte à l'écran | ~200 ms/image | ~850 Mo |
| SigLIP-B/16@384 | détail maximal | ~480 ms/image | ~214 Mo |
Changer de modèle recalcule les vecteurs de toute la bibliothèque, en tâche de fond ; la recherche se rabat sur les noms de fichiers en attendant.
Les vidéos
ffmpeg repère les changements de plan, puis échantillonne selon un préréglage :
Eco, un point toutes les 60 s (4 à 32 segments) ; Balanced, par défaut, toutes
les 30 s (8 à 128) ; Detailed, 15 s ; Ultra, 5 s ; Ultra Pro, 2,5 s, jusqu'à
2 048 segments. Chaque segment est représenté par son image centrale, et le
découpage est mis en cache par fichier. La parole passe par Whisper tiny.en
(~150 Mo) ou base.en (~300 Mo).
Le chat, désactivé par défaut, s'appuie sur Qwen3 1.7B (~1,1 Go, tient sur un Mac de 8 Go) ou Llama 3.2 3B (~2 Go), servis par llama.cpp sur la boucle locale, avec des citations numérotées.
Comment s'y prendre
brew tap allenv0/scm
brew trust --cask allenv0/scm/scm # confiance limitée au cask, pas au tap entier
brew install --cask scmApple Silicon, macOS 12 ou plus. Les données vivent dans
~/Library/Application Support/scm (variable MEMORIES_DATA_DIR).
Les limites
- Le cask retire l'attribut de quarantaine à chaque installation et mise à jour : l'app se lance sans le contrôle de Gatekeeper. C'est le but annoncé, et c'est précisément la vérification que l'on contourne.
- Les médias sont copiés dans la bibliothèque de l'app : prévoir le disque.
- Application jeune, macOS seulement.
Source : allenv0/SCM, dépôt GitHub, présenté sur Hacker News le 4 octobre 2026.