#CLI#IA#Open Source

Jimmy : Une CLI minimaliste pour intégrer l'IA dans tes workflow

Jimmy CLI permet d’utiliser les LLM de ChatJimmy.ai depuis le terminal et de les intégrer à des scripts ou pipelines CI/CD.

5 min de lecture
Résumé IA

Générez un résumé de cet article en un clic.

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.ps1 dé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 :

ÉtapeAction
mktemp -dCrée un dossier temporaire unique
curl -fsSLTélécharge le script officiel
chmod +xRend le script exécutable
"$d/jimmy.sh" --chat ... --topk 8Exé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 :

ÉtapeAction
GetTempPath() + GetRandomFileName()Crée un dossier temporaire unique
Invoke-WebRequestTélécharge le script officiel
& $f --chat ... --topk 8Exécute avec le prompt et le topK max
Remove-Item -Recurse -ForceSupprime 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.