Gemma 4 avec OpenAI Codex CLI : l’assistant de code local, gratuit et privé (2026)
Début avril 2026, OpenAI a publié Codex CLI. La première question qui a enflammé Hacker News n’était pas est-ce que ça marche ?, mais bien peut-on le brancher sur un modèle local et arrêter de payer au token ?
Réponse courte : oui. Codex CLI dialogue sans souci avec n’importe quel endpoint compatible OpenAI, et Gemma 4 servi par Ollama fait partie des remplacements les plus propres qu’on puisse mettre derrière. Résultat : un agent de code en terminal qui ne coûte rien à exécuter, qui n’envoie jamais votre code source à un tiers et qui continue de fonctionner dans un avion ou derrière le pare-feu de l’entreprise.
Ce guide couvre toute la chaîne : installer Ollama, récupérer la bonne variante de Gemma 4, câbler les variables d’environnement, puis enchaîner quatre tâches réalistes pour valider le montage. Si vous reportiez l’adoption de Codex à cause de la facture API ou de la revue conformité, c’est l’article qu’il vous faut.
Qu’est-ce que OpenAI Codex CLI ?
Codex CLI est l’agent de codage d’OpenAI pensé pour le terminal — l’équivalent en ligne de commande de GitHub Copilot, sans éditeur. Vous restez dans votre shell et vous lui parlez en français :
- Générer du code :
codex "crée une API REST avec authentification JWT" - Expliquer un fichier :
codex explain app/main.py - Refactorer :
codex refactor src/cache.ts --goal "réduire la mémoire" - Corriger une erreur :
codex fix --error "TypeError: undefined is not a function"
Par défaut il cible api.openai.com, mais sous le capot il s’agit d’un client HTTP standard au format OpenAI. Autrement dit, tout ce qui parle le protocole chat completions — Ollama, LM Studio, vLLM, le serveur Llama.cpp — fonctionne. C’est toute l’astuce.
Pourquoi remplacer OpenAI par Gemma 4 ?
Trois raisons qui tiennent à l’usage quotidien.
Confidentialité. Votre code ne quitte pas la machine. Aucun fournisseur ne voit votre logique métier, vos secrets ou le schéma de votre base de données. Pour les équipes soumises au RGPD, à l’ISO 27001 ou à une politique interne de propriété intellectuelle, ce n’est pas un bonus.
Coût. OpenAI facture au token, et Codex aime bien injecter le fichier entier dans le contexte. Une refactorisation sur un dépôt moyen peut brûler cinq à dix dollars discrètement. Gemma 4 sur votre portable coûte exactement zéro — vous pouvez laisser tourner un agent toute la nuit.
Hors ligne. TGV, avion, sites client, réseaux cloisonnés. Si vous travaillez dans un environnement à la connectivité capricieuse ou interdite, un modèle local n’est pas un luxe, c’est la seule option.
Il y a deux ans, ce schéma n’était pas viable à cause de la qualité — les modèles locaux n’écrivaient pas vraiment du code. Gemma 4 comble ce fossé. Les variantes 26B MoE et 31B Dense sont désormais assez solides sur le suivi d’instructions, le function calling et la sortie structurée pour qu’on oublie qu’on est hors ligne.
Prérequis
Avant de commencer :
- Ollama installé (ollama.com)
- Gemma 4 téléchargé (26B ou 31B — on choisit plus bas)
- OpenAI Codex CLI
- Node.js 20+
- Matériel : 16 Go de RAM minimum pour 26B, 24 Go+ pour 31B
Vous ne savez pas quelle taille prendre ? Version courte : 26B MoE est le point d’équilibre pour les portables, parce que seuls ~4 milliards de paramètres sont activés par token. Sur un poste fixe avec de la marge, 31B Dense est nettement plus intelligent sur les tâches longues.
Étape 1 : installer Ollama et télécharger Gemma 4
Ollama gère les téléchargements de modèles, la quantization et le serveur HTTP local dans un seul binaire.
Installation
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows : téléchargez l’installateur sur ollama.comRécupérer le modèle
Pour la plupart des travaux de code, Gemma 4 26B (MoE) offre le meilleur rapport qualité/ressources :
ollama pull gemma4:26b-a4bSi vous avez de la mémoire à revendre (24 Go+ unifiés ou GPU 24 Go) et que vous voulez la meilleure qualité :
ollama pull gemma4:31bLe téléchargement fait 15–20 Go. Vérifiez que tout marche :
ollama run gemma4:26b-a4b "Écris une fonction Python qui inverse une chaîne"Une réponse sensée ? Étape bouclée.
Étape 2 : lancer le serveur Ollama
Ollama expose par défaut une API compatible OpenAI sur http://localhost:11434/v1. Lancez-la dans un terminal dédié :
ollama serveLaissez cette fenêtre ouverte. Depuis un second terminal, vérifiez la présence de l’API :
curl http://localhost:11434/v1/modelsVous devez obtenir une liste JSON contenant gemma4:26b-a4b. Si curl bloque ou refuse la connexion, un autre processus occupe sans doute le port 11434.
Étape 3 : installer OpenAI Codex CLI
Codex CLI est distribué via npm :
npm install -g @openai/codex-cli
codex --versionVous devez voir 1.x.x ou supérieur. En cas d’échec, assurez-vous que Node.js est en version 20 ou plus récente — Codex utilise de nouvelles API fetch.
Étape 4 : pointer Codex CLI vers Gemma 4
Codex CLI respecte les variables d’environnement standard du SDK OpenAI. Trois variables suffisent pour tout rediriger vers Ollama.
macOS / Linux
Ajoutez dans ~/.zshrc ou ~/.bashrc :
export OPENAI_API_BASE="http://localhost:11434/v1"
export OPENAI_API_KEY="ollama" # n’importe quelle chaîne non vide
export CODEX_MODEL="gemma4:26b-a4b"Rechargez : source ~/.zshrc.
Windows (PowerShell)
$env:OPENAI_API_BASE = "http://localhost:11434/v1"
$env:OPENAI_API_KEY = "ollama"
$env:CODEX_MODEL = "gemma4:26b-a4b"Test de validation
codex "affiche hello world en Python"Sortie attendue :
print("Hello, World!")Si vous voyez Model not found ou Connection refused, allez lire la section Dépannage.
Étape 5 : quatre tâches réalistes
Hello World n’est pas un benchmark honnête. Voici quatre scénarios qui reflètent l’usage quotidien.
1. Générer un endpoint REST
codex "crée un endpoint FastAPI qui reçoit email et password, les valide et renvoie un JWT"Gemma 4 26B produit quelque chose comme :
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel, EmailStr
from datetime import datetime, timedelta
import jwt
app = FastAPI()
SECRET_KEY = "your-secret-key"
class UserLogin(BaseModel):
email: EmailStr
password: str
@app.post("/login")
def login(user: UserLogin):
if user.email == "user@example.com" and user.password == "password123":
token = jwt.encode(
{"sub": user.email, "exp": datetime.utcnow() + timedelta(hours=1)},
SECRET_KEY, algorithm="HS256",
)
return {"access_token": token, "token_type": "bearer"}
raise HTTPException(status_code=401, detail="Invalid credentials")2. Expliquer du code inconnu
Enregistrez comme complex.py :
def f(n): return n if n < 2 else f(n-1) + f(n-2)Puis :
codex explain complex.pyGemma 4 identifie la Fibonacci récursive naïve, signale la complexité O(2^n) et suggère la mémoïsation.
3. Refactoriser pour la performance
codex refactor complex.py --goal "optimize for speed"Réécriture attendue :
from functools import lru_cache
@lru_cache(maxsize=None)
def f(n):
return n if n < 2 else f(n-1) + f(n-2)O(2^n) réduit à O(n) via un simple décorateur. Réponse manuel d’algorithmique.
4. Corriger une vraie erreur
codex fix --error "TypeError: 'NoneType' object is not subscriptable" --file app.pyGemma 4 parcourt app.py, repère la ligne qui indexe un retour potentiellement None et propose un patch ajoutant la garde manquante.
Gemma 4 local vs. OpenAI cloud : quel écart ?
| Critère | Gemma 4 26B (local) | Gemma 4 31B (local) | GPT-4 (cloud) |
|---|---|---|---|
| Qualité de génération | ~niveau GPT-3.5 | ~niveau GPT-4 | Maximum |
| Débit | 20–40 t/s (M1/M2) | 15–30 t/s | 100+ t/s |
| Latence réseau | 0 ms | 0 ms | 200–500 ms |
| Coût par tâche | 0 $ | 0 $ | 0,15–0,30 $ |
| Coût mensuel (100/sem.) | 0 $ | 0 $ | 60–120 $ |
| Confidentialité | Local | Local | Prompt envoyé |
| Hors ligne | Oui | Oui | Non |
L’écart de débit brut est impressionnant sur le papier, mais sans latence réseau, le temps ressenti sur les tâches courtes est quasi identique. Le cloud conserve un avantage net sur les boucles d’agent multi-étapes appliquées à un dépôt massif : c’est là que le différentiel de 100+ t/s se cumule.
Pour les chiffres matériels détaillés, voir Gemma 4 sur Mac : performances M1 à M4 et le guide NVIDIA RTX.
Dépannage
« Connection refused »
Ollama n’est pas lancé ou écoute sur un autre port. Testez curl http://localhost:11434/v1/models. En cas d’échec, relancez ollama serve et vérifiez que le port 11434 n’est pas pris.
« Model not found »
ollama list indique l’étiquette exacte installée. CODEX_MODEL doit correspondre caractère par caractère (gemma4:26b-a4b, pas gemma4-26b).
Codex bloque ou dépasse le délai
Vous êtes probablement en swap parce que le modèle dépasse la RAM. Passez de 31B à 26B, ou descendez en Q4. Vous pouvez aussi augmenter le délai avec --timeout 120.
Sortie incohérente
Un prompt vague pénalise davantage un modèle local que GPT-4. N’écrivez pas « améliore-le » mais « convertis cette fonction en async/await et ajoute une gestion d’erreurs structurée ».
Aller plus loin : function calling
Gemma 4 supporte les tool calls au format OpenAI, ce qui permet à Codex CLI de déclencher de vraies actions externes : requêter vos issues GitHub, lancer votre suite de tests, interroger une base de staging. Définissez vos outils en JSON Schema, passez-les avec --tools tools.json et Gemma 4 choisira l’outil adapté et itérera sur les résultats. Tutoriel complet dans Function calling avec Gemma 4.
FAQ
Puis-je utiliser Gemma 4 E2B ou E4B à la place de 26B ? En théorie oui, en pratique non. Les variantes edge s’en sortent sur des extraits triviaux mais décrochent dès qu’il y a du vrai contexte. Pour Codex, restez sur 26B ou 31B.
Ça marche sous Windows ?
Oui. Ollama tourne nativement sur Windows 11, Codex CLI est du Node.js. La seule différence : la syntaxe $env: de PowerShell pour les variables d’environnement.
Peut-on réutiliser le montage avec Cursor, Continue ou Aider ?
Oui — tout ce qui parle l’API OpenAI s’y connecte. Pointez la base URL vers http://localhost:11434/v1, renseignez le modèle, terminé. Nous avons des guides dédiés pour Aider et Claude Code Router.
Combien ça coûte en tout ? Zéro euro. Ollama, Gemma 4 et Codex CLI sont gratuits. Seule la facture d’électricité bouge un peu.
Gemma 4 ou Qwen 3 pour coder ? Gemma 4 est meilleur en suivi d’instructions et sortie JSON structurée ; Qwen 3 est parfois plus rapide sur le même matériel et plus solide en chinois. Comparatif complet : Gemma 4 vs Qwen 3.
Ça tourne sur un Raspberry Pi ? Uniquement le modèle E2B, et seulement pour des prompts jouets. Pour Codex il faut une machine avec 16 Go+ de RAM.
Et si 31B n’est toujours pas assez bon ?
Supprimez la variable OPENAI_API_BASE et vous repartez sur OpenAI cloud. Beaucoup d’équipes fonctionnent en hybride : Gemma 4 local pour le quotidien, GPT-4 cloud pour les un ou deux problèmes difficiles de la semaine.
Articles liés
- Comment exécuter Gemma 4 avec Ollama — plongée complète dans Ollama, options GPU et fenêtre de contexte
- Meilleurs modèles d’IA locale pour coder en 2026 — Gemma 4 face à Qwen 3, DeepSeek, Llama et les autres
- Gemma 4 vs Qwen 3 — comparaison directe pour choisir votre modèle local par défaut
Stop reading. Start building.
~/gemma4 $ Get hands-on with the models discussed in this guide. No deployment, no friction, 100% free playground.
Launch Playground />


