{ "type": "object", "properties": { "$schema": { "type": "string" }, "server": { "type": "object", "properties": { "port": { "type": "integer", "minimum": 1, "maximum": 65535, "default": 3000 }, "dbPath": { "type": "string", "default": "data/kloe.db" }, "artifactOrigin": { "type": "string", "pattern": "^(https?:\\/\\/[^/\\s]+)?$", "default": "" } }, "required": [], "default": { "port": 3000, "dbPath": "data/kloe.db", "artifactOrigin": "" } }, "blobs": { "type": "object", "properties": { "backend": { "enum": [ "fs", "s3" ], "type": "string", "default": "fs" }, "path": { "type": "string", "default": "data/blobs" }, "maxBytes": { "type": "integer", "minimum": 1, "default": 26214400 }, "s3": { "type": "object", "properties": { "bucket": { "type": "string" }, "endpoint": { "type": "string" }, "region": { "type": "string" }, "accessKeyId": { "type": "string" }, "secretAccessKey": { "type": "string" }, "prefix": { "type": "string", "default": "blobs/" }, "virtualHostedStyle": { "type": "boolean" } }, "required": [], "default": { "prefix": "blobs/" } } }, "required": [], "default": { "backend": "fs", "path": "data/blobs", "maxBytes": 26214400, "s3": { "prefix": "blobs/" } } }, "catwalk": { "type": "object", "properties": { "url": { "type": "string" }, "cachePath": { "type": "string" }, "seedPath": { "type": "string" } }, "required": [], "default": {} }, "agent": { "type": "object", "properties": { "maxToolSteps": { "type": "integer", "minimum": 0, "default": 0 }, "smallModel": { "type": "string" }, "visionModel": { "type": "string" } }, "required": [], "default": { "maxToolSteps": 0 } }, "search": { "type": "object", "properties": { "provider": { "enum": [ "default", "none", "ceramic", "hackclub", "llmsolutions", "exa", "duckduckgo" ], "type": "string", "default": "default" }, "apiKey": { "type": "string" }, "endpoint": { "type": "string" }, "searchType": { "type": "string" }, "maxResults": { "type": "integer", "minimum": 1, "default": 5 }, "backends": { "type": "array", "items": { "type": "object", "properties": { "provider": { "enum": [ "ceramic", "hackclub", "llmsolutions", "exa", "duckduckgo" ], "type": "string" }, "apiKey": { "type": "string" }, "endpoint": { "type": "string" }, "searchType": { "type": "string" } }, "required": [ "provider" ] } } }, "required": [], "default": { "provider": "default", "maxResults": 5 } }, "research": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true }, "maxSteps": { "type": "integer", "minimum": 1, "default": 400 }, "maxSources": { "type": "integer", "minimum": 1, "default": 500 }, "maxAgents": { "type": "integer", "minimum": 1, "maximum": 12, "default": 6 }, "firstWave": { "type": "integer", "minimum": 1, "maximum": 12, "default": 2 }, "maxRounds": { "type": "integer", "minimum": 1, "maximum": 6, "default": 3 }, "leadModel": { "type": "string" }, "workerModel": { "type": "string" }, "timeoutMs": { "type": "integer", "minimum": 1000, "default": 1800000 } }, "required": [], "default": { "enabled": true, "maxSteps": 400, "maxSources": 500, "maxAgents": 6, "firstWave": 2, "maxRounds": 3, "timeoutMs": 1800000 } }, "fetch": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": true }, "maxBytes": { "type": "integer", "minimum": 1, "default": 2097152 }, "maxChars": { "type": "integer", "minimum": 1, "default": 50000 }, "timeoutMs": { "type": "integer", "minimum": 1, "default": 15000 }, "allowPrivate": { "type": "boolean", "default": false }, "userAgent": { "type": "string", "default": "Mozilla/5.0 (compatible; kloe/1.0; +https://kloe.dunkirk.sh)" }, "renderer": { "type": "object", "properties": { "provider": { "enum": [ "none", "flaresolverr" ], "type": "string", "default": "none" }, "endpoint": { "type": "string", "default": "http://localhost:8191/v1" }, "timeoutMs": { "type": "integer", "minimum": 1, "default": 60000 } }, "required": [], "default": { "provider": "none", "endpoint": "http://localhost:8191/v1", "timeoutMs": 60000 } }, "archive": { "type": "boolean", "default": true } }, "required": [], "default": { "enabled": true, "maxBytes": 2097152, "maxChars": 50000, "timeoutMs": 15000, "allowPrivate": false, "userAgent": "Mozilla/5.0 (compatible; kloe/1.0; +https://kloe.dunkirk.sh)", "renderer": { "provider": "none", "endpoint": "http://localhost:8191/v1", "timeoutMs": 60000 }, "archive": true } }, "sandbox": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "backend": { "enum": [ "docker" ], "type": "string", "default": "docker" }, "image": { "type": "string", "default": "alpine:3.20" }, "runtime": { "type": "string" }, "dockerHost": { "type": "string" }, "timeoutMs": { "type": "integer", "minimum": 1, "default": 30000 }, "maxTimeoutMs": { "type": "integer", "minimum": 1, "default": 300000 }, "idleMs": { "type": "integer", "minimum": 1, "default": 600000 }, "ttlMs": { "type": "integer", "minimum": 1, "default": 2592000000 }, "maxDormant": { "type": "integer", "minimum": 0, "default": 50 }, "workspaceRoot": { "type": "string" }, "network": { "type": "boolean", "default": false }, "dockerNetwork": { "type": "string", "default": "bridge" } }, "required": [], "default": { "enabled": false, "backend": "docker", "image": "alpine:3.20", "timeoutMs": 30000, "maxTimeoutMs": 300000, "idleMs": 600000, "ttlMs": 2592000000, "maxDormant": 50, "network": false, "dockerNetwork": "bridge" } }, "auth": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "issuer": { "type": "string", "default": "" }, "baseUrl": { "type": "string", "default": "" }, "clientId": { "type": "string", "default": "" }, "clientSecret": { "type": "string", "default": "" }, "allowedSubs": { "type": "array", "items": { "type": "string" }, "default": [] }, "roles": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": { "type": "object", "properties": { "admin": { "type": "boolean", "default": false }, "sandbox": { "type": "boolean", "default": false }, "publish": { "type": "boolean", "default": false }, "models": { "type": "array", "items": { "type": "string" }, "default": [] }, "search": { "type": "array", "items": { "type": "string" }, "default": [] }, "usdPerDay": { "type": "number", "default": 0 }, "tokensPerDay": { "type": "number", "default": 0 }, "subs": { "type": "array", "items": { "type": "string" }, "default": [] }, "providerRoles": { "type": "array", "items": { "type": "string" }, "default": [] } }, "required": [] }, "default": {} }, "sessionTtlDays": { "type": "integer", "minimum": 1, "default": 30 }, "appName": { "type": "string", "default": "kloe" }, "logoUri": { "type": "string", "default": "" } }, "required": [], "default": { "enabled": false, "issuer": "", "baseUrl": "", "clientId": "", "clientSecret": "", "allowedSubs": [], "roles": {}, "sessionTtlDays": 30, "appName": "kloe", "logoUri": "" } }, "security": { "type": "object", "properties": { "credentialKey": { "type": "string", "default": "" } }, "required": [], "default": { "credentialKey": "" } }, "lard": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "baseUrl": { "type": "string", "default": "" }, "clientId": { "type": "string", "default": "" }, "clientSecret": { "type": "string", "default": "" }, "scopes": { "type": "string", "default": "profile offline_access" }, "collector": { "type": "string", "default": "kloe" }, "ingestIdleMs": { "type": "integer", "minimum": 0, "default": 180000 }, "timeoutMs": { "type": "integer", "minimum": 1, "default": 15000 } }, "required": [], "default": { "enabled": false, "baseUrl": "", "clientId": "", "clientSecret": "", "scopes": "profile offline_access", "collector": "kloe", "ingestIdleMs": 180000, "timeoutMs": 15000 } }, "prompt": { "type": "object", "properties": { "name": { "type": "string", "default": "Kloe" }, "tagline": { "type": "string" }, "personality": { "type": "string" }, "preferences": { "type": "string" }, "boundaries": { "type": "string" }, "math": { "type": "boolean", "default": true }, "noEmoji": { "type": "boolean", "default": false }, "platform": { "type": "string" }, "contextFiles": { "type": "array", "items": { "type": "string" }, "default": [] }, "templatePath": { "type": "string" } }, "required": [], "default": { "name": "Kloe", "math": true, "noEmoji": false, "contextFiles": [] } }, "providers": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "oauth": { "type": "object", "properties": { "flow": { "type": "string" }, "baseUrl": { "type": "string" } }, "required": [ "flow", "baseUrl" ] }, "byok": { "type": "boolean", "default": true }, "apiKey": { "type": "string" }, "apiEndpoint": { "type": "string" }, "type": { "type": "string" }, "maxConcurrency": { "type": "number" }, "minIntervalMs": { "type": "number" }, "maxOutputTokens": { "type": "number" }, "providerOptions": { "type": "object", "propertyNames": { "type": "string" }, "additionalProperties": {} }, "models": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "context_window": { "type": "number" }, "default_max_tokens": { "type": "number" }, "can_reason": { "type": "boolean" }, "reasoning_levels": { "type": "array", "items": { "type": "string" } }, "supports_attachments": { "type": "boolean" } }, "required": [ "id" ] } }, "discoverModels": { "type": "boolean" } }, "required": [ "id" ] }, "default": [] } }, "required": [], "$schema": "http://json-schema.org/draft-07/schema#" }