Skip to content

XUMI Manifest Schema

{
  "$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" }
                }
              }
            }
          }
        }
      }
    }
  }
}