Add Nuxt MiniMax H3 relay studio for local ComfyUI.

Headless image-to-video UI queues jobs on the desktop ComfyUI instance with live SSE progress and Authentik SSO.
This commit is contained in:
2026-08-25 17:43:29 -05:00
commit 4c5c65db98
31 changed files with 12965 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
// Nitro bundles this JSON into the production server output.
import workflowTemplate from '../assets/workflow_api.json'
export interface GenerateParams {
prompt: string
imageName: string
width: number
height: number
steps: number
seed: number
turbo: boolean
length: number
}
type WorkflowGraph = Record<string, { class_type: string; inputs: Record<string, unknown>; _meta?: { title?: string } }>
export function buildWorkflow(params: GenerateParams) {
const graph = structuredClone(workflowTemplate) as WorkflowGraph
graph['1'].inputs.image = params.imageName
graph['8'].inputs.prompt = params.prompt
graph['8'].inputs.width = params.width
graph['8'].inputs.height = params.height
graph['8'].inputs.length = params.length
graph['9'].inputs.noise_seed = params.seed
graph['11'].inputs.steps = params.steps
graph['7'].inputs.switch = params.turbo
graph['6'].inputs.strength_model = params.turbo ? 1 : 0
return graph
}
export const NODE_LABELS: Record<string, string> = {
'1': 'Loading image',
'2': 'Loading Qwen3-VL encoder',
'3': 'Loading MiniMax H3 model',
'4': 'Loading video VAE',
'5': 'Loading audio VAE',
'6': 'Applying turbo LoRA',
'7': 'Selecting model path',
'8': 'Encoding prompt & latent',
'9': 'Preparing seed',
'10': 'Selecting sampler',
'11': 'Building schedule',
'12': 'Preparing guider',
'13': 'Sampling',
'14': 'Decoding video frames',
'15': 'Decoding audio',
'16': 'Encoding video',
'17': 'Saving MP4'
}