J'ai créé Jimmy pour un besoin très concret : appeler un modèle depuis un script sans ouvrir une interface web ni installer un SDK complet. C'est une petite CLI open source qui parle à ChatJimmy.ai et laisse la sortie se brancher sur les outils Unix ou PowerShell.
Je la garde volontairement simple : une commande, une entrée, une sortie exploitable.
Qu'est-ce que "Jimmy" exactement ?
Le projet Jimmy se définit comme une CLI minimaliste et "workflow-friendly". L'objectif ici n'est pas de t'encombrer avec une énième interface graphique lourde, mais de te donner un moyen direct de discuter avec un LLM (Large Language Model) depuis n'importe quel environnement de travail.
Zéro dépendance
Pour fonctionner, Jimmy s'appuie uniquement sur des outils standards que tu as très probablement déjà sur ta machine : curl pour taper l'API via HTTP et python3 (>= 3.6) pour parser proprement les retours JSON. Petit bonus : l'outil jq est aussi supporté pour formater les retours sur les systèmes Unix si tu l'as d'installé.
Support multi-plateforme
Le repo te propose deux scripts prêts à l'emploi :
jimmy.sh(compatible Bash et Zsh) pour tes environnements Unix/Mac.jimmy.ps1dédié à Windows (nécessite PowerShell 7+).
Conçu pour les pipelines
L'outil sépare la réponse sur stdout et les logs sur stderr. Tu peux donc chaîner la sortie dans jq, ConvertFrom-Json ou une autre commande sans mélanger le diagnostic et le résultat.
Analyse de fichiers locaux embarquée
Tu as besoin de résumer un document ou d'analyser un fichier de log craché par ton app ? Tu peux directement attacher un fichier texte (jusqu'à 50 Ko) dans ta commande grâce à l'argument --file.
Installation en une commande
Pas besoin de cloner tout le repo si tu veux juste tester. Tu peux récupérer le script directement et l'exécuter immédiatement.
Linux / macOS
curl -fsSL -o jimmy.sh https://raw.githubusercontent.com/benoitpetit/jimmy/main/jimmy.sh chmod +x jimmy.sh
Puis lance-le directement :
./jimmy.sh --chat "Hello Jimmy" --output raw --quiet
Windows (PowerShell 7+)
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/benoitpetit/jimmy/main/jimmy.ps1" -OutFile "jimmy.ps1"
Puis exécute :
.\jimmy.ps1 --chat "Hello Jimmy" --output raw --quiet
One-shot : zéro installation, zéro trace
Si tu veux juste tester Jimmy sans laisser le moindre fichier sur ta machine, voici des commandes one-shot qui téléchargent, exécutent et nettoient automatiquement dans un dossier temporaire.
Linux / macOS
bash -c 'd=$(mktemp -d) && curl -fsSL -o "$d/jimmy.sh" https://raw.githubusercontent.com/benoitpetit/jimmy/main/jimmy.sh && chmod +x "$d/jimmy.sh" && "$d/jimmy.sh" --chat "Explique la relativité restreinte en 2 phrases" --topk 8 --output raw --quiet; rm -rf "$d"'
Breakdown :
| Étape | Action |
|---|---|
mktemp -d | Crée un dossier temporaire unique |
curl -fsSL | Télécharge le script officiel |
chmod +x | Rend le script exécutable |
"$d/jimmy.sh" --chat ... --topk 8 | Exécute avec le prompt et le topK max |
rm -rf "$d" | Supprime le dossier temporaire = zéro trace |
Windows (PowerShell 7+)
powershell -Command "$d=[System.IO.Path]::GetTempPath() + [System.IO.Path]::GetRandomFileName(); New-Item -ItemType Directory -Path $d | Out-Null; $f='$d\jimmy.ps1'; Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/benoitpetit/jimmy/main/jimmy.ps1' -OutFile $f; & $f --chat 'Explique la relativité restreinte en 2 phrases' --topk 8 --output raw --quiet; Remove-Item -Recurse -Force $d"
Breakdown :
| Étape | Action |
|---|---|
GetTempPath() + GetRandomFileName() | Crée un dossier temporaire unique |
Invoke-WebRequest | Télécharge le script officiel |
& $f --chat ... --topk 8 | Exécute avec le prompt et le topK max |
Remove-Item -Recurse -Force | Supprime le dossier temporaire = zéro trace |
Comment ça marche ?
Quand tu lances une commande, Jimmy construit le payload JSON avec ton message, le modèle (par défaut llama3.1-8B), le systemPrompt éventuel et le contenu du fichier joint.
La réponse arrive en streaming. Le script la découpe pour extraire le texte et les statistiques disponibles, comme le nombre de tokens et la durée de la requête.
Exemples d'utilisation
Voici quelques commandes que j'utilise régulièrement :
Poser une question simple et récupérer du texte brut
# Linux / macOS ./jimmy.sh --chat "Explique-moi la théorie de la relativité restreinte en 2 phrases" --output raw --quiet # Windows .\jimmy.ps1 --chat "Explique-moi la théorie de la relativité restreinte en 2 phrases" --output raw --quiet
Chainer avec des outils de parsing
Grâce à la séparation stdout / stderr, tu peux pipe la réponse JSON sans problème :
# Linux / macOS avec jq ./jimmy.sh --quiet --chat "Quelle est la capitale de la France ?" | jq -r '.response' # -> Paris # Windows avec ConvertFrom-Json .\jimmy.ps1 --quiet --chat "Quelle est la capitale de la France ?" | ConvertFrom-Json | Select-Object -ExpandProperty response # -> Paris
Jouer avec les paramètres de l'IA
Tu peux facilement changer la "personnalité" du modèle avec le system prompt ou ajuster la créativité avec le topK :
# Linux / macOS ./jimmy.sh --quiet --system "Tu parles comme un pirate informatique des années 90" --topk 8 --chat "Comment on hack un mainframe ?" # Windows .\jimmy.ps1 --quiet --system "Tu parles comme un pirate informatique des années 90" --topk 8 --chat "Comment on hack un mainframe ?"
Analyser un fichier local
Tu peux directement attacher un fichier texte (max 50 Ko) pour l'analyser :
# Linux / macOS ./jimmy.sh --quiet --file rapport_hebdo.txt --chat "Fais-moi un résumé de ce document en 3 points à puces" # Windows .\jimmy.ps1 --quiet --file rapport_hebdo.txt --chat "Fais-moi un résumé de ce document en 3 points à puces"
Une intégration parfaite en CI/CD
L'un de mes cas d'usage préférés est l'intégration dans des pipelines comme GitHub Actions.
Imagine pouvoir générer automatiquement un résumé compréhensible des CHANGELOG.md à chaque nouvelle release. Le dépôt te fournit un exemple prêt à l'emploi où Jimmy est appelé dans un workflow, et son résultat est injecté directement dans le résumé de l'exécution ($GITHUB_STEP_SUMMARY) via jq.
Conclusion
Jimmy suit une idée simple de la philosophie Unix : faire peu de choses, mais produire une sortie facile à réutiliser. La CLI est utile pour des scripts locaux, des résumés de fichiers ou une étape de CI où tu contrôles déjà le fournisseur appelé.
Le code est disponible sur GitHub. Avant de l'utiliser en production, vérifie les limites du service, les données envoyées et le stockage des sorties dans tes logs.
Article co-écrit avec l'IA · Images générées avec l'IA.
