{ "id": "comfy", "enabledByDefault": true, "providers": ["comfy"], "providerAuthEnvVars": { "comfy": ["COMFY_API_KEY", "COMFY_CLOUD_API_KEY"] }, "contracts": { "imageGenerationProviders": ["comfy"], "musicGenerationProviders": ["comfy"], "videoGenerationProviders": ["comfy"] }, "configSchema": { "type": "object", "additionalProperties": false, "properties": { "mode": { "type": "string", "enum": ["local", "cloud"] }, "baseUrl": { "type": "string" }, "apiKey": { "type": ["string", "object"] }, "allowPrivateNetwork": { "type": "boolean" }, "workflowPath": { "type": "string" }, "workflow": { "type": "object" }, "promptNodeId": { "type": "string" }, "promptInputName": { "type": "string" }, "inputImageNodeId": { "type": "string" }, "inputImageInputName": { "type": "string" }, "outputNodeId": { "type": "string" }, "pollIntervalMs": { "type": "integer", "minimum": 100 }, "timeoutMs": { "type": "integer", "minimum": 1000 }, "image": { "type": "object", "additionalProperties": false, "properties": { "workflowPath": { "type": "string" }, "workflow": { "type": "object" }, "promptNodeId": { "type": "string" }, "promptInputName": { "type": "string" }, "inputImageNodeId": { "type": "string" }, "inputImageInputName": { "type": "string" }, "outputNodeId": { "type": "string" }, "pollIntervalMs": { "type": "integer", "minimum": 100 }, "timeoutMs": { "type": "integer", "minimum": 1000 } } }, "video": { "type": "object", "additionalProperties": false, "properties": { "workflowPath": { "type": "string" }, "workflow": { "type": "object" }, "promptNodeId": { "type": "string" }, "promptInputName": { "type": "string" }, "inputImageNodeId": { "type": "string" }, "inputImageInputName": { "type": "string" }, "outputNodeId": { "type": "string" }, "pollIntervalMs": { "type": "integer", "minimum": 100 }, "timeoutMs": { "type": "integer", "minimum": 1000 } } }, "music": { "type": "object", "additionalProperties": false, "properties": { "workflowPath": { "type": "string" }, "workflow": { "type": "object" }, "promptNodeId": { "type": "string" }, "promptInputName": { "type": "string" }, "outputNodeId": { "type": "string" }, "pollIntervalMs": { "type": "integer", "minimum": 100 }, "timeoutMs": { "type": "integer", "minimum": 1000 } } } } } }