Service auto-hébergé
openclaw/imsg avatar
openclaw/imsg

imsg : un CLI Swift pour lire et envoyer des iMessage depuis macOS

CLI pour Messages.app d'Apple afin que votre agent puisse envoyer et recevoir des messages texte/iMessages.

1 328 étoiles180 forksSwiftMIT

En bref

De quoi s’agit-il ?
Lit la base de données Messages locale, diffuse les mises à jour et envoie via l'automatisation de Messages.app.
À qui s’adresse-t-il ?
Le projet est sous licence MIT et n'est pas affilié à Apple. Ses chemins de lecture évitent les frameworks privés, tandis que les fonctions avancées nécessitent un SIP désactivé et ne sont pas garanties sur les versions actuelles de macOS.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement Swift, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Lire, surveiller et envoyer des messages depuis le terminal

imsg est un CLI Swift pour macOS qui lit, surveille et envoie des iMessage et SMS depuis le terminal. Il lit directement la base de données Messages locale, envoie via l'automatisation de Messages.app et expose NDJSON et JSON-RPC pour les scripts et les agents. Le README résume tout en une phrase : lire directement, diffuser les mises à jour et demander à Messages.app d'envoyer. Le dépôt est openclaw/imsg, et les métadonnées indiquent 1 275 étoiles, 174 forks et 3 problèmes ouverts. Le projet n'est pas affilié à Apple. Les exemples de commandes du README incluent imsg chats --limit 10 --json, imsg history --chat-id 42 --limit 20 --attachments --json, imsg watch --chat-id 42 --reactions --json et imsg send --to "+14155551212" --text "on my way". Ce sont les seules commandes du README et elles montrent les quatre actions principales : lister les conversations, lire l'historique, surveiller les mises à jour et envoyer.

Installation et exigences macOS

L'installation sur macOS se fait via Homebrew : brew install steipete/tap/imsg. Le README montre imsg --version pour confirmer. macOS 14 ou plus est requis. Des versions macOS signées et des versions Linux x86_64 en lecture seule sont également disponibles sur GitHub Releases. Sous Linux, l'outil lit un chat.db copié depuis macOS ; il ne se connecte pas à iMessage et n'envoie pas de messages. Le README renvoie à un guide Linux séparé. Aucun autre chemin d'installation n'est documenté, donc Windows et d'autres plateformes ne sont pas couverts. La page d'accueil du projet est imsg.sh, qui héberge la documentation complète. Le README référence également des documents pour l'installation, les autorisations, l'historique, la surveillance, l'envoi, les pièces jointes, Linux et le dépannage.

Lire l'historique local et surveiller les mises à jour

Avant de lire, le terminal doit recevoir l'accès complet au disque dans Réglages Système sous Confidentialité et sécurité, puis être rouvert. Cela est nécessaire pour lire ~/Library/Messages/chat.db. Le démarrage rapide montre imsg chats --limit 3 pour lister les conversations et noter leurs id, puis imsg history --chat-id 42 --limit 10 pour lire les dix messages les plus récents. Les commandes de lecture ouvrent la base de données en mode lecture seule SQLite. La commande watch suit les événements du système de fichiers de la base de données et des WAL, avec un repli sur interrogation lorsque macOS abandonne un événement ou fait pivoter un fichier auxiliaire. Le README pointe vers un démarrage rapide de cinq minutes qui continue avec la surveillance en direct et l'envoi, ainsi que des documents séparés pour les conversations, les groupes, l'historique, la surveillance, les pièces jointes et les statistiques.

Envoyer des messages et autorisations requises

L'envoi et les tapbacks standard nécessitent l'autorisation Automatisation -> Messages en plus de l'accès complet au disque. L'accès aux contacts est facultatif et n'ajoute que des noms résolus. Pour les SMS, le transfert de messages texte doit être activé sur l'iPhone apparié. Le README note que imsg send utilise la surface AppleScript de Messages.app et ne peut pas forcer un numéro sortant particulier lorsque plusieurs numéros partagent un même identifiant Apple. Le guide des autorisations couvre les octrois de processus parent et les entrées TCC obsolètes, et le document de dépannage mappe les échecs courants à leur porte probable. Les exemples de commande d'envoi incluent --to avec un numéro de téléphone et --text avec un message. Le README mentionne également la prise en charge des tapbacks standard via la commande react.

Sortie NDJSON et transport JSON-RPC de longue durée

Le drapeau --json émet un objet JSON par ligne. La progression lisible par l'humain et les avertissements restent sur stderr, donc stdout peut être utilisé en toute sécurité pour le streaming. Le README montre comment diriger des commandes finies via jq -s pour obtenir un tableau unique. Le schéma JSON documente les conversations, messages, pièces jointes, réactions, sondages, messages planifiés et statistiques. imsg rpc démarre un transport stdio de longue durée pour les agents et les passerelles, et imsg completions llm génère une aide CLI prête pour les modèles. La référence JSON-RPC couvre le transport en détail. Le README suggère de les utiliser avec jq et d'autres outils scriptables.

Fonctionnalités avancées et assistant injecté

Les flux de travail normaux tels que les conversations, l'historique, la surveillance, l'envoi, les réactions et le RPC en lecture seule n'utilisent pas de frameworks privés ni d'injection de processus. Les fonctionnalités avancées, notamment les accusés de lecture, les indicateurs de frappe, les envois enrichis, la modification de messages, les autocollants, les sondages et la gestion des conversations, utilisent un assistant injecté dans Messages.app. Ces fonctionnalités nécessitent la désactivation du SIP et peuvent être bloquées par la validation de bibliothèque ou les vérifications d'autorisations privées sur les versions actuelles de macOS. Le README oriente vers le guide advanced-imcore et la référence de commande bridge pour la surface CLI complète et la disposition IPC.

Conclusion éditoriale

Le projet est sous licence MIT et n'est pas affilié à Apple. Ses chemins de lecture évitent les frameworks privés, tandis que les fonctions avancées nécessitent un SIP désactivé et ne sont pas garanties sur les versions actuelles de macOS. Sur macOS, vérifiez imsg chats --limit 10 --json puis imsg history --chat-id 42 --limit 20 --attachments --json; ne testez imsg send qu'avec un numéro de test.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté