Débutant 10 minInterfaces

Jan : l'alternative open-source à ChatGPT, 100% locale

Jan (jan.ai) est une application desktop libre, sous licence AGPL, qui ressemble à ChatGPT mais tourne entièrement sur votre machine. Pas de compte, pas de cloud, pas de télémétrie cachée — juste un binaire à installer et des modèles open-weight à charger. Ce tutoriel Jan AI local couvre l'installation, le premier chat, le serveur API OpenAI-compatible, et la comparaison honnête avec LM Studio et Msty.

Par Mohamed Meguedmi·Màj 2026-06-08·Testé sur Windows, macOS, Linux

#Pourquoi Jan ?

Trois choses distinguent Jan dans le paysage encombré des clients LLM desktop. Premièrement, c'est de l'open source réel : code sur GitHub (menloresearch/jan), licence AGPL-3.0, build reproductible. LM Studio et Msty sont gratuits mais fermés. Si la transparence du binaire qui tourne en permanence sur votre machine compte pour vous, Jan est le seul des trois à cocher cette case.

Deuxièmement, la philosophie offline-first est radicale. Jan ne fait aucun appel réseau au démarrage. Pas de check de mise à jour automatique, pas de télémétrie, pas de "phone home" déguisé. Les modèles se téléchargent à la demande depuis Hugging Face, point. Vous pouvez l'utiliser sur une machine air-gappée sans rien casser.

Troisièmement, l'architecture est propre : Jan est un front Electron au-dessus de Cortex, un moteur d'inférence séparé (anciennement Nitro). Cortex utilise llama.cpp en backend et expose une API REST. Vous pouvez donc utiliser le serveur Cortex sans le front Jan, ou brancher d'autres clients sur Cortex. C'est plus modulaire que LM Studio qui est monolithique.

i
En une phrase
Jan = une UI Electron polie + Cortex (moteur llama.cpp) + un store de modèles Hugging Face. Pensez à un "ChatGPT desktop" qui ne sort jamais de votre wifi.

#Prérequis

Système
Windows 10/11 (x64), macOS 12+ (Intel ou Apple Silicon), Linux (deb, AppImage, ou rpm).
RAM
8 Go strict minimum (modèles 1B-3B), 16 Go confortable (modèles 7B Q4), 32 Go+ pour viser du 14B et au-delà.
Espace disque
Comptez 5 Go pour Jan + Cortex, puis 2 à 40 Go par modèle selon la taille. Un dossier dédié sur un SSD est l'idéal.
GPU (optionnel mais recommandé)
NVIDIA avec CUDA pour Windows/Linux, Metal automatique sur Apple Silicon. Sans GPU, Jan tourne sur CPU — lent mais fonctionnel pour les petits modèles.
Le bon repère VRAM
Q4_K_M est la quantization par défaut chez Jan. À ce format : 3B≈2 Go VRAM · 7B≈5 Go · 14B≈9 Go · 32B≈19 Go · 70B≈40 Go. Au-dessus de votre VRAM, Jan offload sur RAM (chute brutale de tokens/sec).

#1. Installation

Téléchargez l'installateur depuis le site officiel. Jan se présente comme un installateur en 1 clic — pas de manipulations CLI, pas de dépendances Python à gérer.

Site officiel
https://jan.ai
!
Toujours depuis jan.ai ou GitHub officiel
Le repo officiel est github.com/menloresearch/jan (anciennement janhq/jan). Ne téléchargez Jan que depuis le site officiel ou les releases GitHub signées. Méfiez-vous des forks pré-compilés diffusés sur des sites tiers.
  1. 01
    Lancer l'installateur
    Double-cliquez le .exe (Windows), .dmg (macOS) ou .AppImage (Linux). Sur Linux, rendez l'AppImage exécutable avec chmod +x Jan-*.AppImage si nécessaire.
  2. 02
    Premier lancement
    Jan crée son dossier de données (~/jan sur macOS/Linux, %APPDATA%\Jan sur Windows). C'est là que vivront les modèles, les conversations et la config. Pensez-y si vous voulez le placer sur un SSD secondaire.
  3. 03
    Vérifier Cortex
    Au démarrage, Jan lance le service Cortex en arrière-plan. Si une fenêtre de pare-feu s'ouvre, autorisez la connexion locale (Cortex écoute sur 127.0.0.1, pas sur le réseau).
  4. 04
    Onboarding
    Jan vous propose un modèle de démarrage (typiquement un petit Llama ou Qwen). Vous pouvez l'accepter pour tester en 2 minutes, ou skip pour choisir vous-même dans le Hub.

#2. Premier modèle

