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 /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: "" 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: "" # 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 " # capacity: 4 # max_queue: 16 # queue_timeout_ms: 30000 # request_timeout_ms: 300000 # runtime: # concurrency: 4 # workspace_root: "/workspace"