ci / check (push) Waiting to run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1098 lines
37 KiB
JSON
1098 lines
37 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"properties": {
|
|
"model": {
|
|
"description": "The model a session starts with: one the LLeMbas server you are logged in to serves, by its id there (`deepseek/deepseek-flash`). Default: the server's default for your account.",
|
|
"type": "string"
|
|
},
|
|
"small_model": {
|
|
"description": "The model for small jobs — session titles, commit messages, by its id on the server. Default: the session's model.",
|
|
"type": "string"
|
|
},
|
|
"titles": {
|
|
"description": "Session titles: model (default) — named from the first prompt, then by the model after its first reply; prompt — only from the first prompt, no extra request.",
|
|
"type": "string",
|
|
"enum": [
|
|
"model",
|
|
"prompt"
|
|
]
|
|
},
|
|
"mode": {
|
|
"description": "The permission mode a session starts in (default manual).",
|
|
"type": "string",
|
|
"enum": [
|
|
"manual",
|
|
"edit",
|
|
"auto",
|
|
"plan"
|
|
]
|
|
},
|
|
"theme": {
|
|
"description": "Colours: moria (default), shire, lembas, lembas-light, hermes, mono, or a themes/<name>.yaml of your own.",
|
|
"type": "string"
|
|
},
|
|
"theme_background": {
|
|
"description": "theme (default): the theme paints the whole screen; terminal: the terminal's own background shows, and the theme colours only text, panels and accents.",
|
|
"type": "string",
|
|
"enum": [
|
|
"theme",
|
|
"terminal"
|
|
]
|
|
},
|
|
"skin": {
|
|
"description": "The old name of `theme`; still read when `theme` is not set.",
|
|
"type": "string"
|
|
},
|
|
"busy_input": {
|
|
"description": "A message sent while the agent works: steer (default) — it goes in at the next step, after the running tools finish, and the agent carries on with it; queue — it is sent as the next prompt once the task is done.",
|
|
"type": "string",
|
|
"enum": [
|
|
"steer",
|
|
"queue"
|
|
]
|
|
},
|
|
"mouse": {
|
|
"description": "false: leave the mouse to the terminal — its own selection and Ctrl+Shift+C work without Shift, and the wheel no longer scrolls the transcript (pgup/pgdn do). Default true.",
|
|
"type": "boolean"
|
|
},
|
|
"notify": {
|
|
"description": "When a reply finishes, or the agent waits for you, while the terminal is not focused: ring the bell and ask the terminal for a desktop notification (OSC 9) naming the session — never what the reply says. Default true; false: neither.",
|
|
"type": "boolean"
|
|
},
|
|
"icons": {
|
|
"description": "emoji (default), or plain: one-column symbols for a terminal font that has no emoji.",
|
|
"type": "string",
|
|
"enum": [
|
|
"emoji",
|
|
"plain"
|
|
]
|
|
},
|
|
"personality": {
|
|
"description": "How the agent talks: concise, pragmatic, optimistic, funny, formal, socratic, custom (personality_custom's text), or empty for none (the default). The same presets as the LLeMbas web UI; appended last to the system prompt, under \"## Personality\".",
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"concise",
|
|
"pragmatic",
|
|
"optimistic",
|
|
"funny",
|
|
"formal",
|
|
"socratic",
|
|
"custom"
|
|
]
|
|
},
|
|
{
|
|
"type": "string",
|
|
"const": ""
|
|
}
|
|
]
|
|
},
|
|
"personality_custom": {
|
|
"description": "The personality, in your own words: used when personality is custom (at most 1500 characters).",
|
|
"type": "string",
|
|
"maxLength": 1500
|
|
},
|
|
"memory": {
|
|
"description": "Persistent memory (MEMORY.md, USER.md in ~/.config/lembas/memory/).",
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "false: no memory tool and nothing remembered in the prompt.",
|
|
"type": "boolean"
|
|
},
|
|
"memory_chars": {
|
|
"description": "Size limits in characters: memory 2200, user 1375 by default.",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"user_chars": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"skills": {
|
|
"type": "object",
|
|
"properties": {
|
|
"external_dirs": {
|
|
"description": "More directories of skills, read-only; a skill of the same name elsewhere wins.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"disabled": {
|
|
"description": "Skill names not to offer.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"permission": {
|
|
"description": "Rules per tool: `tool: allow|ask|deny` or `tool: { pattern: action }`; the last match wins.",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"allow",
|
|
"ask",
|
|
"deny"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "string",
|
|
"enum": [
|
|
"allow",
|
|
"ask",
|
|
"deny"
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"hardline_extra": {
|
|
"description": "Global config only: extra never-allowed bash regexes.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"hardline_disable": {
|
|
"description": "Global config only: ids of built-in hardline rules to switch off.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"limits": {
|
|
"type": "object",
|
|
"properties": {
|
|
"steps": {
|
|
"description": "Most model steps in one prompt (default 200) — a runaway backstop, not a budget.",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"bash_timeout": {
|
|
"description": "Seconds a bash command may run in the foreground before it goes on in the background as a job (default 120).",
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"jobs": {
|
|
"description": "Background commands one session may have running at once (default 8).",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"subagent_steps": {
|
|
"description": "Most model steps in one subagent run (default 50) — a runaway backstop, not a budget.",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"wall_seconds": {
|
|
"description": "Budget for one prompt: seconds of work, not counting time spent waiting for you. Past it the model answers from what it has. Unset: none.",
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"output_bytes": {
|
|
"description": "Budget for one prompt: bytes of tool output read. Unset: none.",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"completion_tokens": {
|
|
"description": "Budget for one prompt: tokens the model writes. Unset: none.",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"question": {
|
|
"type": "object",
|
|
"properties": {
|
|
"unattended": {
|
|
"description": "With nobody to answer (headless): take the recommended option, the first, or fail.",
|
|
"type": "string",
|
|
"enum": [
|
|
"recommended",
|
|
"first",
|
|
"fail"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"compaction": {
|
|
"description": "Automatic context management: past auto_at of the window, the conversation is compacted. auto_at: 1 turns it off. (Old tool outputs are never cut afterwards: that would make the server read the whole conversation again.)",
|
|
"type": "object",
|
|
"properties": {
|
|
"auto_at": {
|
|
"type": "number",
|
|
"minimum": 0.1,
|
|
"maximum": 1
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"instructions": {
|
|
"description": "Custom instructions: how you want to be helped, in your own words (at most 4000 characters). Appended near the end of the system prompt, under \"## How the person you are talking to wants to be helped\" — as in the LLeMbas web UI. (A list of files here, from an older config, is read as instruction_files.)",
|
|
"type": "string",
|
|
"maxLength": 4000
|
|
},
|
|
"instruction_files": {
|
|
"description": "More instruction files for the system prompt, besides AGENTS.md / CLAUDE.md.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"search": {
|
|
"type": "object",
|
|
"properties": {
|
|
"order": {
|
|
"description": "Providers to try, in order; the first that answers wins. Default: those configured (webui first), then ddg. webui: the LLeMbas instance's own search.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"webui",
|
|
"searxng",
|
|
"firecrawl",
|
|
"ddg"
|
|
]
|
|
}
|
|
},
|
|
"max_results": {
|
|
"description": "Results per search (default 8).",
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 30
|
|
},
|
|
"searxng": {
|
|
"type": "object",
|
|
"properties": {
|
|
"base_url": {
|
|
"type": "string"
|
|
},
|
|
"api_key": {
|
|
"type": "string"
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"categories": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"base_url"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"firecrawl": {
|
|
"description": "API (api.firecrawl.dev, with a key) or self-hosted (its own URL, no key needed).",
|
|
"type": "object",
|
|
"properties": {
|
|
"base_url": {
|
|
"type": "string"
|
|
},
|
|
"api_key": {
|
|
"type": "string"
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ddg": {
|
|
"type": "object",
|
|
"properties": {
|
|
"region": {
|
|
"type": "string"
|
|
},
|
|
"safe": {
|
|
"type": "string",
|
|
"enum": [
|
|
"strict",
|
|
"moderate",
|
|
"off"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"webui": {
|
|
"description": "Search through a LLeMbas instance: its provider, its settings, its keys.",
|
|
"type": "object",
|
|
"properties": {
|
|
"connection": {
|
|
"description": "Which webui connection (default: the only one there is).",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"fetch": {
|
|
"description": "How web_fetch reads a page: here, through Firecrawl's scrape, or through the LLeMbas instance.",
|
|
"type": "string",
|
|
"enum": [
|
|
"local",
|
|
"firecrawl",
|
|
"webui"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"voice": {
|
|
"description": "Voice in and out. Global only — it carries endpoints and keys, like a connection.",
|
|
"type": "object",
|
|
"properties": {
|
|
"stt": {
|
|
"type": "object",
|
|
"properties": {
|
|
"provider": {
|
|
"description": "openai: POST {base_url}/audio/transcriptions (OpenAI, whisper.cpp's server with its OpenAI path, faster-whisper servers). whispercpp: POST {base_url}/inference (whisper.cpp's own). webui: the LLeMbas instance's.",
|
|
"type": "string",
|
|
"enum": [
|
|
"openai",
|
|
"whispercpp",
|
|
"webui"
|
|
]
|
|
},
|
|
"base_url": {
|
|
"type": "string"
|
|
},
|
|
"api_key": {
|
|
"type": "string"
|
|
},
|
|
"key_cmd": {
|
|
"type": "string"
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"connection": {
|
|
"description": "webui: which webui connection (default: the only one there is).",
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"prompt": {
|
|
"description": "Words it should expect: names, jargon.",
|
|
"type": "string"
|
|
},
|
|
"fallback": {
|
|
"description": "Used when the provider above cannot be reached — for webui, when the instance is down. Same fields.",
|
|
"type": "object",
|
|
"properties": {
|
|
"provider": {
|
|
"description": "openai: POST {base_url}/audio/transcriptions (OpenAI, whisper.cpp's server with its OpenAI path, faster-whisper servers). whispercpp: POST {base_url}/inference (whisper.cpp's own). webui: the LLeMbas instance's.",
|
|
"type": "string",
|
|
"enum": [
|
|
"openai",
|
|
"whispercpp",
|
|
"webui"
|
|
]
|
|
},
|
|
"base_url": {
|
|
"type": "string"
|
|
},
|
|
"api_key": {
|
|
"type": "string"
|
|
},
|
|
"key_cmd": {
|
|
"type": "string"
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"connection": {
|
|
"description": "webui: which webui connection (default: the only one there is).",
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"prompt": {
|
|
"description": "Words it should expect: names, jargon.",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"tts": {
|
|
"type": "object",
|
|
"properties": {
|
|
"provider": {
|
|
"description": "openai: POST {base_url}/audio/speech (OpenAI, Kokoro-FastAPI). piper-http: POST {base_url} with {text} (piper's http_server). piper-cli: the piper program. webui: the LLeMbas instance's, in the account's voice.",
|
|
"type": "string",
|
|
"enum": [
|
|
"openai",
|
|
"piper-http",
|
|
"piper-cli",
|
|
"webui"
|
|
]
|
|
},
|
|
"base_url": {
|
|
"type": "string"
|
|
},
|
|
"api_key": {
|
|
"type": "string"
|
|
},
|
|
"key_cmd": {
|
|
"type": "string"
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"connection": {
|
|
"description": "webui: which webui connection (default: the only one there is).",
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"voice": {
|
|
"type": "string"
|
|
},
|
|
"speed": {
|
|
"type": "number",
|
|
"minimum": 0.25,
|
|
"maximum": 4
|
|
},
|
|
"command": {
|
|
"description": "piper-cli: the program (default piper) and the voice model file (.onnx).",
|
|
"type": "string"
|
|
},
|
|
"model_path": {
|
|
"type": "string"
|
|
},
|
|
"fallback": {
|
|
"description": "Used when the provider above cannot be reached — for webui, when the instance is down. Same fields.",
|
|
"type": "object",
|
|
"properties": {
|
|
"provider": {
|
|
"description": "openai: POST {base_url}/audio/speech (OpenAI, Kokoro-FastAPI). piper-http: POST {base_url} with {text} (piper's http_server). piper-cli: the piper program. webui: the LLeMbas instance's, in the account's voice.",
|
|
"type": "string",
|
|
"enum": [
|
|
"openai",
|
|
"piper-http",
|
|
"piper-cli",
|
|
"webui"
|
|
]
|
|
},
|
|
"base_url": {
|
|
"type": "string"
|
|
},
|
|
"api_key": {
|
|
"type": "string"
|
|
},
|
|
"key_cmd": {
|
|
"type": "string"
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"connection": {
|
|
"description": "webui: which webui connection (default: the only one there is).",
|
|
"type": "string"
|
|
},
|
|
"model": {
|
|
"type": "string"
|
|
},
|
|
"voice": {
|
|
"type": "string"
|
|
},
|
|
"speed": {
|
|
"type": "number",
|
|
"minimum": 0.25,
|
|
"maximum": 4
|
|
},
|
|
"command": {
|
|
"description": "piper-cli: the program (default piper) and the voice model file (.onnx).",
|
|
"type": "string"
|
|
},
|
|
"model_path": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"record_key": {
|
|
"description": "The key that starts and stops recording (default ctrl+t).",
|
|
"type": "string"
|
|
},
|
|
"record_mode": {
|
|
"description": "toggle (default): press to start, press again (or silence) to stop. hold: also stops when the key is let go, in terminals that report it (the kitty keyboard protocol).",
|
|
"type": "string",
|
|
"enum": [
|
|
"toggle",
|
|
"hold"
|
|
]
|
|
},
|
|
"submit": {
|
|
"description": "What happens to what you said: draft (default) puts it in the prompt to check; send sends it.",
|
|
"type": "string",
|
|
"enum": [
|
|
"draft",
|
|
"send"
|
|
]
|
|
},
|
|
"speak": {
|
|
"description": "Speak every reply (default false; /speak toggles it).",
|
|
"type": "boolean"
|
|
},
|
|
"silence_seconds": {
|
|
"description": "Seconds of silence after speech that end a recording (default 3), and the longest one (120).",
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"max_seconds": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"silence_threshold": {
|
|
"description": "Loudness (RMS of 16-bit samples) below which it counts as silence (default 200).",
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"recorder": {
|
|
"description": "auto, or a program: arecord, pw-record, parec, sox, ffmpeg. `recorder_command` instead: any command printing raw 16 kHz mono signed 16-bit little-endian audio to stdout.",
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"arecord",
|
|
"pw-record",
|
|
"parec",
|
|
"sox",
|
|
"ffmpeg"
|
|
]
|
|
},
|
|
"recorder_command": {
|
|
"minItems": 1,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"player": {
|
|
"description": "auto, or a program: pw-play, paplay, aplay, ffplay, mpv, afplay. `player_command` instead: any command; the WAV file's path is added at the end.",
|
|
"type": "string",
|
|
"enum": [
|
|
"auto",
|
|
"pw-play",
|
|
"paplay",
|
|
"aplay",
|
|
"ffplay",
|
|
"mpv",
|
|
"afplay"
|
|
]
|
|
},
|
|
"player_command": {
|
|
"minItems": 1,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"mcp": {
|
|
"description": "MCP servers by name. `{env:}`/`{file:}` are filled in per server (a missing one disables that server only). A project's servers count only once the project is trusted.",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "object",
|
|
"properties": {
|
|
"command": {
|
|
"description": "A local server: the program (and its arguments, as a list). Either this or url.",
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"minItems": 1,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"args": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"env": {
|
|
"description": "Environment for the local server; {env:}/{file:} work here.",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"cwd": {
|
|
"type": "string"
|
|
},
|
|
"url": {
|
|
"description": "A remote server: its streamable HTTP (or SSE) address. Either this or command.",
|
|
"type": "string"
|
|
},
|
|
"headers": {
|
|
"description": "Extra HTTP headers, e.g. Authorization: Bearer {env:TOKEN}.",
|
|
"type": "object",
|
|
"propertyNames": {
|
|
"type": "string"
|
|
},
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"transport": {
|
|
"description": "http (default: streamable HTTP, falling back to SSE) or sse.",
|
|
"type": "string",
|
|
"enum": [
|
|
"http",
|
|
"sse"
|
|
]
|
|
},
|
|
"oauth": {
|
|
"description": "OAuth for a remote server: on by default when the server asks for it; false turns it off.",
|
|
"anyOf": [
|
|
{
|
|
"type": "boolean",
|
|
"const": false
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"client_id": {
|
|
"type": "string"
|
|
},
|
|
"client_secret": {
|
|
"type": "string"
|
|
},
|
|
"scope": {
|
|
"type": "string"
|
|
},
|
|
"callback_port": {
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
]
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"enabled": {
|
|
"description": "false: configured but not started (/mcp on starts it).",
|
|
"type": "boolean"
|
|
},
|
|
"timeout": {
|
|
"description": "Seconds: one tool call (default 120), connecting (default 30).",
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"connect_timeout": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"tools": {
|
|
"description": "Which of its tools to offer: include wins; names or globs (`create_*`).",
|
|
"type": "object",
|
|
"properties": {
|
|
"include": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"exclude": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"prompts": {
|
|
"description": "Offer its prompts as /server:prompt commands (default true).",
|
|
"type": "boolean"
|
|
},
|
|
"resources": {
|
|
"description": "Offer list/read tools for its resources, if it has any (default true).",
|
|
"type": "boolean"
|
|
},
|
|
"instructions": {
|
|
"description": "Put the server's own instructions into the system prompt (default true).",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"knowledge": {
|
|
"description": "The knowledge bases searched (lembas kb); absent: all of them. A project's own config narrows it to what that project needs.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"embedding": {
|
|
"description": "Global config only. An embedding model the LLeMbas server serves, by its id there: knowledge bases are then searched by meaning as well as by words. lembas kb reindex after changing it.",
|
|
"type": "string"
|
|
},
|
|
"effort": {
|
|
"description": "The effort level a session starts with, when the model offers it: an effort, off (thinking switched off, on a model with the switch) or default; otherwise the model's own start level.",
|
|
"anyOf": [
|
|
{
|
|
"type": "string",
|
|
"enum": [
|
|
"minimal",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"xhigh",
|
|
"max"
|
|
]
|
|
},
|
|
{
|
|
"type": "string",
|
|
"const": "off"
|
|
},
|
|
{
|
|
"type": "string",
|
|
"const": "default"
|
|
}
|
|
]
|
|
},
|
|
"agents": {
|
|
"description": "Subagents (harness team.md, subagents.md): how many agents a session may have at work, counting the session's own agent — Subagents: Min 1, Max 4 by default; 1 is this agent alone. Offered where subagents are on and a model could serve one: the session's, when it serves two requests at once, or another model off its one-model server. /team size and /effort (one range, Min and Max) change it for the session.",
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"description": "Subagents, Min: the agents at work at least, this agent included (default 1 — 1 is this agent alone). 2 or more: it works through subagents from the start.",
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"max": {
|
|
"description": "Subagents, Max: the agents at work at most, this agent included (default 4 — this agent and up to 3 subagents). 1: this agent alone, no subagents.",
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"cap": {
|
|
"description": "Global config only. The highest max a session may set (default 32).",
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"subagents": {
|
|
"description": "false: no subagents — no task tool and no team.",
|
|
"type": "boolean"
|
|
},
|
|
"settings_tool": {
|
|
"description": "Global config only. The agent's settings tool: ask (default) — each change is approved like any tool call; allow — changes go through without asking (a less strict mode still asks); off — no settings tool.",
|
|
"type": "string",
|
|
"enum": [
|
|
"ask",
|
|
"allow",
|
|
"off"
|
|
]
|
|
},
|
|
"update": {
|
|
"description": "Global config only. Updating LLeMbas CLI itself.",
|
|
"type": "object",
|
|
"properties": {
|
|
"channel": {
|
|
"description": "stable (default): releases vX.Y.Z only. beta: also vX.Y.Z-beta.N — whichever is newest.",
|
|
"type": "string",
|
|
"enum": [
|
|
"stable",
|
|
"beta"
|
|
]
|
|
},
|
|
"auto": {
|
|
"description": "On start: install (default) — fetch, verify and install a newer release, then say so; notify — only say one is out; off — never look.",
|
|
"type": "string",
|
|
"enum": [
|
|
"install",
|
|
"notify",
|
|
"off"
|
|
]
|
|
},
|
|
"source": {
|
|
"description": "Default: the public LLeMbas CLI releases on GitHub.",
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"github",
|
|
"gitea",
|
|
"static"
|
|
],
|
|
"description": "github or gitea (Forgejo too): their releases API. static: any web directory with files `stable` and `beta` naming a tag, and the assets under <tag>/."
|
|
},
|
|
"url": {
|
|
"description": "gitea: the forge (https://git.example.org). github: the API (default https://api.github.com). static: the directory.",
|
|
"type": "string"
|
|
},
|
|
"repo": {
|
|
"description": "owner/name, for github and gitea.",
|
|
"type": "string",
|
|
"pattern": "^(?!\\.\\.?\\/)[\\w.-]+\\/(?!\\.\\.?$)[\\w.-]+$"
|
|
},
|
|
"token": {
|
|
"description": "For a private repository: {env:NAME} or {file:~/path}, never pasted. Or key_cmd.",
|
|
"type": "string"
|
|
},
|
|
"key_cmd": {
|
|
"type": "string"
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ca": {
|
|
"type": "string"
|
|
},
|
|
"insecure": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": [
|
|
"type"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"public_key": {
|
|
"description": "The ssh-ed25519 key(s) a release's SHA256SUMS.sig must be signed with — instead of LLeMbas CLI's own. For your own builds.",
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"verify": {
|
|
"description": "signature (default): SHA256SUMS must carry a valid signature. checksum: checksums only — for a source of your own that does not sign.",
|
|
"type": "string",
|
|
"enum": [
|
|
"signature",
|
|
"checksum"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"prototypes": {
|
|
"description": "Global config only. Offer the model prototypes: a complete HTML page in a `prototype-chat` or `prototype-page` fence, saved as a file under the state directory (prototypes/<session>/) and listed by /prototype; the LLeMbas web UI renders the same fences live. Default false.",
|
|
"type": "boolean"
|
|
},
|
|
"library": {
|
|
"description": "Global config only. Where memory lives. lembas (the default when the login may reach it): the account's memory records on the LLeMbas server, through its /mcp — the same records its chats have. local: this machine's memory files. Notes, knowledge bases and skills are this machine's either way.",
|
|
"type": "string",
|
|
"enum": [
|
|
"local",
|
|
"lembas"
|
|
]
|
|
},
|
|
"remote": {
|
|
"description": "Global config only. What a LLeMbas instance may ask of this machine over the link: the device decides, never the server.",
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"description": "Accept work from a LLeMbas instance this machine is logged in to (lembas service). Default false.",
|
|
"type": "boolean"
|
|
},
|
|
"roots": {
|
|
"description": "The directories a remote session may be opened in, and anything under them. Empty: none.",
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"max_mode": {
|
|
"description": "The most permissive mode a remote session may run in (default edit). auto only when set here.",
|
|
"type": "string",
|
|
"enum": [
|
|
"manual",
|
|
"edit",
|
|
"auto",
|
|
"plan"
|
|
]
|
|
},
|
|
"approval_timeout": {
|
|
"description": "Seconds an approval waits for an answer from the web before it counts as a denial (default 600).",
|
|
"type": "integer",
|
|
"exclusiveMinimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"require_trust": {
|
|
"description": "Only projects trusted on this machine (default true).",
|
|
"type": "boolean"
|
|
},
|
|
"terminal": {
|
|
"description": "Let the web UI open a terminal here (LLeMbas's terminal panel on a chat on this device): a login shell as this user, in a directory remote sessions may use. Default false.",
|
|
"type": "boolean"
|
|
},
|
|
"scheduled": {
|
|
"description": "Accept scheduled work (harness acp.md, spec 3.5.0): let your schedules on the LLeMbas instance run here as agent turns, in the folders remote work may use, in the schedule's mode (Edit unless it says Auto) lowered to max_mode. Default false. lembas service scheduled on|off.",
|
|
"type": "boolean"
|
|
},
|
|
"terminal_integration": {
|
|
"description": "Shell integration in those terminals (bash, zsh, fish): after your own startup files, the shell marks each prompt, command and exit status (OSC 133) and its directory (OSC 7), so the web UI shows the directory, a mark beside each finished command, and can jump between commands. false: the shell starts as it is. Default true.",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false,
|
|
"title": "LLeMbas CLI config.yaml",
|
|
"description": "~/.config/lembas/config.yaml, or a project's .agent/config.yaml. Strings may be {env:NAME} or {file:path}."
|
|
}
|