PTENES
Estudio creativo local · 5 proveedores

73 modelos de imagen y video, un solo contrato.

Las claves se quedan en tu máquina, puedes editar el prompt antes de gastar, los archivos son tuyos y cada centavo aparece detallado.

Estación de trabajo en una habitación oscura, con un monitor que muestra una cuadrícula de imágenes generadas en paneles iluminados en ámbar
Qué es

Un agregador que se ejecuta en tu máquina.

Guarda tus claves, conoce el formato que espera cada modelo, reescribe la solicitud al estilo de ese modelo, la envía, hace seguimiento, descarga el archivo y anota el costo. Nada de eso es difícil —y ese es el punto: es exactamente la capa por la que los servicios de wrapper cobran una suscripción.

🔌 Cinco proveedores, un contrato

fal, Kling, Agnes, kie y un servidor local en tu GPU funcionan detrás del mismo adaptador. Ninguno es obligatorio: los que falten aparecerán como no disponibles con el motivo, y el estudio se inicia de todos modos.

💵 Costo escrito, no estimado

Tres unidades que no se suman entre sí: dólar, crédito del plan y cero. El consumo real se mide por la diferencia en la cuenta, y lo que no se puede saber antes de ejecutar se marca como desconocido en vez de inventarlo.

🧠 Ningún LLM decide aquí

El enrutamiento, el catálogo, el precio, la disponibilidad y los reintentos son código determinista. El modelo es una herramienta contratada para cada tarea, nunca un gerente; por eso el costo es previsible.

Cómo funciona

De la idea al recibo.

El mismo flujo sirve para ti en pantalla y para un agente conectado por MCP.

Tu idea→ Refinamiento por modelo→ Presupuesto→ Envío al proveedor→ Seguimiento→ Copia local→ Costo en el ledger
1

Refinamiento visible

La reescritura se muestra y se puede editar antes antes de que gastes. Es el lugar más barato para detectar un malentendido: después de enviar, corregirlo cuesta otra ronda.

2

Cadena de tres eslabones

Gemini, luego OpenRouter y después el Codex local. Con un solo refinador, su cuota hace caer todo el estudio; eso fue lo que pasó en producción y por eso se convirtió en una cadena.

3

Tu archivo, al instante

Todo el contenido multimedia se replica localmente a propósito: las URL de los proveedores caducan (24h en Kling, temporales en Agnes). Lo que generaste no desaparece cuando el enlace deja de funcionar.

Los cinco proveedores

ProveedorModelosCómo cobraQué necesitas
fal.ai37dólares, precio en tiempo realFAL_KEY
Kling26créditos del planCLI oficial con inicio de sesión OAuth
Agnes AI4ceroAGNES_API_KEY
kie.ai4créditosKIE_API_KEY
inemaimg2cero (tu GPU)servidor local en funcionamiento
Requisitos previos

La lista es corta.

Node es el único requisito real. Todos los proveedores son opcionales y se degradan por sí solos: si falta una clave, esos modelos quedan indisponibles, con el motivo y cómo resolverlo, y el estudio sigue abriéndose.

Node 22.5+

Node 24 recomendado, porque el estudio usa el node:sqlite nativo: sin base de datos externa ni servicio que iniciar.

node -v  # v22.5 o superior

Al menos un proveedor

Para generar cualquier cosa. Empieza por los de costo cero si quieres probar sin gastar.

# gratis, sin tarjeta
apihub.agnes-ai.com  # Agnes

Opcionales que valen la pena

Un refinador (Google AI Studio u OpenRouter); Chrome para imprimir en PDF; Codex o Claude Code para el creador de sitios web con agente.

# sin refinador, el prompt se envía tal cual
# — y Agnes rechaza otros idiomas
Guía de uso · paso a paso

Del clon al primer resultado.

Comandos reales, en orden. Desde cero hasta el primer archivo generado pasan unos minutos; la mayor parte es el npm install.

1

Clonar e instalar

Sin etapa de compilación: el estudio se ejecuta directamente desde el código.

git clone https://github.com/inematds/bench-studio-en.git
cd bench-studio-en
npm install
2

Crear el archivo de configuración

