iop/configs/edge.yaml
toki 76a8ee5b3b feat: lemonade provider serving validation - config contract and edge node mapping updates
- Migrate config contract files to archive (01_config_contract)
- Update edge config.go for new configuration structure
- Refactor node/mapper.go and mapper_test.go for field mapping
- Update node/store_test.go tests
- Add new fields to configs/edge.yaml
- Extend packages/go/config with new configuration options
- Update protobuf definitions in runtime.proto and generated code
2026-06-15 11:01:21 +09:00

204 lines
5.6 KiB
YAML

edge:
id: "edge-example"
name: "Example Edge"
server:
listen: "0.0.0.0:9090"
# advertise_host is the host other components (Node bootstrap, OpenAI client)
# use to reach this edge. Empty means resolve automatically from interfaces.
advertise_host: ""
# bootstrap is the artifact/bootstrap channel iop-edge can render in
# bootstrap commands and `env` output. Leave artifact_base_url empty until a
# field channel is provisioned.
bootstrap:
artifact_base_url: ""
tls:
enabled: false
logging:
level: "info"
pretty: true
# path is the edge log file. Empty falls back to <binary-dir>/logs/edge.log
# for the bundled dev binary; explicit values win.
path: ""
metrics:
port: 19092
# control_plane connects this Edge to a Control Plane instance.
# Set enabled: true and wire_addr to the Control Plane TCP endpoint to
# activate the outbound connector. Leave enabled: false (default) for
# standalone / local-only Edge deployments.
control_plane:
enabled: false
wire_addr: ""
reconnect_interval_sec: 5
a2a:
enabled: false
listen: "0.0.0.0:8081"
path: "/a2a"
node: ""
adapter: "cli"
session_id: "a2a"
timeout_sec: 120
bearer_token: ""
openai:
enabled: false
listen: "0.0.0.0:18081"
node: ""
adapter: "ollama"
target: ""
models: []
# model_routes maps external model ids to internal adapter/target routing.
# When set, /v1/models exposes these ids and /v1/chat/completions + /v1/responses
# resolve adapter/target per-entry. Entries not matched fall back to target/adapter above.
# workspace_required: true marks CLI agent routes that require a workspace path from the caller.
# model_routes:
# - model: "codex"
# adapter: "cli"
# target: "codex"
# workspace_required: true
# - model: "llama3"
# adapter: "ollama"
# target: "llama3:8b"
# - model: "qwen3"
# adapter: "vllm"
# target: "qwen3-72b"
# node: "node-gpu-01"
# - model: "lemonade"
# adapter: "openai_compat"
# target: "lemonade-served-model"
# node: "node-lemonade-01"
session_id: "openai"
timeout_sec: 120
strict_output: true
strict_stream_buffer: false
console:
adapter: "cli"
target: "codex"
session_id: "default"
background: false
timeout_sec: 240
nodes:
# id is the stable node identity; omitting it falls back to an auto UUID (dev only).
# agent_kind selects the registration kind; omitting it defaults to "generic-node".
# Allowed values: "generic-node" (default).
#
# Single-adapter example (legacy style — still supported):
- id: "node-example-01"
alias: "example-node"
token: "<node-token>"
agent_kind: "generic-node"
adapters:
ollama:
enabled: false
base_url: ""
context_size: 0
capacity: 0
max_queue: 0
queue_timeout_ms: 0
request_timeout_ms: 0
vllm:
enabled: false
endpoint: ""
capacity: 0
max_queue: 0
queue_timeout_ms: 0
request_timeout_ms: 0
cli:
enabled: true
profiles:
claude-tui:
command: "claude"
args:
- "--dangerously-skip-permissions"
env:
- "TERM=xterm-256color"
persistent: true
terminal: true
response_idle_timeout_ms: 5000
startup_idle_timeout_ms: 5000
mode: "persistent-lazy"
codex:
command: "codex"
args:
- "app-server"
env: []
persistent: false
terminal: false
mode: "codex-app-server"
codex-exec:
command: "codex"
args:
- "exec"
- "--json"
resume_args:
- "exec"
- "resume"
- "--json"
env: []
persistent: false
terminal: false
output_format: "codex-json"
mode: "codex-exec"
runtime:
concurrency: 1
workspace_root: ""
# Multi-adapter example: two Ollama instances + CLI profiles on one node.
# Each ollama_instances entry requires a unique "name" within the node.
# - id: "node-multi-01"
# alias: "multi-engine-node"
# token: "<node-token>"
# adapters:
# ollama_instances:
# - name: "ollama-local"
# enabled: true
# base_url: "http://127.0.0.1:11434"
# context_size: 131072
# capacity: 4
# max_queue: 16
# queue_timeout_ms: 30000
# request_timeout_ms: 300000
# - name: "ollama-dgx"
# enabled: true
# base_url: "http://192.168.0.91:11434"
# context_size: 262144
# capacity: 8
# max_queue: 32
# queue_timeout_ms: 30000
# request_timeout_ms: 300000
# vllm_instances:
# - name: "vllm-a100"
# enabled: true
# endpoint: "http://10.0.0.5:8000"
# capacity: 8
# max_queue: 32
# queue_timeout_ms: 30000
# request_timeout_ms: 300000
# cli:
# enabled: true
# profiles:
# claude:
# command: "claude"
# mode: "antigravity-print"
# openai_compat_instances:
# - name: "lemonade"
# enabled: true
# provider: "lemonade"
# endpoint: "http://127.0.0.1:13305"
# headers:
# Authorization: "Bearer <lemonade-api-key-placeholder>"
# capacity: 4
# max_queue: 16
# queue_timeout_ms: 30000
# request_timeout_ms: 300000
# runtime:
# concurrency: 4
# workspace_root: "/workspace"