Dans l'article précédent, nous avons posé L1 (GitHub Runner) : après un git push, il faut un Fact auditable (définition dans Runner · langage Stack). Ensuite, beaucoup d'équipes installent Claude Code sur le même Cloud Mac, font un brew install ollama — et constatent que le codage principal reste à 100 % sur l'API Claude, tandis qu'Ollama tourne à vide et occupe 6–8 Go de mémoire unifiée.
Ce n'est pas « Ollama est inutile », mais la question structurante n'est pas encore tranchée : pourquoi Inference doit être une couche à part, et non un sous-ensemble de Claude Code. Ce texte n'est pas une encyclopédie d'installation Ollama, ni un doublon des mesures 16 Go vs 24 Go ou du comparatif M4 vs GPU cloud ; il fixe seulement la raison d'être, les limites de L2 et le lien avec L3 (Diff) (L3 : poste Claude Code).
Si GitHub Runner répond à « le code passe-t-il vraiment la vérification ? », Ollama répond à « quels Token doivent être inférés sur votre propre Cloud Mac ? » Retenez la paire : Fact vs Inference.
Cloud Mac AI Stack · L2 en une phrase
Runner = execution engine ; Ollama = inference service ; Claude Code = agent de codage.
Livrables : Fact, Inference, Diff. L'essentiel de L2 n'est pas le modèle, mais transformer l'inférence en Inference Service appelable sur la durée (optionnel).
Rôle de L2 dans le Stack
L3 répond « comment modifier le dépôt ? » ; L1 « le changement build-t-il, se signe-t-il, se livre-t-il ? » ; L2 « quels tokens d'inférence ne doivent pas quitter ce nœud macOS ? » Ce n'est pas un remplaçant de Claude, mais une deuxième conduite d'inférence empilable sur Cloud Mac.
Livrable L2 : qu'est-ce qu'Inference
Dans le Cloud Mac AI Stack, nous découpons par livrable, pas par marque d'outil (chaîne complète : Runner · langage Stack) :
Chaîne mnémotechnique · cinq livrables (≠ ordre d'appel) Context → Inference → Diff → Fact → Workflow (MCP) (Ollama, etc.) (Claude Code) (Runner) (OpenHands) Le schéma L0–L5 montre les composants ; la chaîne de livrables place Inference à côté de Context/Diff/Fact/Workflow — pas comme « patch transversal »
Inference désigne ici : une passe modèle dans un processus macOS que vous contrôlez — prompt / embedding en entrée, completion / vecteur en sortie, sans API d'inférence tierce (ou l'API ne sert que la voie L3, tandis que L2 traite les tokens qui doivent rester sur machine). Ollama est l'implémentation L2 la plus courante, pas la seule ; Core ML et MLX couvrent une partie d'Inference, mais l'écosystème et l'exploitation Ollama sont plus homogènes — d'où Ollama comme récit par défaut de L2.
Forme L2 : Inference Service, pas un ollama run occasionnel
Parler seulement d'Inference laisse penser à « encore un outil de modèle local ». Dans le Stack, nous insistons sur la forme système — chaque niveau = un rôle durable :
| Niveau | Composant | Forme | Livrable |
|---|---|---|---|
| L1 | GitHub Runner | Execution Engine | Fact |
| L2 | Ollama (etc.) | Inference Service | Inference |
| L3 | Claude Code | Agent de codage | Diff |
L'écart entre ollama run qwen3:8b et ollama serve + health checks + cron, c'est comme « lancer un test à la main en SSH » vs « Runner qui écoute les push » :
ollama run → inférence ponctuelle au terminal (essai) Inference Service → port 11434 permanent, modèle épinglé, appels Runner / scripts / agents
L'essentiel de L2 n'est pas le modèle, mais un Service d'inférence appelable sur la durée. Le modèle peut changer ; interface, appelants, créneaux et observabilité sont ce que le Stack doit figer.
Pourquoi Inference est une couche L2 à part, pas un sous-ensemble de Claude Code
Question fréquente : « l'API Claude, ce n'est pas de l'inférence ? » Oui — mais le Cloud Mac AI Stack découpe par livrable, pas par « présence d'un réseau de neurones ».
Claude Code produit le Diff — quels fichiers, quel patch dans la PR. Inference produit des Token — toute sortie texte ou vecteur d'une passe modèle. Le Diff n'est qu'un usage des Token.
D'autres tâches Inference, hors voie principale « agent de codage » :
- résumé, classification, revue, routage de logs
- embedding, RAG, rerank
- mémoire agent, nettoyage de base de connaissances
- traitements nocturnes, rapports planifiés
Donc :
Claude Code ⊂ un des scénarios Inference et non : Inference ⊂ Claude Code
Isoler L2 n'est pas dire qu'Ollama est « plus bas » que Claude — c'est reconnaître plusieurs conduites d'inférence sur le même Cloud Mac : L3 via API pour le Diff ; L2 sur machine pour les Token qui doivent rester privés ; en parallèle. Fusionner Inference dans Claude Code fait croire que « Claude installé = couche inférence complète » — source typique d'Ollama à vide.
Ollama vs Claude Code : pourquoi ce n'est pas un choix binaire
On lit « Ollama ou Claude Code » — dans le Stack, la question est mal posée. Livrables différents, pas substitution.
| Dimension | Claude Code (L3) | Ollama (L2) |
|---|---|---|
| Livrable | Diff | Inference |
| Forme | Agent (codage à la demande) | Inference Service (peut tourner 24/7) |
| Compute | souvent API Claude | local (localhost:11434, etc.) |
| Tâches typiques | codage, patch, dépôt | résumés, embedding, classification, batch nocturne, sous-tâches conformité |
| Rythme | à la demande : vous ouvrez l'agent | résident : cron / sidecar en continu |
| Dans le Stack | voie principale (code) | sous-tâches et pipeline privé (pas avant L3 au boot) |
Règle pratique : codage → Claude Code ; « quels tokens ne sortent pas de la machine, quoi lancer à heure fixe » → Ollama. Le scheduling mémoire sur une même machine est dans la suite L2-Q03 ; ici : pas binaire.
« Jouer avec un modèle » vs couche d'inférence privée
Même commande ollama run qwen3:8b, deux intentions, deux architectures :
| Dimension | Essai perso | L2 · Inference Service |
|---|---|---|
| Objectif | prompts, tok/s, capture d'écran | charges fixes : résumé conformité, logs, embedding, batch nocturne |
| CI | aucun lien | décalage avec L1 Runner (CI jour, inférence nuit), budget L0 partagé |
| L3 | « local OU Claude » | parallèle : code via API, sous-tâches via localhost:11434 |
| Succès | le modèle répond | SLA : latence, version pin, alerte, tokens sur machine |
| Machine | portable fermé → stop | Cloud Mac 24/7 : service observable avec Runner / Agent |
En bref : l'essai demande « ça tourne ? » ; L2 demande « quoi, quand, qui consomme la sortie ? » Sans charge qui exige une Inference privée, sautez L2 — pas besoin d'Ollama pour « compléter » le Stack.
L2 face à L1 / L3
Frontières souvent confondues :
| Niveau | Composant | Sortie | Question |
|---|---|---|---|
| L1 | GitHub Runner | Fact | Ce commit build-t-il, teste-t-il, s'archive-t-il ? |
| L2 | Ollama (etc.) | Inference (via Inference Service) | Quelle inférence doit rester sur ce nœud, rappelable par Runner / agents ? |
| L3 | Claude Code | Diff (forme Agent) | Comment modifier le dépôt ? (souvent API Claude) |
L2 ne produit ni Diff ni Fact. Pas de PR verte magique, pas de remplacement de xcodebuild. Schéma courant : Claude Code modifie → Runner vérifie → step ou sidecar appelle Ollama pour résumé de logs, motifs de faille, embedding privé vers un index — sortie vers Context (L4) ou revue humaine, pas « build OK ».
L2 sur le schéma cinq niveaux : niveau ≠ ordre d'appel
Schéma commun : Runner · cinq niveaux. Ollama sous Claude Code = Inference porte la charge « compute privé », pas « démarrer Ollama avant Claude Code ».
Extrait · schéma complet dans l'article Runner
Claude Code L3 · Diff
↑ parallèle, pas dépendance
Ollama L2 · Inference Service (optionnel)
↑
GitHub Runner L1 · Fact
↑
Cloud Mac L0 · infrastructure
API Claude et Ollama coexistent — l'une pour le Diff, l'autre pour l'Inference locale. Ce n'est pas « le modèle local remplace Claude » ; c'est la frontière entre Cloud Mac AI Stack et un produit « tout-en-un chat » sur une seule machine.
Au-delà de la conformité : valeur du calcul continu L2
L2 est souvent réduit à la finance / santé / grand compte — la conformité compte, mais beaucoup d'utilisateurs Cloud Mac sont indés, fondateurs AI, petites équipes sans ticket compliance, avec pourtant besoin de L2.
La différence est la forme de travail :
Claude Code (L3) · à la demande vous l'ouvrez → inférence vous quittez → voie principale en pause Ollama (L2) · peut être 24/7 processus résident → cron / sidecar indépendant du terminal ouvert
Ce ne sont ni dialogue agent, ni CI, ni coding quotidien, mais de vrais services d'inférence longue durée :
- résumé horaire des logs Runner / applicatifs
- rebuild embedding et nettoyage de nuit
- rapport automatique, tri d'anomalies, brouillons de routage
- mise à jour Context (L4) quand Claude Code est offline
Portable fermé = difficile à traiter en infra ; avec L1 en décalage, Fact le jour et Inference la nuit, souvent plus réaliste qu'une GPU cloud à l'heure — si L2 est un Service, pas un terminal ouvert de temps en temps.
Mac local exécute, Cloud Mac opère
« Mon Mac mini fait aussi brew install ollama — pourquoi Cloud Mac ? » Exact : Mac local = peut exécuter ; cet article parle de opérer comme infrastructure.
| Dimension | Mac local / portable | Cloud Mac (L0) |
|---|---|---|
| Disponibilité | capot fermé, veille, déplacement → arrêt | 24/7, sortie réseau stable |
| Stack | Ollama souvent isolé | même nœud que Runner, Claude Code — observabilité, décalage horaire |
| Forme L2 | souvent ollama run en essai |
Inference Service : health check, pin de modèle, sidecar / cron |
| Dépendants | souvent vous seul | CI, agents, tâches planifiées, scripts d'équipe |
Ollama n'existe pas grâce à Cloud Mac ; la valeur Cloud Mac, c'est de passer d'une commande terminal à un Inference Service 24/7 observable, planifiable, partagé par Runner et agents. Sinon on lit « encore un article Ollama », pas pourquoi empiler l'inférence privée dans le Cloud Mac AI Stack.
Choix L0 : Cloud Mac vs poste Mac local AI ; pas de fiche location ici — seulement : dans le récit Stack, L2 vit sur un nœud « opérable ».
Charges de travail à brancher sur L2
Signaux pour traiter Ollama comme infra L2 (pas démo) :
- Conformité / air gap — code et logs sur Cloud Mac, mais requêtes d'inférence hors API publique ; L2 pour sous-tâches déjà dé-sensibilisées (classification, résumé, PII).
- Embedding / rerank — pipeline CodeGraph ou RAG avec modèle local version pin stable, sans embedding API ni chemin de données flou.
- Haute fréquence, petit modèle, batch — ex. classement des logs CI chaque nuit ; 7B–14B quantifiés sur Apple Silicon, coût prévisible (cf. nœud fixe vs GPU à l'heure).
- Décalage avec L3 — Claude Code + Runner le jour ; batch Ollama la nuit sur 24 Go sans tout charger en même temps.
- Voie rapide multi-agents — gros changements via Claude ; routage, classification, brouillon en 8B local (même logique que certains agents desktop — note OpenHuman).
À l'inverse, iOS seulement, codage 100 % API Claude, aucune inférence locale planifiée : priorité L2 sous L1 Runner — d'abord un Fact sur chaque push, puis Inference privée.
Ordre de lecture : Runner → Ollama → Claude Code
Si vous suivez la série Stack par livrable :
- L1 · Fact — GitHub Runner execution engine : après
push, build, tests, livraison réels. - L2 · Inference Service — cet article : quels Token restent sur Cloud Mac, en forme de service.
- L3 · Diff — poste Claude Code : comment modifier le dépôt (souvent API).
Base et choix : Cloud Mac vs Mac local AI. Context (L4) et CodeGraph relieront plus tard les sorties Inference.
Erreur classique : Ollama installé, Stack = API seulement
brew install ollamasur Cloud Mac, deux modèles — « la stack AI est complète ».- Le quotidien reste Claude Code + API Anthropic ; Ollama sans appel script ou agent une semaine.
- Mémoire occupée par des modèles dormants ; Claude Code et Runner se disputent le reste, swap en hausse (cf. 16 Go vs 24 Go).
- « Pourquoi Cloud Mac ? » — L0 = machine sans charge L2 définie.
Correction : pas une GUI de plus, mais 1–2 pipelines obligatoirement L2 (ex. résumé d'échec CI uniquement via Ollama ; embedding uniquement via nomic-embed-text), version pin, health check sur 11434. Le « planning parallèle » = L2-Q03 · scheduling mémoire.
Qui peut sauter L2
| Bon candidat pour L2 (Ollama sur Cloud Mac) | Peut reporter L2 |
|---|---|
| inférence qui ne quitte pas la machine, sous-tâches air gap | codage et revue 100 % API Claude |
| RAG / CodeGraph avec embedding local | pas d'index vectoriel, pas de batch local |
| 7B–14B pour petites tâches fréquentes, moins de tokens API | chat occasionnel pour essayer un modèle |
| mémoire planifiée avec L1 (CI jour / inférence nuit) | machine = Claude Code seul, sans Runner ni pipeline |
| indé / petite équipe : logs, embedding, rapports 24/7 | aucun cron ou sidecar n'appelle le modèle local |
Lien avec les articles de mesure déjà publiés (hors scope ici)
Plusieurs longs formats « Ollama » coexistent — répartition pour éviter le doublon perçu :
- L2-Q02 · 16 Go vs 24 Go — mémoire et swap mesurés ; « quelle machine acheter », pas « où Ollama dans le Stack ».
- L2-Q04 · M4 vs GPU cloud — facture et échelle ; pas de comparatif prix ici.
- L2-Q05 · Core ML — voie Apple native ; peut coexister avec Ollama, autre runtime.
- L3 · poste Claude Code — expérience de codage ; cet article complète L2 (API + Inference locale).
Déploiement : Fact, puis Inference
Aligné sur Runner · ordre de déploiement :
- L0 — Cloud Mac macOS permanent.
- L1 — Runner,
push → vert/rougereproductible. - L2 — Ollama uniquement sur pipelines Inference privés déjà définis (cet article).
- L3–L5 — Claude Code, MCP, OpenHands après Fact + (optionnel) Inference stable.
L2 avant L1 : beaux résumés locaux, xcodebuild qui échoue encore sur Linux — Inference ne remplace pas Fact.
Série thématique L2
Cet article = fondation L2 (rôle et limites). Suite :
| Volet | Sujet | Statut |
|---|---|---|
| ① · cet article | Ollama comme couche d'inférence privée (Inference) | publié |
| ② · Publié | Sur Mac mini, planifier les workloads IA : éviter le swap avec Ollama, Claude Code et GitHub Runner | Publié |
| ③ | pin de modèle, health checks, appels Ollama côté CI | prévu |
Schéma global : Cloud Mac AI Stack · cinq niveaux.
FAQ
L'API Claude fait aussi de l'inférence — pourquoi une couche Inference ?
Claude Code produit le Diff ; L2 produit des Token (résumés, embedding, batch, etc.). Claude Code ⊂ scénarios Inference, pas l'inverse.
Ollama et Claude Code — choix exclusif ?
Non. Codage L3 via API ; inférence locale ou planifiée → L2. Voir tableau comparatif.
Installer Ollama avant Claude Code ?
Non. L2 optionnel, parallèle à L3.
Sans conformité, L2 utile ?
Oui pour inférence 24/7 (logs, embedding, rapports) — indés et petites équipes inclus ; essai occasionnel → sautez L2.
Mac mini local fait tourner Ollama — pourquoi Cloud Mac ?
Local = exécuter ; Cloud Mac = opérer un Inference Service — 24/7, même stack Runner/Agent, planifiable. Voir Mac local vs Cloud Mac.
Ollama ou GitHub Runner en premier ?
Conseil : L1 puis L2. Le schéma vertical = responsabilités, pas ordre de boot.
Différence avec 16 Go vs 24 Go ?
Ici = position Stack ; mémoire → 16 Go vs 24 Go ; coût → M4 vs GPU cloud.
Série L2 · suite
Sur Mac mini, planifier les workloads IA : éviter le swap avec Ollama, Claude Code et GitHub Runner
L2-Q03 · Couche de scheduling mémoire : scheduling pour swap et CI lente — runbook 30 s inclus.
Lire L2-Q03 · AI Workload Scheduling