UpRes (upres-cli)

Servidor MCP y CLI de escalado de imágenes y video con IA hasta 8K en 14 modelos neuronales especializados.

Documentación

upres-cli

npm version PyPI version License: MIT

Dale una estrella a este repositorio si UpRes te resulta útil. GitHub stars

CLI + SDK oficial para upres.ai — restauración de imágenes, video y voz. Una API, 14 alias públicos, salida de hasta 8K.

$ upres upscale photo.jpg --model flare --scale 4
Submitting job... model=flare
Job created: 550e8400-e29b-41d4-a716-446655440000 (status: pending)
Waiting for result.......
Downloading to photo_upscaled.jpg... done.

Result: photo_upscaled.jpg

Por qué lo creamos

  • Topaz cuesta $200/año, solo escritorio, sin API, sin automatización
  • Upscayl es genial para casos puntuales, pero no maneja exportaciones masivas ni pipelines de CI
  • Cualquier otro upscaler SaaS o pone marca de agua a tu salida, limita la resolución a 2K, o cobra por imagen sin plan mensual

upres.ai te ofrece una API REST limpia, 14 alias públicos, procesamiento por lotes y precios predecibles desde $9/mes con la oferta de lanzamiento Creator.


Inicio rápido

Node.js

npx upres-cli upscale photo.jpg

O instala globalmente:

npm install -g upres-cli
upres upscale photo.jpg --model lumen --scale 8 --output photo_8k.jpg

Python

pip install upres-ai
upres upscale photo.jpg --model flare --scale 4

Autenticación

  1. Regístrate en upres.ai (gratis — 5 upscales/mes)
  2. Ve a upres.ai/account/api-keys
  3. Genera una clave — se muestra una sola vez
export UPRES_API_KEY=upres_yourkey

O guárdala permanentemente:

mkdir -p ~/.config/upres
echo '{"apiKey":"upres_yourkey"}' > ~/.config/upres/config.json

Orden de resolución de la clave: flag --api-key → variable de entorno UPRES_API_KEY → ~/.config/upres/config.json


Comandos

# Upscale a single image (local file or URL)
upres upscale photo.jpg --model flare --scale 4
upres upscale photo.jpg --model lumen --scale 8 --output out.jpg
upres upscale https://example.com/photo.jpg --model prism

# Upscale video (AI-generated video from Sora, Kling, Runway etc.)
upres upscale clip.mp4 --model motion --scale 4

# Batch upscale a folder
upres batch ./photos/ --model flare --output ./upscaled/ --concurrency 5

# List available models
upres models

# List recent jobs
upres jobs --limit 20 --status completed

# Account / quota info
upres account

SDK de Node.js

import { UpresClient } from "upres-cli";

const client = new UpresClient(); // reads UPRES_API_KEY from env

// Upscale a local file
const job = await client.createJobFromFile("photo.jpg", {
  model: "flare",
  scale: 4,
});

// Wait for completion
const completed = await client.waitForJob(job.id);

// Download result
await client.downloadResult(completed, "photo_4k.jpg");
console.log("Done:", completed.result_url);

Los archivos de más de 50 MB se suben automáticamente mediante el protocolo reanudable TUS.


SDK de Python

from upres import UpresClient

with UpresClient() as client:                        # reads UPRES_API_KEY from env
    job = client.create_job_from_file(
        "photo.jpg",
        model="flare",
        scale=4,
    )
    completed = client.wait_for_job(job["id"])
    client.download_result(completed, "photo_4k.jpg")
    print("Done:", completed["result_url"])

El SDK de Python usa httpx — listo para async, sin dependencias pesadas.


Ejemplos

EjemploQué hace
batch-upscale-folder.jsEscala todas las imágenes de una carpeta con concurrencia configurable
restore-photo-folder.pyRestaura fotos antiguas/escaneadas con Lumen
ecommerce-pipeline.jsPipeline de imágenes de producto: tomas crudas → 4K → listas para publicar
lightroom-export-hook.mdAuto-escalado de exportaciones de Lightroom mediante hook de post-procesamiento
figma-plugin-stub.mdGuía de integración del plugin de Figma

Modelos

14 alias públicos entre imagen, video y voz. Cada uno te dice de antemano si inventa detalles o deja tu archivo intacto. Los alias que no amplían ignoran --scale.

AliasTipoMejor para
flareImagenFotos cotidianas, predeterminado más rápido
prismImagenTexto, logos, tomas de producto — mantiene los bordes fieles
lumenImagenMáxima recuperación de detalle para impresión, hasta 8x
mirageImagenInventa nuevo detalle — arte e imágenes destacadas
hushImagenReducción de ruido fiel, mismo tamaño que la fuente
keenImagenDesenfocado y nitidez, mismo tamaño
visageImagenSolo rostros, no amplía
atelierImagenHush, Visage si es un retrato, luego Lumen
motionVideoAcabado 4K rápido para video de IA
motion-xVideoGrado cinematográfico, para cine y comerciales
stillVideoReducción de ruido temporal, la resolución se mantiene
cadenceVideoInterpolación de fotogramas, no amplía
atelier-xVideoStill, luego Motion X
voiceVozReducción de ruido de voz a 48 kHz. No para música

Catálogo completo de modelos: upres.ai/models · Especificación en vivo: api.upres.ai/v1/openapi.json


Precios

PlanPrecioIncluyeAPIMarca de agua
Gratis$05 upscales/mes—Sí
Creator$9/mes (oferta de lanzamiento, antes $19)50 imágenes fijas + 20 min de video 4K/mes—No
Studio$39/mes250 imágenes fijas + 90 min de video 4K/mesSíNo

El nivel Studio desbloquea la API completa, procesamiento por lotes y sin marca de agua en la salida.

Comparar planes → · vs. Topaz → · vs. Upscayl →


MCP (Claude, Cursor, Hermes)

claude mcp add upres -- npx -y github:auroracapital/upres-cli mcp

O en claude_desktop_config.json / Cursor:

{
  "mcpServers": {
    "upres": {
      "command": "npx",
      "args": ["-y", "github:auroracapital/upres-cli", "mcp"],
      "env": { "UPRES_API_KEY": "upres_yourkey" }
    }
  }
}

Herramientas: upres_list_models, upres_get_credits, upres_upscale_image, upres_upscale_video, upres_enhance_audio, upres_get_job.


Nivel gratuito para proyectos de código abierto

Si estás construyendo algo de código abierto sobre la API, escribe a support@upres.ai con el enlace de tu repositorio. Ofrecemos 500 operaciones/mes para proyectos OSS que califiquen.


Manejo de errores

El SDK maneja estos errores automáticamente:

EstadoComportamiento
401Imprime error de clave API + enlace a gestión de claves, sale
402Imprime cuota excedida + enlace a precios, sale
429Imprime mensaje de límite de tasa (60 req/min), sale
5xxLanza UpresError con mensaje

En Python: lanza AuthError, QuotaExceededError o UpresError.


Contribuciones

Consulta CONTRIBUTING.md. Las pruebas se ejecutan con:

# Node
npm test

# Python
pip install -e ".[dev]"
pytest tests/test_client.py -v

Licencia

MIT — consulta LICENSE