Documentation

Référence de la CLI

Ollaya est un binaire unique : la CLI, le serveur et les moteurs de modèles. Si tu as déjà utilisé Ollama, les commandes te sembleront familières.

Commande Rôle
ollaya serve Démarre le serveur sur 127.0.0.1:11435
ollaya run MODEL [STATE] Répond à des questions sur un état, ou ouvre une invite ; tire et charge le modèle si nécessaire
ollaya pull MODEL Télécharge un modèle depuis le registre
ollaya list (ls) Liste les modèles présents sur cette machine
ollaya ps Liste les modèles chargés en mémoire
ollaya show MODEL Affiche les détails, les capacités et la licence d’un modèle
ollaya stop MODEL Décharge un modèle en cours d’exécution
ollaya stop Arrête le serveur démarré par la CLI
ollaya mcp [--http [ADDR]] Sert les modèles aux agents IA via MCP (Agents)
ollaya rm MODEL… Supprime un ou plusieurs modèles
ollaya cp SOURCE DESTINATION Copie un modèle sous un nouveau nom
ollaya create NAME [-f Modelfile] Crée un modèle à partir d’un Modelfile
ollaya update [--check] Installe la dernière version par-dessus celle-ci
ollaya -v Affiche la version du serveur (et du client)

Toutes les commandes sauf serve et update dialoguent avec le serveur à OLLAYA_HOST. Quand rien ne répond et que l’adresse est locale, la CLI (sauf ollaya stop sans modèle) démarre ollaya serve en arrière-plan, en journalisant dans ~/.ollaya/logs/server.log (ou server.log dans OLLAYA_LOG_DIR).

Noms de modèles

Les modèles sont référencés sous la forme name:tag ; sans tag, latest est utilisé. Les noms ne sont pas sensibles à la casse.

ollaya run laya                 # same as laya:latest, a router
ollaya run laya:multilingual
ollaya pull laya:en-fp32

Un modèle comme laya:en porte un graphe fp16 et un graphe fp32 qui partagent un même fichier de poids. La précision est choisie au chargement du modèle : fp16 sur un GPU CUDA, fp32 sur le CPU. Les tags -fp16 et -fp32 en fixent une.

ollaya run

ollaya run laya --preset triage "Your app crashed during checkout and I was charged twice. Please refund one of the charges."

run se connecte au serveur (le démarre au besoin), tire le modèle s’il n’est pas sur cette machine, le charge et affiche une ligne par question : la réponse, une barre et sa probabilité.