O .env.example documenta las 19 variables: qué habilita cada una, cómo se cobra y dónde crear la clave. Completa solo las que tengas.

cp .env.example .env  # .env está ignorado por git
3

Iniciar el estudio

Inicia la API y la interfaz juntas. La interfaz queda en localhost:5200 y la API en localhost:8787.

npm run dev  # abre en http://localhost:5200
4

Revisar las claves desde la pantalla

Botón Config, en la parte superior derecha. Muestra cada variable: si está presente o no, de dónde proviene y los últimos 4 caracteres — nunca el valor. Puedes probar cada proveedor allí y guardar el .env sin salir de la pantalla. Por seguridad, solo acepta grabaciones de quien está en la propia máquina.

# orden de lectura, de mayor a menor prioridad
exportado no shell  >  .env do projeto  >  ~/.env
5

Curar el catálogo una vez

73 modelos es mucho para recorrer. En Model catalog, filtra por proveedor y desactiva lo que no vayas a usar. Es una preferencia, no un bloqueo: el modelo desaparece de los selectores, pero un Redo de un resultado anterior sigue funcionando.

# volver al estado de fábrica: elimina el archivo
rm data/catalog-prefs.json
6

Generar sin gastar

El botón Sin costo activa exactamente los modelos de costo cero. Úsalos para encontrar el prompt que funciona; después, gasta en el modelo que renderiza mejor.

# 6 modelos sin costo: Agnes (4) + servidor local (2)
7

Opcional: poner una contraseña

Ven sin contraseña, a propósito: comunicarse con la propia máquina no debería pedir una. Si vas a exponerla en la red, configura una: se guarda como hash scrypt, y cambiar la contraseña desconecta a quienes ya estaban dentro.

npm run set-password            # pregunta sin mostrar lo que escribes
npm run set-password -- --remove  # quita la contraseña
8

Acceder desde otra máquina (opcional)

De fábrica, solo la propia máquina puede ver el estudio. Para abrirlo al exterior hacen falta tres cosas: que la interfaz escuche en la red, la regla del firewall y acordarse de deshacer ambas. Un comando lo hace todo, y el close deshace exactamente lo que el open hizo.

./scripts/remote.sh open     # publica en la IP de la máquina
./scripts/remote.sh status   # abierto o cerrado, y con qué protección
./scripts/remote.sh close    # vuelve a solo local

O open ofrece la contraseña antes de abrir. Di que sí y llama al set-password; responde n y el estudio se abre sin contraseña, que es lo habitual. La oferta existe por un motivo contundente: la contraseña solo se define en la propia máquina — por la red da 403, incluso después de iniciar sesión. Esta regla impide que quien encuentre el puerto abierto establezca una contraseña propia y te deje fuera. En una VPS, el orden correcto es npm install → npm run set-password → remote.sh open. El puerto de la API (8787) nunca se publica.

./scripts/remote.sh open --ip 203.0.113.7  # solo esa dirección
./scripts/remote.sh open --firewall        # activa ufw (SSH liberado antes)
9

Conectar un agente (opcional)

La pestaña Connect entrega la configuración MCP lista para Claude, Codex y Cursor. El agente ve el mismo conjunto de modelos que tú, no una lista paralela.

npm run mcp  # servidor MCP en stdio
10

Comprobar que todo esté funcionando

Los contratos se ejecutan en segundos. La prueba e2e usa un navegador real y requiere Chromium de Playwright una sola vez.

npm run test:contracts   # 30 pruebas
npx playwright install chromium && npm run test:e2e
Consejos

Lo que ahorra tiempo y dinero.

Cosas aprendidas al usar el estudio de verdad, no al leer la documentación de los proveedores.

📖 Lee el prompt refinado

Puedes editarlo antes de enviarlo. Corregirlo ahí es gratis; corregirlo después cuesta otra generación.

🔗 Mantén dos refinadores

Con uno solo, si se agota la cuota, todo se cae; y el síntoma aparece lejos de la causa: Agnes empieza a rechazar por estar en portugués.

↩️ Rehacer en lugar de volver a escribir

