Saltar al contenido principal

130+ modelos de IA en tu terminal

Un comando y una clave API para vídeo, imágenes, música, voz y chat con LLMs desde la shell.

@unifically/cli

Funciona en macOS, Linux y Windows. Requiere Node.js 18 o superior.

terminal
$ 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)

Qué es

Todos los modelos con una sola interfaz

La CLI usa la misma API de UnificAlly que el playground: Flux, Veo, Kling, SeeDream, Suno, ElevenLabs, GPT, Claude y el resto del catálogo. Por defecto, las ejecuciones multimedia devuelven un id de tarea; --sync espera hasta completarla y descarga el resultado.

Cada argumento key=value pasa a formar parte de la entrada del modelo, así que el mismo comando funciona en todo el catálogo. La CLI actualiza el catálogo automáticamente y rechaza ids provider/model desconocidos antes de enviarlos.

Modelos

130+

Instalación

npm i -g

Comandos

uai · unifically

Licencia

MIT

Configuración

Instala e inicia sesión

Instala desde npm y conecta la clave API de tu panel.

Un paquete de npm. Node.js 18 o superior:

npm
$ npm install -g @unifically/cli

Interactivo

Ejecuta uai a secas para abrir una sesión

Comandos sin el prefijo uai, en una caja de entrada al estilo Claude Code. Pasa un script por tubería a uai session y cada línea se ejecuta en orden.

uai · session
$ 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)

Modelo fijo

Elige un modelo una vez con model y el resto de la sesión basta con run prompt="..." (model off lo borra).

model google/veo-3.1-fast

Valores por defecto de sesión

params inyecta valores por defecto en cada run; los valores explícitos tienen prioridad. unset elimina uno y session muestra lo que está activo.

params duration=8 · unset duration · session

Pegar imágenes

Pega un archivo o captura y se convierte en [Image N], subido a la CDN en segundo plano.

[Image 1]

Escape a la shell

Antepon ! a una línea para ejecutarla en tu shell sin salir de la sesión.

!ffprobe out.mp4

Autocompletado e historial

Tab completa comandos, ids de modelos, flags y claves de config. Las flechas recorren el historial persistente.

Tab · ↑ / ↓

Modo por lotes

Pasa un script por tubería y cada línea se ejecuta en orden. Los errores no abortan el resto; exit termina antes.

uai session < script.txt

Entradas

Cómo llegan los argumentos al modelo

Cada key=value se convierte en entrada del modelo, así que los modelos nuevos funcionan sin actualizar la CLI. Los operadores cubren tipos, archivos y anidamiento.

Operadores de entrada

Al estilo httpie. Los valores se convierten por defecto; los demás operadores lo evitan o profundizan.

key=valueseed=42

Conversión automática: números, true/false y null pasan a tipos reales.

key==valueversion==3.0

Cadena literal, nunca convertida. version==3.0 sigue siendo "3.0".

key:=jsonurls:='["a","b"]'

JSON estricto, para arrays y objetos.

key=@pathimage_url=@photo.png

Sube antes el archivo o la URL y envía la URL alojada.

a.0.b=valuemessages.0.role=user

La notación de puntos anida objetos y arrays.

Referencias de medios

Los archivos locales se suben automáticamente; las URLs pasan tal cual. Un flag en plural rellena un campo de array y uno en singular un campo de texto: usa el que documente el modelo.

--images / --imageimage_urls[] / image_url

El plural llena image_urls[]; el singular, image_url.

--videos / --videovideo_urls[] / video_url

El plural llena video_urls[]; el singular, video_url.

--audios / --audioaudio_urls[] / audio_url

El plural llena audio_urls[]; el singular, audio_url.

--first-image / --start-imagestart_image_url

Primer fotograma. Los modelos kling-*-video usan start_frame_url automáticamente.

--last-image / --end-imageend_image_url

Último fotograma. Los modelos kling-*-video usan end_frame_url automáticamente.

key=@fileany other file field

Cualquier parámetro que los flags no cubran acepta un archivo con @.

Referencia

Todos los comandos

El conjunto completo de comandos con sintaxis, flags y un ejemplo real de cada uno. Copia cualquier ejemplo directo a tu terminal.

Generar

uai run

Envía una tarea de generación. Añade --sync para sondear hasta el final y descargar en un solo paso.

Sintaxis

uai run <provider/model> [key=value ...] [flags]

Flags y opciones

-w, --sync--async--url--open / --web-o, --output <path>--save / --no-save--dry-run--confirm--json
uai run
$ 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>

Los LLM pasan por el mismo comando run: la CLI los enruta al chat y transmite la respuesta a tu terminal. Sin id de tarea ni descarga.

Sintaxis

uai run <provider/model> "prompt" [key=value ...]

Flags y opciones

system="..."temperature=max_tokens=top_p=stop=seed=response_format:=tools:=tool_choice=--images <file>--stream / --no-stream--json
uai run
$ 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

