bootstrapper/schemas/comfyui-manifest.schema.json
Rama main · réplica de lectura del repositorio original.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "ComfyUI active-model manifest",
"description": "Validates the manifest YAML written by bootstrapper/utils/comfyui_resolver.py. Consumed by comfyui-init (download_models.sh: name, type, filename, download_url, sha256) and the backend GET /comfyui/db/models (full row as JSON). additionalProperties: false is intentional — any typo in field names must be caught before the downloader runs.",
"type": "object",
"required": ["models"],
"additionalProperties": false,
"properties": {
"models": {
"type": "array",
"items": {
"$ref": "#/definitions/manifest_entry"
}
}
},
"definitions": {
"manifest_entry": {
"type": "object",
"required": ["name", "type", "filename", "download_url"],
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Stable unique identifier — matches the catalog name column."
},
"type": {
"type": "string",
"enum": [
"checkpoint",
"vae",
"lora",
"controlnet",
"ipadapter",
"instantid",
"upscaler",
"embedding",
"clip",
"animatediff",
"motion_lora",
"video_model",
"voice_model",
"audio_model",
"mesh_model",
"diffusion_models",
"text_encoders"
],
"description": "Model category. Mapped from ComfyUILibraryEntry.category (category→type). Drives the in-container target directory."
},
"filename": {
"type": "string",
"minLength": 1,
"description": "On-disk filename inside the target directory. Derived from ComfyUILibraryEntry.filename or the URL path. Used by download_models.sh to name the downloaded file and by ComfyUI's extension scanner to list it."
},
"download_url": {
"type": "string",
"pattern": "^https?://",
"description": "Direct download URL. Mapped from ComfyUILibraryEntry.url (url→download_url). Used by download_models.sh's curl/wget call."
},
"sha256": {
"type": ["string", "null"],
"description": "Hex SHA-256 digest. Verified by download_models.sh when present and non-null."
},
"file_size_gb": {
"type": ["number", "null"],
"minimum": 0,
"description": "Approximate disk size in GB. Mapped from ComfyUILibraryEntry.size_gb (size_gb→file_size_gb). Surfaced in the backend GET response and used for disk-space warnings."
},
"file_size_bytes": {
"type": ["integer", "null"],
"minimum": 0,
"description": "Exact artifact size in bytes when supplied by the catalog."
},
"family": {
"type": ["string", "null"],
"description": "Display family label (e.g. 'SDXL', 'AnimateDiff'). Passed through from ComfyUILibraryEntry.family."
},
"target_dir": {
"type": ["string", "null"],
"description": "In-container subdirectory under /models where the file is placed. Passed through from ComfyUILibraryEntry.target_dir."
},
"min_vram_gb": {
"type": ["number", "null"],
"minimum": 0,
"description": "Minimum GPU VRAM in GB. Passed through from ComfyUILibraryEntry.min_vram_gb."
},
"min_ram_gb": {
"type": ["number", "null"],
"minimum": 0,
"description": "Recommended host or unified memory in GB."
},
"cpu_supported": {
"type": "boolean",
"description": "Whether the model runs on CPU. Passed through from ComfyUILibraryEntry.cpu_supported."
},
"requires_custom_node": {
"type": "array",
"items": {"type": "string"},
"description": "ComfyUI custom-node repo names required to use this model. Passed through from ComfyUILibraryEntry.requires_custom_node."
},
"popularity": {
"type": "integer",
"minimum": 0,
"description": "Approximate popularity score. Passed through from ComfyUILibraryEntry.popularity."
},
"source": {
"type": ["string", "null"],
"description": "Catalog origin: 'huggingface' | 'civitai' | 'curated' | 'fallback' | 'custom'. Passed through from ComfyUILibraryEntry.source."
},
"active": {
"type": "boolean",
"description": "Always true for manifest entries — every row in the manifest is an active model. Written as true by manifest_dict()."
},
"essential": {
"type": "boolean",
"description": "Whether this is an essential model (activated even with empty COMFYUI_USER_MODELS). Always false in manifest rows — essential is a catalog attribute, not a manifest attribute. Written as false by manifest_dict()."
},
"provisioning_required": {
"type": "boolean",
"description": "Whether failure to provision this selected physical artifact blocks readiness."
},
"description": {
"type": ["string", "null"],
"description": "Human-readable notes. Mapped from ComfyUILibraryEntry.notes (notes→description). Returned in the backend GET /comfyui/db/models JSON row."
},
"bundle_id": {
"type": ["string", "null"],
"description": "Logical catalog entry name when this row is one file of a multi-file bundle."
},
"bundle_file_role": {
"type": ["string", "null"],
"description": "Stable role of this file inside its bundle, such as diffusion, text_encoder, vae, or checkpoint."
},
"precision": {
"type": ["string", "null"],
"enum": ["bf16", "fp16", "fp8", null],
"description": "Preferred precision inherited from the logical entry or file."
},
"variant": {
"type": ["string", "null"],
"description": "Artifact variant inherited from the logical entry or file."
},
"host_constraints": {
"type": "array",
"items": {"type": "string"},
"description": "Host constraints inherited from the logical catalog entry."
},
"license_name": {
"type": ["string", "null"],
"description": "Human-readable model-weight license name."
},
"license_url": {
"type": ["string", "null"],
"pattern": "^https?://",
"description": "Pinned authoritative model-weight license URL."
},
"license_restrictions": {
"type": "array",
"items": {"type": "string"},
"description": "Material operator obligations inherited from the logical catalog entry."
}
}
}
}
}