Jan intègre un Hub de modèles qui pointe sur Hugging Face avec des versions GGUF préparées et testées. Ouvrez l'onglet "Hub" dans la sidebar gauche pour voir le catalogue.

Pour démarrer, trois choix solides en français selon votre VRAM :

Petite config (8 Go RAM, pas de GPU)
Llama 3.2 3B Instruct Q4_K_M (≈2 Go). Suffisant pour discuter, résumer un texte court, brainstormer. Tokens/sec corrects en CPU.
Config standard (16 Go RAM, GPU 6-8 Go)
Qwen2.5 7B Instruct Q4_K_M (≈5 Go). Le meilleur compromis FR/EN pour la majorité des usages quotidiens.
Config confort (32 Go RAM, GPU 12 Go+)
Mistral Small 24B ou Qwen2.5 14B en Q4_K_M. Qualité proche de GPT-3.5 Turbo, raisonnement nettement supérieur aux 7B.

Cliquez "Download" sur la fiche du modèle. Jan affiche la progression et stocke le fichier GGUF dans son dossier data. Une fois téléchargé, le bouton devient "Use" — un clic et le modèle est chargé en mémoire.

Importer un GGUF que vous avez déjà
Si vous avez déjà des fichiers GGUF locaux (téléchargés via huggingface-cli ou récupérés d'une install Ollama/LM Studio), vous pouvez les importer dans Jan via Settings → My Models → Import. Jan ne duplique pas, il référence le fichier.

#3. Prendre en main

L'interface Jan reprend les codes ChatGPT : sidebar des conversations à gauche, zone de chat au centre, panneau de réglages contextuels à droite. Trois choses à connaître pour être productif :

Threads
Chaque conversation est un "Thread" indépendant avec son propre modèle assigné. Vous pouvez ouvrir plusieurs threads en parallèle (utile pour comparer la réponse d'un 7B et d'un 14B sur la même question).
Assistants
Onglet Assistants : créez des personas avec system prompt, température et modèle préassigné. Pratique pour avoir un "Assistant code" (Qwen Coder, température 0.2) et un "Assistant rédaction" (Mistral, température 0.8) séparés.
Paramètres de génération
Panneau de droite — température, top-p, top-k, max tokens, fréquence de pénalité. Modifiables par thread. La fenêtre de contexte (n_ctx) se règle au niveau du modèle dans Settings → My Models.
i
Conversations stockées en clair
Par défaut, Jan stocke vos threads dans des fichiers JSON lisibles dans le dossier data. Aucun chiffrement. Si vous traitez des données sensibles, chiffrez le disque (LUKS, FileVault, BitLocker) ou placez le dossier Jan dans un volume chiffré.

#4. Extensions et Cortex

Jan a une architecture à extensions. Les principales briques sont elles-mêmes des extensions internes (Inference Cortex Extension, Model Extension, etc.) ce qui permet à terme d'en swapper. Côté utilisateur, l'écosystème d'extensions tierces reste plus jeune que celui de VS Code, mais quelques-unes valent le détour :

Inference Engines alternatifs
Au-delà de Cortex/llama.cpp par défaut, vous pouvez activer des extensions qui pointent sur un endpoint OpenAI-compatible distant (Ollama, vLLM, ou même OpenAI cloud si vous acceptez de sortir du local).
Cortex en standalone
Cortex est livré avec Jan mais peut tourner seul. cortex run llama3.2:3b en CLI démarre un serveur sur le port par défaut sans le front Jan. Utile pour scripter ou déployer sur un serveur headless.
Model Hub configurable
Vous pouvez ajouter des sources de modèles personnalisées (un repo HF privé, un miroir interne) en éditant les paramètres du Hub. Pratique en entreprise pour distribuer des modèles fine-tunés maison.
Cortex en CLI sans Jan
# Lancer le serveur Cortex seul
cortex start

# Lister les modèles disponibles
cortex models list

# Charger et servir un modèle
cortex run qwen2.5:7b-gguf-q4-km

#5. Mode serveur API

Le mode serveur de Jan expose une API OpenAI-compatible sur le réseau local. C'est ce qui transforme Jan d'un simple client chat en un vrai backend pour vos scripts, vos automatisations n8n, ou un copilote VS Code via Continue.dev.

  1. 01
    Activer le serveur
    Settings → Local API Server. Cochez "Start Local API Server". Jan démarre Cortex en mode serveur sur le port 1337 par défaut (réglable).
  2. 02
    Choisir le modèle servi
    Tous les modèles téléchargés sont exposés. Chacun a un identifiant utilisable dans le champ "model" des requêtes (visible dans la colonne ID de My Models).
  3. 03
    Test rapide en curl
    Vérifiez que le serveur répond avec un appel /v1/chat/completions standard. La syntaxe est identique à OpenAI.
Test API OpenAI-compatible
curl http://localhost:1337/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen2.5:7b-gguf-q4-km",
    "messages": [{"role": "user", "content": "Bonjour, qui es-tu ?"}],
    "temperature": 0.7
  }'