Estima el coste de un trabajo antes de ejecutarlo. Simulación, sin cargo.

Sintaxis

uai cost <provider/model> [key=value ...]

Flags y opciones

--json
uai cost
$ uai cost google/veo-3.1-quality prompt="test" duration=8est $1.20 · dry run, nothing charged

Tareas y seguimiento

uai status / uai wait

Consulta una tarea, o bloquea hasta que termine y descarga. Sin id, usa tu tarea más reciente.

Sintaxis

uai status [task_id] · uai wait [task_id]

Flags y opciones

status: --url, --jsonwait: --urlwait: --save / --no-savewait: -o, --output <path>wait: --poll-interval <s>wait: --timeout <s>wait: --json
uai status
$ 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

Lista las tareas de tu cuenta, las más nuevas primero. Filtra por modelo, estado, tipo, proveedor o fecha.

Sintaxis

uai tasks [provider/model] [filters]

Flags y opciones

--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
$ 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 · 3h

Catálogo y búsqueda

uai models

Navega y busca en el catálogo en vivo cuando hay una clave; la caché local sirve sin conexión. Usa refresh para actualizarla expresamente.

Sintaxis

uai models [--type ...] [--search ...] · uai models <provider/model> · uai models refresh

Flags y opciones

--type image|video|audio|llm--search <q>--refresh--json
uai models
$ uai models --search flux --type imageblack-forest-labs/flux.2-pro       image · from $0.03black-forest-labs/flux.2-klein-4b  image · from $0.014

uai resources

Listas de voces y endpoints auxiliares con nombres amigables. Pasa el nombre de una voz y la CLI resuelve el id que el modelo espera.

Sintaxis

uai resources <path ...>

Flags y opciones

--search <q>--all--json
uai resources
$ uai resources elevenlabs voices --search sarahSarah - Mature, Reassuring, Confident   EXAVITQu4vr4xnSDxMaL$ uai run elevenlabs/text-to-speech text="Hello" voice="Sarah"  voice "Sarah" → voice=EXAVITQu4vr4xnSDxMaL

Archivos

uai upload

Sube un archivo local o una URL al CDN y obtén un file_url.

Sintaxis

uai upload <file | url> [more ...]

Flags y opciones

--json
uai upload
$ uai upload poster.png✓ uploaded  ▸ https://files.unifically.com/u/poster-8c1a.png

Cuenta y configuración

uai account

Tu identidad y saldo en vivo.

Sintaxis

uai account

Flags y opciones

--json
uai account
$ uai accountyou@example.com · balance $14.20

uai config / uai auth

Valores por defecto (directorio de salida, sondeo, guardado) y gestión de la clave API.

Sintaxis

uai config list|get|set|unset|path · uai auth login|status|logout

Flags y opciones

saveoutputDirpollIntervaltimeoutbaseUrllogologoStyle--json
uai config
$ uai config set outputDir ~/Downloads/ai✓ outputDir = ~/Downloads/ai$ uai auth status✓ key sk-...9f2 · valid

uai onboard

Asistente de primer uso: conecta tu clave API, elige un directorio de salida y carga el catálogo de modelos.

Sintaxis

uai onboard

Flags y opciones

--force
uai onboard
$ uai onboard✓ API key connected✓ output directory ~/ai✓ model catalog loaded

uai exec

Modo máquina para agentes y scripts: ejecuta cualquier comando de la API como un flujo de eventos JSONL — un objeto JSON por línea de stdout (start, submitted, progress, delta, saved, result, error), stderr silencioso, mismos códigos de salida.

Sintaxis

uai exec <command ...> → JSONL events on stdout

Flags y opciones

--verbose
uai exec
$ 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 sesión en línea clásica: comandos sin el prefijo uai. Envía un script a uai session por tubería y cada línea se ejecuta en orden; los errores no detienen el resto.

Sintaxis

uai · uai session · uai --resume <session-id> · uai session < script.txt

Flags y opciones

--no-logo--resume <session-id>
uai session
$ 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" --syncEOF

uai completion

Scripts de autocompletado para bash, zsh, fish y PowerShell, con comandos, flags e ids de modelos en caché.

Sintaxis

uai completion install [shell] · uai completion bash|zsh|fish|powershell
uai completion
$ uai completion install✓ bash tab-completion installed

uai help / uai version

La referencia integrada y la versión instalada.

Sintaxis

uai help | --help | -h · uai version | --version | -v
uai help
$ uai helpUsage: uai <command> [options]

Medios pegados

Pega una imagen directamente en una sesión

Sin subidas manuales ni URLs de un lado a otro: pega un archivo o una captura y coloca el marcador donde deba ir la URL.

[Image N]

En una sesión interactiva, pega un archivo de imagen o una captura y se convierte en [Image N], subiéndose al CDN en segundo plano. Coloca el marcador donde deba ir la URL.

paste
# 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)

Flags

Flags de la CLI

