130+ modèles d'IA dans votre terminal
Une commande et une clé API pour la vidéo, les images, la musique, la voix et le chat LLM depuis le shell.
Fonctionne sous macOS, Linux et Windows. Nécessite Node.js 18 ou plus récent.
$ uai run google/veo-3.1-fast prompt="a cat walking on the beach at sunset" duration=8 --sync⠹ google/veo-3.1-fast · processing · 0:12 · est $0.30✓ generated in 0:47 ▸ veo-3.1-fast-b4e1.mp4 (2.1MB)C'est quoi
Tous les modèles, une seule interface
La CLI utilise la même API UnificAlly que le playground : Flux, Veo, Kling, SeeDream, Suno, ElevenLabs, GPT, Claude et le reste du catalogue. Par défaut, un traitement média renvoie un id de tâche ; --sync attend la fin et télécharge le résultat.
Chaque argument key=value devient une entrée du modèle, donc la même commande fonctionne dans tout le catalogue. La CLI actualise le catalogue automatiquement et rejette les ids provider/model inconnus avant l'envoi.
Modèles
130+
Installation
npm i -g
Commandes
uai · unifically
Licence
MIT
Configuration
Installer et se connecter
Installez depuis npm, puis connectez la clé API de votre tableau de bord.
Un paquet npm. Node.js 18 ou plus récent :
$ npm install -g @unifically/cliInteractif
Lancez uai tel quel pour ouvrir une session
Des commandes sans le préfixe uai, dans une zone de saisie façon Claude Code. Passez un script à uai session et chaque ligne s'exécute dans l'ordre.
$ uai session › model google/veo-3.1-fast✓ session model google/veo-3.1-fast› params duration=8› run prompt="a cat on the beach at sunset" --sync⠹ processing · 0:24 · est $0.30✓ generated in 0:52 ▸ veo-3.1-fast-c81d.mp4 (2.0MB)Modèle épinglé
Choisissez un modèle une fois avec model, puis un simple run prompt="..." suffit pour le reste de la session (model off l'efface).
model google/veo-3.1-fastValeurs par défaut de session
params injecte des valeurs par défaut dans chaque run ; les valeurs explicites l'emportent. unset en retire une et session affiche ce qui est actif.
params duration=8 · unset duration · sessionColler des images
Collez un fichier ou une capture : il devient [Image N], envoyé au CDN en arrière-plan.
[Image 1]Échappement shell
Préfixez une ligne par ! pour l'exécuter dans votre shell sans quitter la session.
!ffprobe out.mp4Complétion et historique
Tab complète commandes, ids de modèles, options et clés de config. Les flèches parcourent l'historique persistant.
Tab · ↑ / ↓Mode batch
Passez un script et chaque ligne s'exécute dans l'ordre. Les erreurs n'interrompent pas le reste ; exit arrête plus tôt.
uai session < script.txtEntrées
Comment les arguments arrivent au modèle
Chaque key=value devient une entrée du modèle : les nouveaux modèles fonctionnent sans mise à jour de la CLI. Les opérateurs couvrent les types, les fichiers et l’imbrication.
Opérateurs d’entrée
Façon httpie. Les valeurs sont converties par défaut ; les autres opérateurs désactivent la conversion ou vont plus loin.
key=valueseed=42Conversion automatique : nombres, true/false et null deviennent de vrais types.
key==valueversion==3.0Chaîne littérale, jamais convertie. version==3.0 reste "3.0".
key:=jsonurls:='["a","b"]'JSON strict, pour les tableaux et les objets.
key=@pathimage_url=@photo.pngEnvoie d’abord le fichier ou l’URL, puis transmet l’URL hébergée.
a.0.b=valuemessages.0.role=userLa notation par points imbrique objets et tableaux.
Références média
Les fichiers locaux sont envoyés automatiquement ; les URLs passent telles quelles. Un flag au pluriel remplit un champ tableau et un flag au singulier un champ texte : suivez ce que documente le modèle.
--images / --imageimage_urls[] / image_urlLe pluriel remplit image_urls[] ; le singulier, image_url.
--videos / --videovideo_urls[] / video_urlLe pluriel remplit video_urls[] ; le singulier, video_url.
--audios / --audioaudio_urls[] / audio_urlLe pluriel remplit audio_urls[] ; le singulier, audio_url.
--first-image / --start-imagestart_image_urlPremière image. Les modèles kling-*-video utilisent automatiquement start_frame_url.
--last-image / --end-imageend_image_urlDernière image. Les modèles kling-*-video utilisent automatiquement end_frame_url.
key=@fileany other file fieldTout paramètre non couvert par les flags accepte un fichier avec @.
Référence
Toutes les commandes
Le jeu complet de commandes avec syntaxe, options et un exemple réel pour chacune. Copiez n'importe quel exemple directement dans votre terminal.
Générer
uai run
Soumet une tâche de génération. Ajoutez --sync pour interroger jusqu’au bout et télécharger en une seule étape.
Syntaxe
uai run <provider/model> [key=value ...] [flags]Options
-w, --sync--async--url--open / --web-o, --output <path>--save / --no-save--dry-run--confirm--json$ uai run black-forest-labs/flux.2-pro prompt="a fox" aspect_ratio=1:1 --sync✓ generated in 0:06 · $0.03 ▸ flux.2-pro-a1f3.png (1.4MB)uai run <llm>
Les LLM passent par la même commande run : la CLI les route vers le chat et diffuse la réponse dans votre terminal. Ni id de tâche ni téléchargement.
Syntaxe
uai run <provider/model> "prompt" [key=value ...]Options
system="..."temperature=max_tokens=top_p=stop=seed=response_format:=tools:=tool_choice=--images <file>--stream / --no-stream--json$ uai run openai/gpt-5.5 "explain quantum tunneling in one paragraph"Quantum tunneling is a particle passing through an energybarrier it classically lacks the energy to cross... # stdin becomes the prompt$ cat essay.txt | uai run anthropic/claude-fable-5 system="be terse"uai cost
Estime le coût d'un travail avant de le lancer. Simulation, sans frais.
Syntaxe
uai cost <provider/model> [key=value ...]Options
--json$ uai cost google/veo-3.1-quality prompt="test" duration=8est $1.20 · dry run, nothing chargedTâches et suivi
uai status / uai wait
Vérifie une tâche, ou bloque jusqu'à la fin puis télécharge. Sans id, prend votre tâche la plus récente.
Syntaxe
uai status [task_id] · uai wait [task_id]Options
status: --url, --jsonwait: --urlwait: --save / --no-savewait: -o, --output <path>wait: --poll-interval <s>wait: --timeout <s>wait: --json$ uai statustask_9f27c1 · google/veo-3.1-fast · processing · 0:31$ uai wait task_9f27c1✓ completed in 1:12 ▸ veo-3.1-fast-9f27.mp4 (2.4MB)uai tasks
Liste les tâches de votre compte, les plus récentes d'abord. Filtres par modèle, statut, type, fournisseur ou date.
Syntaxe
uai tasks [provider/model] [filters]Options
--status processing|completed|failed--type <csv>--provider <csv>--since <date|unix>--before <date|unix>--page <n>--page-size 10|25|50|100--search <q>--json$ uai tasks --status completed --type video --page-size 25task_9f27c1 · google/veo-3.1-fast · completed · $0.30 · 2mtask_b7d2aa · kuaishou/kling-3.0-video · completed · $0.4536 · 3hCatalogue et recherche
uai models
Parcourez le catalogue en direct lorsqu'une clé est disponible ; le cache local sert hors connexion. Utilisez refresh pour le mettre à jour explicitement.
Syntaxe
uai models [--type ...] [--search ...] · uai models <provider/model> · uai models refreshOptions
--type image|video|audio|llm--search <q>--refresh--json$ uai models --search flux --type imageblack-forest-labs/flux.2-pro image · from $0.03black-forest-labs/flux.2-klein-4b image · from $0.014uai resources
Listes de voix et endpoints utilitaires par noms simples. Passez le nom d'une voix et la CLI résout l'id attendu par le modèle.
Syntaxe
uai resources <path ...>Options
--search <q>--all--json$ uai resources elevenlabs voices --search sarahSarah - Mature, Reassuring, Confident EXAVITQu4vr4xnSDxMaL$ uai run elevenlabs/text-to-speech text="Hello" voice="Sarah" voice "Sarah" → voice=EXAVITQu4vr4xnSDxMaLFichiers
uai upload
Téléversez un fichier local ou une URL vers le CDN et récupérez un file_url.
Syntaxe
uai upload <file | url> [more ...]Options
--json$ uai upload poster.png✓ uploaded ▸ https://files.unifically.com/u/poster-8c1a.pngCompte et configuration
uai account
Votre identité et votre solde en direct.
Syntaxe
uai accountOptions
--json$ uai accountyou@example.com · balance $14.20uai config / uai auth
Valeurs par défaut (dossier de sortie, sondage, sauvegarde) et gestion de la clé API.
Syntaxe
uai config list|get|set|unset|path · uai auth login|status|logoutOptions
saveoutputDirpollIntervaltimeoutbaseUrllogologoStyle--json$ uai config set outputDir ~/Downloads/ai✓ outputDir = ~/Downloads/ai$ uai auth status✓ key sk-...9f2 · validuai onboard
Assistant de premier lancement : connecte votre clé API, choisit un dossier de sortie et charge le catalogue de modèles.
Syntaxe
uai onboardOptions
--force$ uai onboard✓ API key connected✓ output directory ~/ai✓ model catalog loadeduai exec
Mode machine pour agents et scripts : exécute n'importe quelle commande API en flux d'événements JSONL — un objet JSON par ligne de stdout (start, submitted, progress, delta, saved, result, error), stderr silencieux, mêmes codes de sortie.
Syntaxe
uai exec <command ...> → JSONL events on stdoutOptions
--verbose$ uai exec run black-forest-labs/flux.2-pro prompt="a fox" --sync -o fox.png{"event":"submitted","task_id":"0c15…","model":"…"}{"event":"progress","status":"processing","elapsed_ms":3401}{"event":"saved","dest":"fox.png","bytes":342502}{"event":"result","data":{"status":"completed", …}}uai / uai session
La session en ligne classique — les commandes sans le préfixe uai. Envoyez un script à uai session et chaque ligne s'exécute dans l'ordre ; les erreurs n'interrompent pas la suite.
Syntaxe
uai · uai session · uai --resume <session-id> · uai session < script.txtOptions
--no-logo--resume <session-id>$ uai session --no-logo <<'EOF'run black-forest-labs/flux.2-pro prompt="a fox" --syncrun google/veo-3.1-fast prompt="a fox walking" --syncEOFuai completion
Scripts de complétion pour bash, zsh, fish et PowerShell, couvrant commandes, flags et ids de modèles en cache.
Syntaxe
uai completion install [shell] · uai completion bash|zsh|fish|powershell$ uai completion install✓ bash tab-completion installeduai help / uai version
La référence intégrée et la version installée.
Syntaxe
uai help | --help | -h · uai version | --version | -v$ uai helpUsage: uai <command> [options]Médias collés
Collez une image directement dans une session
Sans envoi manuel ni URL à recopier : collez un fichier ou une capture, puis placez le repère là où l’URL doit aller.
[Image N]
Dans une session interactive, collez un fichier image ou une capture d'écran et il devient [Image N], téléversé vers le CDN en arrière-plan. Placez le marqueur là où l'URL doit aller.
# in a session, paste an image (Explorer copy, drag-drop, or Ctrl+V):› run google/nano-banana-pro prompt="restyle this" [Image 1]✓ [Image 1] uploaded · generated in 0:09 ▸ nano-banana-pro-e2d4.png (1.1MB)Options
Options de la CLI
Les cartes de commandes indiquent les filtres spécifiques comme --status et --search. Les options priment sur la configuration lorsqu'elles s'appliquent toutes les deux.
-w, --syncBloque : interroge jusqu’à la fin et télécharge.--asyncLe comportement par défaut, explicite : soumet et renvoie l’id de la tâche.-o, --output <path>Enregistre vers un fichier ou dossier précis.--urlN’affiche que l’URL de sortie sur stdout ; implique --sync.--open / --webTélécharge le résultat et l’ouvre dans votre application par défaut ; implique --sync.--save / --no-save / --no-downloadForce les téléchargements actifs ou non.--out-template <t>Modèle de nom de fichier : {model} {id} {index} {ext}.--jsonSortie structurée lisible par machine sur stdout.--dry-runEstimation du coût seulement, rien n'est soumis.--confirmAffiche le coût estimé et demande avant de dépenser.--webhook <url>Envoie la tâche terminée en POST vers une URL de rappel.--poll-interval <s>Secondes entre interrogations (défaut 3).--timeout <s>Attente maximale pour --sync et les flux LLM (600 par défaut).--stream / --no-streamForce le streaming LLM activé ou désactivé.--api-key <key> / --base-url <url>Clé API et URL de base par appel.--resume <session-id>Restaure une session interactive enregistrée par id.--no-logoSaute le logo de session.--verboseAffiche une progression lisible sur stderr avec uai exec.-h, --help / -v, --versionAffiche la référence des commandes ou la version installée.--no-color / -q, --quietDésactive les couleurs, ou sortie silencieuse avec -q.Des tubes propres pour scripts et agents
--json imprime des données structurées sur stdout, les logs et spinners vont sur stderr. Les invites sont sautées quand stdin n'est pas un terminal, et chaque requête a un timeout.
$ URL=$(uai run black-forest-labs/flux.2-pro prompt="a fox" --url)$ uai tasks --status processing --json | jq -r '.tasks[].task_id'task_9f27c1# agents: JSONL event stream — one JSON object per stdout line$ uai exec run google/veo-3.1-fast prompt="a fox" --sync | jq -r .eventstart → submitted → progress → saved → resultConnaître le prix avant de dépenser
uai cost est une estimation gratuite et --confirm demande avant de soumettre. Un vrai refus pour solde insuffisant est toujours HTTP 402 ; les erreurs de capacité du fournisseur sont signalées comme telles.
$ uai cost google/veo-3.1-quality prompt="test" duration=8est $1.20 · dry run, nothing charged$ uai run google/veo-3.1-quality prompt="test" duration=8 --confirmest $1.20 · continue? [Y/n]Conception
Comment ça marche
Une commande par tâche
run soumet et affiche un id de tâche immédiatement, ce qui convient aux scripts et aux agents. Ajoutez --sync pour interroger et télécharger en une étape. Une attente expirée se reprend avec uai wait <task_id>.
Vos fichiers deviennent des URLs
Collez une image dans une session et elle devient [Image N], envoyée au CDN en arrière-plan. Les chemins de fichiers locaux sont envoyés automatiquement partout où une URL est attendue ; les URLs passent telles quelles.
Le coût avant de dépenser
uai cost chiffre n'importe quel travail sans frais, --confirm montre l'estimation et demande avant d'envoyer, et uai account affiche votre solde en direct. Un vrai refus pour solde insuffisant est toujours un HTTP 402 ; les erreurs de capacité du fournisseur sont signalées comme telles, pour savoir s'il faut recharger ou réessayer.
Faite pour les scripts et les agents
--json imprime des données structurées sur stdout tandis que les logs vont sur stderr : les pipes restent propres. Rien ne se bloque : chaque requête a un timeout et les invites sont ignorées quand stdin n'est pas un terminal.
Paramètres imbriqués
Au-delà du key=value plat, la notation par points construit objets et tableaux imbriqués : messages.0.role=user messages.0.content="..." pour le chat multi-tours, settings.instrumental=true pour les options imbriquées et inputs.images.0=@photo.jpg pour les tableaux.
La CLI est gratuite
Ne payez que les générations, aux mêmes prix par tâche que l'API, facturées à votre clé. Chiffrez d'abord un travail avec uai cost, ou consultez la page des tarifs.
FAQ
Questions fréquentes sur la CLI UnificAlly
Un outil en ligne de commande (paquet npm @unifically/cli, licence MIT) qui exécute 130+ modèles d'image, de vidéo, d'audio et de LLM via l'API UnificAlly. Il soumet les tâches, les interroge jusqu'à la fin et télécharge les résultats, avec une seule clé API.
npm install -g @unifically/cli avec Node.js 18 ou plus récent. Cela installe deux commandes identiques, uai et unifically. Lancez uai onboard une fois pour connecter votre clé et charger le catalogue.
La CLI est gratuite. Vous ne payez que les générations, aux mêmes prix par tâche que l'API UnificAlly. uai cost estime n'importe quel travail avant de dépenser et --confirm demande avant d'envoyer.
Oui. --json met la sortie structurée sur stdout et les logs sur stderr, --url n'imprime que l'URL du résultat, les invites sont ignorées quand stdin n'est pas un terminal, et chaque requête a un timeout.
Utilisez des flags comme --images, --videos ou --first-image. Les fichiers locaux sont envoyés au CDN automatiquement, les URLs passent telles quelles, et coller une image dans une session la transforme en [Image N].
Oui. Les LLM passent par la même commande run : uai run openai/gpt-5.5 "votre prompt" diffuse directement dans votre terminal. Utilisez system="..." pour un prompt système, --no-stream pour un seul bloc de texte, ou passez stdin comme prompt.