!
Le serveur écoute en local par défaut
Jan bind sur 127.0.0.1, donc inaccessible depuis le réseau. Pour partager avec d'autres machines (équipe, famille), modifiez l'adresse de bind sur 0.0.0.0 dans les settings — mais ajoutez alors une authentification (reverse proxy avec auth basic minimum), Jan n'a pas d'auth native.
Client Python via SDK OpenAI
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:1337/v1",
    api_key="jan-local",  # n'importe quelle string, Jan ne vérifie pas
)

response = client.chat.completions.create(
    model="qwen2.5:7b-gguf-q4-km",
    messages=[
        {"role": "system", "content": "Tu réponds toujours en français."},
        {"role": "user", "content": "Explique-moi ce qu'est un LLM en deux phrases."},
    ],
)
print(response.choices[0].message.content)

#Jan vs LM Studio vs Msty

Les trois apps sont des clients desktop pour LLM locaux avec une UI propre et un serveur API local. Le diable est dans les détails.

Jan
Open source (AGPL), offline-first strict, architecture modulaire avec Cortex en moteur séparé. Catalogue de modèles plus restreint que LM Studio. Idéal pour qui veut du libre et de l'auditable.
LM Studio
Closed source mais gratuit. Catalogue Hugging Face le plus riche des trois (recherche en direct dans HF). Support MCP, MLX natif sur Mac, multi-token prediction. Plus de fonctionnalités, mais opaque.
Msty
Closed source, freemium (version Aurum payante). Le mieux pour le RAG : workspaces de documents, split chat (comparer deux modèles côte à côte), Knowledge Stacks. Moins solide en pur chat, plus orienté "agent personnel".
Comment choisir
Vous voulez de l'open source vérifiable et la simplicité : Jan. Vous voulez le maximum de modèles et de réglages avancés : LM Studio. Vous voulez du RAG sur vos docs sans coder : Msty. Aucun ne vous empêche d'utiliser les autres — ils peuvent même cohabiter (ports différents).

#Dépannage

Le modèle ne se charge pas / OOM
Vérifiez la VRAM/RAM disponible. Dans Settings → My Models → [modèle] → Edit Parameters, baissez n_gpu_layers pour offloader moins de couches sur le GPU. Ou passez à une quantization plus petite (Q4_K_S au lieu de Q4_K_M, ou IQ3_M).
Tokens/sec très faibles
Confirmez que le GPU est bien utilisé : sur NVIDIA, ouvrez nvidia-smi pendant une génération, vous devez voir Jan ou cortex-server consommer de la VRAM. Sur Apple Silicon, Metal est activé par défaut sans réglage.
Cortex ne démarre pas (Windows)
Visual C++ Redistributable manquant. Installez les vc_redist x64 depuis Microsoft. Vérifiez aussi qu'aucun autre process n'occupe le port 1337 (changez le port dans les settings si besoin).
Linux : AppImage ne se lance pas
Installez libfuse2 (sudo apt install libfuse2 sur Ubuntu 22.04+). Pour debug, lancez l'AppImage depuis un terminal pour voir les erreurs.
Téléchargement de modèle bloqué à 99%
Coupez et relancez. Jan reprend le téléchargement. Si ça persiste, téléchargez le GGUF manuellement depuis Hugging Face et importez-le via Settings → My Models → Import.
Réponses en anglais malgré un prompt FR
Modèle pas assez fort pour le bilingue cohérent. Ajoutez un system prompt explicite « Réponds toujours en français » dans l'assistant, ou passez à un modèle entraîné FR (Mistral, Qwen, Llama 3.x récents).

#Pour aller plus loin

Selon où vous voulez aller maintenant :

Comparer Jan avec ses concurrents directs
« Ollama vs LM Studio vs Jan vs GPT4All » fait le tableau détaillé pour choisir l'outil adapté à votre profil.
Comprendre les quantizations Q4/Q5/Q8
« Choisir sa quantification (Q4, Q5, Q8, FP16) » explique les compromis qualité/mémoire — utile pour choisir intelligemment dans le Hub de Jan.
Faire du RAG sur vos documents
Jan n'a pas de RAG natif solide. « RAG local avec Ollama sans coder (Open WebUI, AnythingLLM) » montre les alternatives no-code qui se branchent aussi sur le serveur API de Jan.
Ce guide vous a aidé ?

Un retour, une erreur, une précision ? Faites-nous signe, ça améliore le guide pour tout le monde.