Option Effet
--preset NAME Utilise un preset : intégré (triage, email, guard, moderation, router ou agent) ou enregistré avec ollaya preset create
--questions FILE|@FILE|JSON Utilise ces questions (id de question → question), en remplaçant celles du modèle : un chemin de fichier, @file (@- pour stdin), ou du JSON en ligne commençant par {
--format text|json text (par défaut) affiche le tableau ; json affiche la réponse complète de /api/decide
--keepalive DURATION Combien de temps garder le modèle chargé ensuite : 5m, 1h, 0 (décharger maintenant), -1 (garder chargé)
--verbose Affiche aussi la probabilité de chaque option, la décision de routage et les temps
--state-json Analyse l’état comme du JSON. Un état qui ressemble à un objet ou un tableau JSON est de toute façon détecté
--image FILE Une image PNG sur laquelle décider, pour un modèle de vision (decider:2b-vision). Elle accompagne chaque état, y compris dans le REPL

D’où viennent les questions, la première correspondance l’emporte : --questions, puis --preset, puis les questions intégrées au modèle (celles de qwen3guard, ou celles ajoutées avec un Modelfile), puis le preset triage. Quand run retombe sur triage, il le signale sur stderr.

--questions accepte aussi le JSON directement sur la ligne de commande, comme curl -d : une valeur qui commence par { est du JSON en ligne, et tout le reste est un chemin de fichier. @file est toujours un fichier (pratique si un nom de fichier commence par {), et @- lit les questions depuis stdin, auquel cas l’état va sur la ligne de commande :

ollaya run winnow:e4b --questions '{"topic":{"type":"choice","criteria":["billing","access","other"]}}' "..."
ollaya run winnow:e4b --questions @questions.json "..."
cat questions.json | ollaya run winnow:e4b --questions @- "..."

L’état est le reste de la ligne de commande. Sans état, run lit stdin en entrée pipée :

cat ticket.txt | ollaya run laya --preset triage

Sur un terminal sans état, run ouvre une invite. Saisis un état et appuie sur Entrée ; entoure plusieurs lignes de """. Commandes :

Commande Effet
/preset NAME Bascule vers un ensemble de questions intégré
/set questions FILE Utilise les questions d’un fichier JSON
/show Affiche le modèle et les questions actuelles
/clear Efface l’écran
/bye Quitte (ou Ctrl+D)
/?, /help Aide

ollaya serve

Démarre le serveur auquel la CLI et tes applications parlent. Il sert l’API native (/api/*) et l’API compatible TypeSafe (/v1/*) ; voir la référence de l’API. L’installateur Linux le lance comme service systemd ollaya.

ollaya serve

Tu en as rarement besoin : les autres commandes démarrent le serveur en arrière-plan quand il ne tourne pas. Si un serveur tourne déjà à OLLAYA_HOST, ollaya serve le signale et se termine ; arrête d’abord celui-là avec ollaya stop pour lancer le serveur au premier plan.

Il se configure par variables d’environnement :

Variable Défaut Effet
OLLAYA_HOST 127.0.0.1:11435 Adresse d’écoute ; la cible de la CLI
OLLAYA_MODELS ~/.ollaya/models Dépôt de modèles
OLLAYA_KEEP_ALIVE 5m Combien de temps un modèle reste chargé après sa dernière requête
OLLAYA_MAX_LOADED_MODELS 3 Modèles gardés chargés à la fois
OLLAYA_MAX_QUEUE 512 Requêtes de décision en vol avant 503 QUEUE_FULL
OLLAYA_LOAD_TIMEOUT 5m Combien de temps un modèle peut mettre à charger
OLLAYA_DEVICE auto auto (un GPU NVIDIA si l’installateur a ajouté les bibliothèques CUDA, sinon le CPU), cpu, cuda ou cuda:<n>
OLLAYA_API_KEY non défini Exige Authorization: Bearer <key> ; la CLI l’envoie aussi
OLLAYA_ORIGINS non défini Origines de navigateur supplémentaires autorisées, séparées par des virgules
OLLAYA_REGISTRY ollaya.dev Hôte de registre par défaut dans les noms de modèles
OLLAYA_LOG info Niveaux de journal ; debug journalise chaque requête avec son statut et sa durée
OLLAYA_LOG_DIR non défini Journalise dans <dir>/server.log au lieu de stderr (créé si absent ; complété, jamais tourné)

Pour le service systemd, modifie-les avec sudo systemctl edit ollaya et des lignes Environment=.

ollaya pull

Télécharge un modèle et vérifie chaque couche par son sha256. Tirer un routeur tire aussi chaque modèle vers lequel il route. Seules les couches dont cette machine a besoin sont téléchargées, et les téléchargements interrompus reprennent.

ollaya pull laya

ollaya list et ollaya ps

list affiche les modèles de cette machine avec leur ID, leur taille et le moment où ils ont été tirés. ps affiche les modèles chargés, l’appareil sur lequel ils tournent (cpu, cuda:0), la précision et le moment où ils seront déchargés.

NAME                ID             SIZE     MODIFIED
laya:latest         b87ca1631b11   11 KB    13 seconds ago
laya:multilingual   ba7a334675b4   684 MB   13 seconds ago
laya:en             bf30e4654e94   854 MB   30 seconds ago

ollaya show

Affiche l’architecture d’un modèle, ses paramètres, sa longueur de contexte, ses précisions, ses langues, ses capacités et sa licence. Pour un routeur, il affiche les routes.

Option Affiche uniquement
--questions Les questions intégrées au modèle
--license La licence
--modelfile Un Modelfile qui recrée le modèle
--parameters Les paramètres, comme une précision fixée

ollaya stop

ollaya stop MODEL décharge un modèle en cours une fois ses requêtes en vol terminées, au lieu d’attendre la fin du keep-alive.

ollaya stop sans modèle arrête le serveur à OLLAYA_HOST, ce qui décharge tous les modèles. Il n’arrête qu’un serveur que tu as démarré, avec ollaya serve ou en lançant une autre commande. Il n’arrête jamais le serveur d’un autre utilisateur, comme le service systemd Linux ; arrête celui-là avec sudo systemctl stop ollaya.

ollaya rm et ollaya cp

ollaya cp laya:en my-guardrail
ollaya rm my-guardrail

rm supprime aussi les blobs qu’aucun autre modèle n’utilise. Supprimer un routeur conserve les modèles vers lesquels il route. cp écrase une destination existante.

ollaya preset

Un preset est un ensemble de questions nommé que tu peux réutiliser avec n’importe quel modèle : ollaya run MODEL --preset NAME, ou "preset": "NAME" sur /api/decide. Six sont intégrés. Enregistre les tiens :

ollaya preset create billing-check --questions billing.json --description "Billing, and how upset the customer is"
ollaya run winnow:e4b --preset billing-check "I was charged twice this month."
Commande Effet
ollaya preset list Les presets intégrés et personnalisés, avec leurs ids de questions
ollaya preset show NAME Les questions d’un preset, en JSON
ollaya preset create NAME --questions FILE|@FILE|JSON [--description TEXT] Enregistre un preset personnalisé, en remplaçant celui de même nom. --questions accepte les mêmes formes que dans ollaya run
ollaya preset rm NAME... Supprime des presets personnalisés. Les presets intégrés ne peuvent pas être supprimés

Les noms sont des lettres minuscules, des chiffres, - et _. Les presets personnalisés sont stockés par le serveur (dans presets/ à côté des modèles), donc la CLI, l’API et le serveur MCP les voient tous. Un preset diffère d’un modèle créé avec la directive QUESTIONS d’un Modelfile : il n’est lié à aucun modèle et ne copie rien.

ollaya update

Installe la dernière version par-dessus celle-ci : il relance le script d’installation dans le même préfixe, donc les modèles, les presets et le service systemd restent tels quels.

ollaya update --check   # only say whether a newer release exists
ollaya update

Un binaire fourni avec l’application de bureau (l’app macOS, l’installateur Windows, une AppImage, ou les paquets .deb et .rpm) se met à jour en installant la nouvelle application, et un conteneur en tirant la nouvelle image ; ollaya update le dit au lieu de le modifier.

ollaya create

Construit un modèle à partir d’un Modelfile, par exemple pour y intégrer un ensemble de questions, une calibration réajustée ou une précision fixée. -f vaut ./Modelfile par défaut.

ollaya create triage -f Modelfile