Cada resultado incluye el modelo, los controles, el prompt refinado, la idea original y los archivos adjuntos. Redo devuelve todo para que puedas cambiar una cosa sin pagar por otra reescritura.

🔀 El mismo modelo en dos rutas

Veo, Nano Banana, gpt-image y gemini-image aparecen con más de un proveedor y cuentas distintas: dólares en fal, créditos del plan en Kling. El proveedor aparece junto al nombre: es una opción real, no un duplicado.

⚠️ Kling nunca reintenta por sí solo

Todos los trabajos de Kling se cobran, incluso los que fallan. No se vuelve a enviar nada sin que tú lo indiques.

💾 Vigila el disco, no la CPU

Cada archivo se guarda también localmente: ~1,3 MB por imagen, 0,7–5 MB por video. El estudio inactivo usa 274 MB de RAM y casi nada de CPU.

🏗️ ¿Un sitio? Prefiere un agente

Codex y Claude Code escriben los archivos y corrigen sus propios errores. Los motores de modelos puros (Qwen local, OpenRouter) no necesitan sandbox y cuestan cero, pero requieren más supervisión.

🎨 Dirige el constructor hacia algo tuyo

Un sitio o PDF de tu autoría sirve para calibrar el acabado: tokens, fuentes, paleta y radios. La marca, el texto, la estructura y los archivos nunca se copian.

Seguridad

Qué protege cada cosa.

La configuración de fábrica es lo más cerrada posible sin estorbar: todo en loopback, sin contraseña, y nada sale de tu máquina aparte de las llamadas a los proveedores que configuraste.

🔑 Claves

Se leen en el servidor y nunca se devuelven a la interfaz. La pantalla muestra si están presentes, su origen y los últimos 4 caracteres. El .env se guarda con permisos solo para el propietario.

🚧 Grabación solo en la máquina

Incluso con una sesión válida, se rechaza cambiar la clave o la contraseña a través de la red. La verificación funciona también con el proxy de desarrollo: solo se acepta un origen reenviado cuando el socket ya es local.

🔒 Contraseña opcional

Hash scrypt, cookie httpOnly, sesión de 12h. Protege la API y los archivos generados. Ocultar también la interfaz requiere un proxy inverso, no este proceso — y eso se indica en la documentación, no se oculta.

Dejarlo en línea de forma segura

En orden de lo que más protege. El open es una postura de prueba: el tráfico viaja por HTTP sin cifrar y se puede leer en el trayecto.

#Qué hacerCómo
1Poner una contraseña a la instalaciónnpm run set-password antes del open — por la red no se puede, ni siquiera después de iniciar sesión
2Mantener la API en loopbackes lo habitual; BENCH_API_HOST=0.0.0.0 es una exclusión consciente
3Restringir quién puede accederremote.sh open --ip <seu-ip>, o Tailscale (sin puertos abiertos)
4Activar el firewallremote.sh open --firewall — y revisa también el panel de la VPS
5HTTPS al frentenginx/Caddy + Let's Encrypt sirviendo el dist/ y proxy para 127.0.0.1:8787, con X-Forwarded-For
6Usuario propio, no rootunidad systemd, .env en 600
7Cerrar al terminar./scripts/remote.sh close — la exposición olvidada es la que cuesta créditos
Hoja de ruta

Dónde está y adónde va.

Lo que ya está listo se midió; lo que falta por hacer está listado sin prometer fechas.

v1.5.2
En línea73 modelos en 5 proveedores, selección y disponibilidad por separado, filtros de resultados, Redo, pestaña de modos, constructor con cuatro motores, pantalla de configuración, contraseña opcional y límite de errores por workspace.
Siguiente
Publicar desde el estudioEnviar un sitio generado directamente a git desde la pantalla, sin tener que cargar los archivos a mano.
Siguiente
Agrupar rutas repetidasSeis familias existen en más de un proveedor; mostrarlas como un modelo con rutas alternativas, en vez de como filas sueltas en el catálogo.
Estudio
Video localEjecutar la generación de video en tu propia GPU, junto a los modelos de imagen que ya se ejecutan.
Estudio
Encadenar planes de videoUsar el último fotograma de una toma como referencia para la siguiente, para mantener la consistencia entre cortes.