Protocole de service de modèles locaux (LMSP)
- Brouillon 1.0
- Mis à jour
- Afficher en Markdown
Ce que fait LMSP
LMSP (Local Model Service Protocol) est un protocole ouvert destiné aux logiciels qui exécutent des modèles de langage sur l’appareil ou le réseau local de l’utilisateur, et aux clients qui utilisent ces logiciels.
Un service local résident se décrit à une adresse bien connue et liste ses modèles. Il répond aux requêtes de génération en JSON ou par des événements envoyés par le serveur, et exécute les longues générations sous forme de tâches persistantes qui peuvent être annulées et suivies de nouveau après une déconnexion. Le même service parle aussi l’API OpenAI, de sorte que les clients qui existent aujourd’hui continuent de fonctionner.
LMSP ne remplace ni l’API OpenAI, ni Ollama, ni MCP. Il combine leurs points forts dans une couche de protocole conçue pour les services locaux résidents.
En un coup d’œil
| Sujet | Résumé |
|---|---|
| Adresse par défaut | http://127.0.0.1:17832 |
| Description du service | GET /.well-known/lmsp.json |
| Interface principale | /lmsp/v1, JSON sur HTTP, streaming avec des événements envoyés par le serveur |
| Interfaces de compatibilité | /v1 pour les clients OpenAI, /api facultatif pour les clients Ollama |
| Découverte | Adresse manuelle, sondage des adresses locales, mDNS et DNS-SD facultatifs (_lmsp._tcp.local.) |
| Authentification | Jetons porteurs obtenus par appairage local |
| Persistance | SQLite intégré, avec des tâches qui survivent à un redémarrage |
| Contrat | OpenAPI 3.2 |
Essayez
Si un service LMSP s’exécute sur votre machine, voici tout le déroulé. Appairez-vous d’abord pour obtenir un jeton, comme décrit à la section 10.2, et conservez-le dans LMSP_TOKEN.
# 1. Découvrir le service
curl http://127.0.0.1:17832/.well-known/lmsp.json
# 2. Lister les modèles locaux
curl http://127.0.0.1:17832/lmsp/v1/models \
-H "Authorization: Bearer $LMSP_TOKEN"
# 3. Générer une réponse
curl http://127.0.0.1:17832/lmsp/v1/responses \
-H "Authorization: Bearer $LMSP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":"qwen3:14b-q4_k_m","input":[{"type":"message","role":"user","content":[{"type":"input_text","text":"Hello"}]}]}'
Place de LMSP parmi les autres protocoles
| Protocole | Ce qu’il couvre | Lien avec LMSP |
|---|---|---|
| API OpenAI | Modèles hébergés. L’API Responses est son interface la plus récente. | LMSP suit la structure de Responses pour son interface principale, et un service propose à côté une interface compatible OpenAI. |
| Ollama | Un environnement d’exécution local qui sert déjà des points de terminaison compatibles OpenAI. | Il peut se placer derrière un service LMSP en tant qu’adaptateur, et LMSP définit des points de terminaison facultatifs compatibles Ollama. |
| MCP | Relie les agents aux outils et au contexte. | LMSP relie les agents aux modèles. Tous deux préfèrent la découverte sans état aux sessions obligatoires. |
| A2A | Collaboration entre agents. | LMSP emprunte les cartes de service et les états de tâche explicites pour sa description de service et ses tâches. |
Ressources
- La spécification, version 1.0 (brouillon).
- Le contrat OpenAPI, en JSON ou en YAML.
- llms.txt et llms-full.txt, pour les modèles de langage.
- Chaque page est disponible en Markdown. Remplacez la barre oblique finale de son adresse par
.md, par exemple/fr/lmsp/1.0/tasks.md.
Spécification 1.0
- Vue d’ensemble
Vue d’ensemble du brouillon de LMSP 1.0. Ce qu’est le Local Model Service Protocol, les conceptions sur lesquelles il s’appuie, son architecture en couches, la façon de lire la spécification et les termes employés.
- Transport et déploiement
Adresses d’écoute par défaut, transport, format de streaming et organisation des URL d’un service LMSP, et façon dont il s’exécute comme service du système d’exploitation, séparé des processus de modèle.
- Découverte de services
Comment les clients LMSP trouvent un service local par configuration manuelle, sondage de loopback et mDNS/DNS-SD facultatif, et comment lire le document de description de service à l’adresse bien connue.
- Points de terminaison
Le tableau complet des points de terminaison de LMSP 1.0 avec méthode, chemin, niveau d’exigence et rôle, ainsi que les conventions sur les chemins, l’authentification et les points de terminaison facultatifs.
- Catalogue de modèles
Comment un service LMSP liste ses modèles locaux, l’objet modèle et ses indicateurs de capacité, les états du cycle de vie d’un modèle, les identifiants de modèle stables et les révisions du catalogue.
- Réponses et streaming
L’interface de conversation principale de LMSP, avec requêtes et éléments de sortie de style Responses, génération synchrone et en streaming, événements envoyés par le serveur, reconnexion et appels d’outils.
- Tâches asynchrones
Comment LMSP exécute les longues générations sous forme de tâches persistées, avec création de tâche, machine à états, annulation idempotente, flux d’événements et politiques de redémarrage des tâches inachevées.
- Compatibilité OpenAI et Ollama
Comment un service LMSP reste compatible avec les clients OpenAI et Ollama existants grâce à une fine couche de conversion de données au-dessus d’un seul cœur d’exécution, et où s’arrête cette compatibilité.
- Règles communes
Règles partagées par tous les points de terminaison LMSP, avec les en-têtes de version et les extensions, les clés d’idempotence, le format d’erreur problem+json et ses codes, et le contrôle d’état.
- Sécurité locale
Exigences de sécurité des services LMSP, avec liaison à loopback, appairage et jetons porteurs, portées, vérifications d’Origin et de Host contre les pages web malveillantes, mode LAN et règles de journalisation.
- Persistance
Comment un service LMSP stocke son état, avec une base SQLite intégrée, les tables à conserver, les règles transactionnelles pour les tâches et les événements, la conservation et la reprise au démarrage.
- Périmètre minimal viable
Un périmètre suggéré pour une première implémentation de LMSP, avec les dix éléments qui forment une boucle fermée utilisable et les parties de la spécification qui peuvent attendre des versions ultérieures.
Questions fréquentes
Qu’est-ce que LMSP ?
LMSP, le Local Model Service Protocol (protocole de service de modèles locaux), est un protocole ouvert pour les services de modèles de langage qui s’exécutent sur l’appareil de l’utilisateur ou sur son réseau local. Il définit la façon dont les clients découvrent un service, listent ses modèles, demandent des réponses, reçoivent la sortie en streaming et exécutent des tâches longues.
LMSP remplace-t-il l’API OpenAI, Ollama ou MCP ?
Non. LMSP s’appuie sur eux. Son interface principale suit la structure d’OpenAI Responses, un service peut proposer des points de terminaison compatibles OpenAI et Ollama, et le protocole emprunte à MCP la découverte sans état et à A2A les états des tâches.
Les clients OpenAI existants peuvent-ils utiliser un service LMSP ?
Généralement oui. Ils ont besoin d’une autre URL de base et du jeton LMSP comme clé d’API. Ils ne trouvent pas le service automatiquement, car la découverte demande un client qui prend en charge LMSP.
Comment un client trouve-t-il un service LMSP local ?
Il essaie trois choses dans l’ordre. D’abord une adresse saisie à la main, puis l’adresse locale conventionnelle, où il demande /.well-known/lmsp.json, et enfin, en option, la recherche mDNS et DNS-SD de _lmsp._tcp.local. sur le réseau local.
Un service de modèles sur localhost est-il sûr ?
Pas automatiquement, car des pages web peuvent essayer d’atteindre des ports locaux. Les services LMSP écoutent par défaut sur loopback, exigent des jetons porteurs obtenus par appairage local, vérifient les en-têtes Origin et Host, et exigent une authentification en mode LAN.
Quel est l’état de la spécification ?
La version 1.0 est un premier brouillon public et peut encore changer de façon incompatible. Le texte anglais fait foi, et les traductions sont fournies par commodité.