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
Dale una estrella a este repositorio si UpRes te resulta útil.
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
- Regístrate en upres.ai (gratis — 5 upscales/mes)
- Ve a upres.ai/account/api-keys
- 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
| Ejemplo | Qué hace |
|---|---|
| batch-upscale-folder.js | Escala todas las imágenes de una carpeta con concurrencia configurable |
| restore-photo-folder.py | Restaura fotos antiguas/escaneadas con Lumen |
| ecommerce-pipeline.js | Pipeline de imágenes de producto: tomas crudas → 4K → listas para publicar |
| lightroom-export-hook.md | Auto-escalado de exportaciones de Lightroom mediante hook de post-procesamiento |
| figma-plugin-stub.md | Guí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.
| Alias | Tipo | Mejor para |
|---|---|---|
flare | Imagen | Fotos cotidianas, predeterminado más rápido |
prism | Imagen | Texto, logos, tomas de producto — mantiene los bordes fieles |
lumen | Imagen | Máxima recuperación de detalle para impresión, hasta 8x |
mirage | Imagen | Inventa nuevo detalle — arte e imágenes destacadas |
hush | Imagen | Reducción de ruido fiel, mismo tamaño que la fuente |
keen | Imagen | Desenfocado y nitidez, mismo tamaño |
visage | Imagen | Solo rostros, no amplía |
atelier | Imagen | Hush, Visage si es un retrato, luego Lumen |
motion | Video | Acabado 4K rápido para video de IA |
motion-x | Video | Grado cinematográfico, para cine y comerciales |
still | Video | Reducción de ruido temporal, la resolución se mantiene |
cadence | Video | Interpolación de fotogramas, no amplía |
atelier-x | Video | Still, luego Motion X |
voice | Voz | Reducció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
| Plan | Precio | Incluye | API | Marca de agua |
|---|---|---|---|---|
| Gratis | $0 | 5 upscales/mes | — | Sí |
| Creator | $9/mes (oferta de lanzamiento, antes $19) | 50 imágenes fijas + 20 min de video 4K/mes | — | No |
| Studio | $39/mes | 250 imágenes fijas + 90 min de video 4K/mes | Sí | 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:
| Estado | Comportamiento |
|---|---|
401 | Imprime error de clave API + enlace a gestión de claves, sale |
402 | Imprime cuota excedida + enlace a precios, sale |
429 | Imprime mensaje de límite de tasa (60 req/min), sale |
5xx | Lanza 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