Las tarjetas de comandos muestran filtros específicos como --status y --search. Los flags tienen prioridad sobre la configuración cuando ambos se aplican.

-w, --syncBloquea: sondea hasta completar y descarga.
--asyncEl valor por defecto, explícito: envía y devuelve el id de la tarea.
-o, --output <path>Guarda en un archivo o directorio concreto.
--urlImprime solo la URL de salida en stdout; implica --sync.
--open / --webDescarga el resultado y lo abre en tu aplicación por defecto; implica --sync.
--save / --no-save / --no-downloadFuerza las descargas activadas o desactivadas.
--out-template <t>Plantilla de nombre: {model} {id} {index} {ext}.
--jsonSalida legible por máquina en stdout.
--dry-runSolo estima el coste, no envía nada.
--confirmMuestra el coste estimado y pregunta antes de gastar.
--webhook <url>Envía la tarea completada por POST a una URL de callback.
--poll-interval <s>Segundos entre sondeos (por defecto 3).
--timeout <s>Espera máxima para --sync y para los streams de LLM (por defecto 600).
--stream / --no-streamFuerza el streaming de LLM activado o desactivado.
--api-key <key> / --base-url <url>Clave API y URL base por llamada.
--resume <session-id>Restaura una sesión interactiva guardada por id.
--no-logoOmite el logo de la sesión.
--verboseMuestra progreso legible en stderr con uai exec.
-h, --help / -v, --versionMuestra la referencia de comandos o la versión instalada.
--no-color / -q, --quietDesactiva los colores, o salida silenciosa con -q.

Tuberías limpias para scripts y agentes

--json imprime datos estructurados en stdout mientras los logs y spinners van a stderr. Las preguntas se omiten cuando stdin no es una terminal, y cada petición tiene timeout.

scripting
$ 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 → result

Conoce el precio antes de gastar

uai cost es una prueba gratuita y --confirm pregunta antes de enviar. Un rechazo real por saldo siempre es HTTP 402; los errores de capacidad del proveedor se señalan como tales.

uai cost
$ 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]

Diseño

Cómo funciona

Un comando por tarea

run envía e imprime un id de tarea al instante, lo que encaja con scripts y agentes. Añade --sync para sondear y descargar en un paso. Una espera agotada se reanuda con uai wait <task_id>.

Los archivos se convierten en URLs por ti

Pega una imagen en una sesión y se convierte en [Image N], subida al CDN en segundo plano. Las rutas de archivos locales se suben automáticamente allí donde se espera una URL; las URLs pasan tal cual.

El coste antes de gastar

uai cost calcula el precio de cualquier trabajo sin cargo, --confirm muestra la estimación y pregunta antes de enviar, y uai account muestra tu saldo en vivo. Un rechazo real por saldo es siempre HTTP 402; los errores de capacidad del proveedor se señalan como tales, así sabes si recargar o reintentar.

Hecha para scripts y agentes

--json imprime datos estructurados en stdout mientras los logs van a stderr, y las tuberías quedan limpias. Nada se cuelga: cada petición tiene timeout y los prompts se omiten cuando stdin no es un terminal.

Parámetros anidados

Más allá de key=value plano, la notación de puntos construye objetos y arrays anidados: messages.0.role=user messages.0.content="..." para chat multiturno, settings.instrumental=true para opciones anidadas e inputs.images.0=@photo.jpg para arrays.

La CLI es gratis

Paga solo por las generaciones, a los mismos precios por tarea que la API, facturadas a tu clave. Calcula primero cualquier trabajo con uai cost o consulta la página de precios.

FAQ

Preguntas frecuentes sobre la CLI de UnificAlly

Una herramienta de línea de comandos (paquete npm @unifically/cli, licencia MIT) que ejecuta 130+ modelos de imagen, vídeo, audio y LLM a través de la API de UnificAlly. Envía tareas, las consulta hasta completarse y descarga resultados, con una sola clave API.

npm install -g @unifically/cli con Node.js 18 o superior. Instala dos comandos idénticos, uai y unifically. Ejecuta uai onboard una vez para conectar tu clave y cargar el catálogo.

La CLI es gratis. Pagas solo por las generaciones, a los mismos precios por tarea que la API de UnificAlly. uai cost estima cualquier trabajo antes de gastar y --confirm pregunta antes de enviar.

Sí. --json pone la salida estructurada en stdout y los logs en stderr, --url imprime solo la URL del resultado, los prompts se omiten cuando stdin no es un terminal y cada petición tiene timeout.

Usa flags como --images, --videos o --first-image. Los archivos locales se suben al CDN automáticamente, las URLs pasan tal cual y pegar una imagen en una sesión la convierte en [Image N].

Sí. Los LLM pasan por el mismo comando run: uai run openai/gpt-5.5 "tu prompt" transmite directamente a tu terminal. Usa system="..." para un prompt de sistema, --no-stream para un único bloque de texto, o canaliza stdin como prompt.