{
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "SPI Manifest Schema",
"version": "1.0.0",
"description": "Schema for SPI model manifests with simplified execution structure and enhanced resource management",
"type": "object",
"required": ["version", "model", "execution", "inputs", "outputs"],
"properties": {
"version": {
"type": "integer",
"description": "SPI manifest schema version (integer)"
},
"model": {
"type": "object",
"required": ["name", "version", "domain"],
"properties": {
"name": { "type": "string", "description": "Model name" },
"version": { "type": "string", "description": "Model version" },
"description": { "type": "string", "description": "Model description" },
"domain": {
"type": "string",
"enum": ["text", "image", "video", "audio", "multimodal"],
"description": "Model domain"
},
"author": { "type": "string", "description": "Model author" },
"organization": { "type": "string", "description": "Organization" },
"creation_date": { "type": "string", "format": "date", "description": "Creation date" },
"license": { "type": "string", "description": "License type" },
"tags": { "type": "array", "items": { "type": "string" }, "description": "List of tags" }
}
},
"execution": {
"type": "object",
"required": ["runtime", "entrypoint"],
"properties": {
"runtime": { "type": "string", "description": "Runtime environment (e.g., python, node, etc.)" },
"entrypoint": { "type": "string", "description": "Entry point script to execute" },
"base_image": { "type": "string", "description": "Source docker container image with tag" },
"base_work_dir": { "type": "string", "default": "/app", "description": "Base working directory path in container" },
"resources": {
"type": "object",
"properties": {
"cpu": { "type": "integer", "minimum": 1, "description": "CPU cores required" },
"memory": { "type": "string", "pattern": "^\\d+[KMGT]i$", "description": "Memory required (e.g., 4Gi, 16Gi)" },
"gpu": { "type": "integer", "minimum": 0, "description": "GPU count required" },
"gpu_ram": { "type": "string", "pattern": "^\\d+[KMGT]i$", "description": "GPU memory required" },
"gpu_type": { "type": "string", "description": "GPU type required" }
}
},
"weights": {
"type": "object",
"required": ["mount_path", "source_type"],
"properties": {
"mount_path": { "type": "string", "description": "Container path where weights are mounted" },
"source_type": { "type": "string", "enum": ["external", "internal"], "description": "Weight source type" },
"options": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "description", "parameters", "trainable", "tunable"],
"properties": {
"name": { "type": "string", "description": "Weight set name/identifier" },
"description": { "type": "string", "description": "Description of this weight set" },
"url": { "type": "string", "description": "URL to download weights from" },
"file_path": { "type": "string", "description": "File path relative to container" },
"parameters": { "type": "string", "pattern": "^\\d+(\\.\\d+)?[KMGTB]?$", "description": "Number of parameters (e.g., 1.3B)" },
"min_memory_required": { "type": "string", "pattern": "^\\d+[KMGT]i$", "description": "Minimum memory required" },
"recommended_memory": { "type": "string", "pattern": "^\\d+[KMGT]i$", "description": "Recommended memory" },
"trainable": { "type": "boolean", "description": "Whether weights can be trained further" },
"tunable": { "type": "boolean", "description": "Whether weights can be fine-tuned" }
}
},
"description": "Available weight options"
}
}
},
"env_variables": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Environment variables" }
}
},
"inputs": {
"type": "array",
"items": {
"type": "object",
"required": ["name", "type", "description"],
"properties": {
"name": { "type": "string", "description": "Input parameter name" },
"type": { "type": "string", "enum": ["string","integer","float","decimal","boolean","file","array","map"], "description": "Input parameter type" },
"description": { "type": "string", "description": "Input parameter description" },
"required": { "type": "boolean", "default": false, "description": "Whether the parameter is required" },
"default": { "description": "Default value" },
"constraints": { "type": "object", "description": "Type-specific constraints" },
"mime_types": { "type": "array", "items": { "type": "string" }, "description": "Allowed MIME types for file inputs" },
"file_pattern": { "type": "string", "description": "Glob pattern for file inputs" },
"mount_path": { "type": "string", "description": "Container path for file inputs" },
"domain_specific": {
"type": "object",
"properties": {
"video": {
"type": "object",
"properties": {
"min_resolution": { "type": "string", "description": "Minimum resolution" },
"max_resolution": { "type": "string", "description": "Maximum resolution" },
"min_fps": { "type": "integer", "description": "Minimum frames per second" },
"max_fps": { "type": "integer", "description": "Maximum frames per second" },
"min_duration_seconds": { "type": "integer", "description": "Minimum duration in seconds" },
"max_duration_seconds": { "type": "integer", "description": "Maximum duration in seconds" },
"color_space": { "type": "array", "items": { "type": "string" }, "description": "Supported color spaces" }
}
},
"audio": {
"type": "object",
"properties": {
"min_sample_rate": { "type": "integer", "description": "Minimum sample rate in Hz" },
"max_sample_rate": { "type": "integer", "description": "Maximum sample rate in Hz" },
"channels": { "type": "array", "items": { "type": "integer" }, "description": "Supported channel counts" }
}
},
"image": {
"type": "object",
"properties": {
"min_resolution": { "type": "string", "description": "Minimum resolution" },
"max_resolution": { "type": "string", "description": "Maximum resolution" },
"color_modes": { "type": "array", "items": { "type": "string" }, "description": "Supported color modes" },
"aspect_ratios": { "type": "array", "items": { "type": "string" }, "description": "Supported aspect ratios" }
}
}
}
}
}
}
},
"outputs": {
"type": "array",
"items": {
"type": "object",
"required": ["name","type","description"],
"properties": {
"name": { "type": "string", "description": "Output parameter name" },
"type": { "type": "string", "enum": ["string","integer","float","boolean","file","array","map"], "description": "Output parameter type" },
"description": { "type": "string", "description": "Output parameter description" },
"required": { "type": "boolean", "default": false, "description": "Whether the output is required" },
"file_pattern": { "type": "string", "description": "Glob pattern for file outputs" },
"mime_types": { "type": "array", "items": { "type": "string" }, "description": "Expected MIME types for file outputs" },
"index_padding": { "type": "integer", "description": "Number of digits for file index padding" },
"mount_path": { "type": "string", "description": "Container path for file outputs" },
"domain_specific": {
"type": "object",
"properties": {
"video": {
"type": "object",
"properties": {
"min_resolution": { "type": "string", "description": "Minimum output resolution" },
"max_resolution": { "type": "string", "description": "Maximum output resolution" },
"min_fps": { "type": "integer", "description": "Minimum output frames per second" },
"max_fps": { "type": "integer", "description": "Maximum output frames per second" },
"min_duration_seconds": { "type": "integer", "description": "Minimum output duration" },
"max_duration_seconds": { "type": "integer", "description": "Maximum output duration" },
"color_space": { "type": "array", "items": { "type": "string" }, "description": "Output color spaces" },
"codec": { "type": "string", "description": "Output codec" }
}
},
"audio": {
"type": "object",
"properties": {
"sample_rate": { "type": "integer", "description": "Output sample rate in Hz" },
"channels": { "type": "integer", "description": "Output channel count" },
"codec": { "type": "string", "description": "Output codec" }
}
},
"image": {
"type": "object",
"properties": {
"min_resolution": { "type": "string", "description": "Minimum output resolution" },
"max_resolution": { "type": "string", "description": "Maximum output resolution" },
"color_modes": { "type": "array", "items": { "type": "string" }, "description": "Output color modes" },
"aspect_ratios": { "type": "array", "items": { "type": "string" }, "description": "Output aspect ratios" }
}
}
}
}
}
}
}
}
}