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"
  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
      vllm:
        enabled: false
        endpoint: ""
      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
  #       - name: "ollama-dgx"
  #         enabled: true
  #         base_url: "http://192.168.0.91:11434"
  #         context_size: 262144
  #     vllm_instances:
  #       - name: "vllm-a100"
  #         enabled: true
  #         endpoint: "http://10.0.0.5:8000"
  #     cli:
  #       enabled: true
  #       profiles:
  #         claude:
  #           command: "claude"
  #           mode: "antigravity-print"
  #   runtime:
  #     concurrency: 4
  #     workspace_root: "/workspace"
