@kontextmind/kxm
Version:
KXM local-first multi-agent orchestration and operator dashboard
153 lines (152 loc) • 4.62 kB
JSON
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://schemas.kxm.dev/model.schema.json",
"title": "KXM model route",
"description": "Live kxm.model.v2 route. Admission status is recorded on the route. This schema does not dispatch.",
"type": "object",
"required": ["schema", "harness", "model", "vendor", "status", "permissions"],
"additionalProperties": false,
"properties": {
"schema": { "const": "kxm.model.v2" },
"id": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
},
"aliases": {
"type": "array",
"description": "Deprecated route ids that still resolve to this file. A deprecation warning is printed when one is used.",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
},
"uniqueItems": true,
"maxItems": 16
},
"harness": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
},
"model": { "type": "string", "minLength": 1, "maxLength": 200 },
"vendor": { "type": "string", "minLength": 1, "maxLength": 64 },
"status": { "enum": ["admitted", "candidate", "retired"] },
"permissions": {
"type": "array",
"items": { "enum": ["edit", "read-only"] },
"minItems": 1,
"maxItems": 2,
"uniqueItems": true
},
"origin": {
"type": "object",
"required": ["source", "sha256"],
"additionalProperties": false,
"properties": {
"source": { "type": "string", "minLength": 1, "maxLength": 512 },
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
}
},
"thinking": { "type": "string", "minLength": 1, "maxLength": 64 },
"tags": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
},
"uniqueItems": true,
"maxItems": 32
},
"capabilities": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
},
"uniqueItems": true,
"maxItems": 32
},
"priority": { "type": "integer", "minimum": -10000, "maximum": 10000 },
"fallbacks": {
"type": "array",
"maxItems": 8,
"items": {
"oneOf": [
{
"type": "object",
"required": ["profile"],
"additionalProperties": false,
"properties": {
"profile": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
}
}
},
{
"type": "object",
"required": ["tag"],
"additionalProperties": false,
"properties": {
"tag": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
},
"capabilities": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
},
"uniqueItems": true,
"maxItems": 32
}
}
},
{
"type": "object",
"required": ["provider", "model"],
"additionalProperties": false,
"properties": {
"provider": {
"type": "string",
"pattern": "^[a-z][a-z0-9]*(?:[-_][a-z0-9]+)*$",
"minLength": 1,
"maxLength": 64
},
"model": { "type": "string", "minLength": 1, "maxLength": 200 }
}
}
]
}
},
"limits": {
"type": "object",
"additionalProperties": false,
"properties": {
"contextTokens": { "type": "integer", "minimum": 1 },
"outputTokens": { "type": "integer", "minimum": 1 },
"timeoutMs": { "type": "integer", "minimum": 0, "maximum": 31536000000 }
}
}
},
"if": {
"properties": { "harness": { "const": "pi" } },
"required": ["harness"]
},
"then": { "required": ["origin"] }
}