test_env: dev-corp
profile: dev-corp-provider-pool
last_updated_at: "2026-07-02"

source:
  remote_runner:
    ssh: fe@172.24.63.178
    repo_root: /Users/fe/agent-work/iop-dev-corp
    setup_required: true
    setup_status: deployed
    current_observation: /Users/fe/agent-work/iop-dev-corp checkout and build/dev-corp-runtime runtime were created on 2026-06-25, then clean-synced/rebuilt at source ref 5b1255a on 2026-07-02; /Users/fe/iop-field remains unrelated legacy field state
    clean_sync:
      - git fetch origin main
      - git reset --hard origin/main
      - git clean -fd
  dirty_policy: discard

edge:
  id: dev-corp-edge
  host: mac-mini
  ssh: fe@172.24.63.178
  os: macOS 26.2
  hardware: Apple M2 Pro / 16GB
  config_path: build/dev-corp-runtime/edge.yaml
  control_plane_enabled_current_runtime: true
  control_plane_http: http://127.0.0.1:18002
  control_plane_status_url: http://127.0.0.1:18002/edges/dev-corp-edge/status
  control_plane_client_ws_runner: ws://127.0.0.1:19004/client
  control_plane_edge_wire_addr_runner: 127.0.0.1:19005
  bootstrap_http_public: http://172.24.63.178:18085
  openai_base_url_public: http://172.24.63.178:18086/v1
  openai_base_url_runner: http://127.0.0.1:18086/v1
  openai_api_key_required_current_runtime: true
  openai_api_key_secret_path_remote: build/dev-corp-runtime/.secrets/openai_api_key
  openai_api_key_value_tracked: false
  edge_node_tcp_public: 172.24.63.178:18087
  admin_addr_runner: 127.0.0.1:19094

build:
  binaries:
    control_plane: build/dev-corp-runtime/bin/control-plane
    edge: build/dev-corp-runtime/bin/iop-edge
    node_macos: build/dev-corp-runtime/bin/iop-node-darwin-arm64
    node_linux_arm64: build/dev-corp-runtime/bin/iop-node-linux-arm64
    node_windows_amd64: null
    node_windows_amd64_note: not part of the default dev-corp provider pool

model:
  alias: gemma4:26b
  alias_status: candidate
  alias_policy: expose one IOP model alias and map provider-specific served_model values per provider
  provider_capacity_total: 13
  provider_capacity_status: verified_with_control_plane_provider_snapshots_2026_07_02
  context_window_max: 262144
  runtime_capacity_targets:
    dgx_spark:
      capacity: 4
      context_window_max: 262144
      kv_size_tokens_effective: 524288
      kv_size_basis: requested minimum 262144x2; verify actual vLLM KV cache from startup log because gpu_memory_utilization controls available KV cache
      fp4_moe_env: VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304
    mac_studio:
      capacity: 5
      context_window_max: 262144
      kv_size_tokens_effective: 786432
      kv_size_basis: requested 262144x3 mapped to vLLM-MLX max_kv_size
  capacity_smoke:
    endpoints:
      - /v1/responses
      - /v1/chat/completions
    concurrent_requests: capacity_plus_one
    expected_total_in_flight: 13
    expected_total_in_flight_status: verified_2026_07_02
    expected_min_queued: 1
    extended_concurrent_requests: 16
    extended_expected_min_queued: 3
    prompt_policy: long_reasoning_allowed
    exact_output_match: false
  latest_capacity_verification:
    date: "2026-07-02"
    source_ref: 5b1255abc5ad530ebfd7a65deecdf5575425a34c
    control_plane_enabled: true
    control_plane_status_url: http://127.0.0.1:18002/edges/dev-corp-edge/status
    provider_snapshot_baseline:
      total_capacity: 13
      providers:
        corp-dgx-spark-01-vllm:
          capacity: 4
          health: healthy
          status: available
        corp-dgx-spark-02-vllm:
          capacity: 4
          health: healthy
          status: available
        corp-mac-studio-mlx-vllm:
          capacity: 5
          health: healthy
          status: available
    responses:
      concurrent_requests: 14
      ok: 14
      max_total_in_flight: 13
      max_total_queued: 3
      provider_max:
        corp-dgx-spark-01-vllm:
          max_in_flight: 4
          max_queued: 1
        corp-dgx-spark-02-vllm:
          max_in_flight: 4
          max_queued: 1
        corp-mac-studio-mlx-vllm:
          max_in_flight: 5
          max_queued: 1
      final_recovery: in_flight_0_queued_0
    chat_completions:
      concurrent_requests: 14
      ok: 14
      max_total_in_flight: 13
      max_total_queued: 3
      provider_max:
        corp-dgx-spark-01-vllm:
          max_in_flight: 4
          max_queued: 1
        corp-dgx-spark-02-vllm:
          max_in_flight: 4
          max_queued: 1
        corp-mac-studio-mlx-vllm:
          max_in_flight: 5
          max_queued: 1
      final_recovery: in_flight_0_queued_0
  latest_runtime_update:
    date: "2026-06-25"
    reason: user requested dev-corp node capacity/context/KV alignment
    requested_targets:
      dgx_spark:
        capacity: 4
        context_window_max: 262144
        kv_size: 262144x2
      mac_studio:
        capacity: 5
        context_window_max: 262144
        kv_size: 262144x3
    applied_mapping:
      dgx_spark: vLLM has no vLLM-MLX style max_kv_size flag; requested KV 262144x2 is validated from startup log KV cache size and max_model_len 262144
      mac_studio: vLLM-MLX requested KV 262144x3 is represented as max_kv_size 786432 with max_request_tokens 262144
    remediation_applied:
      - DGX Spark vLLM FP4 MoE first profile required VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304 for max_num_batched_tokens 524288
      - DGX Spark 01 FlashInfer FP4 JIT invokes ninja from PATH; start script now prefixes /home/digitalcommerce_dgx_spark_01/vllm_env/bin
      - Mac Studio vLLM-MLX pyexpat required DYLD_LIBRARY_PATH=/opt/homebrew/opt/expat/lib
    verification:
      last_rechecked_at: "2026-07-02"
      mac_studio_health: passed
      dgx01_health: passed
      dgx02_health: passed
      direct_health_observation:
        dgx01: mac-mini http://192.168.2.2:8002 returned /health 200 and /v1/models exposed gemma-4-26B-A4B-it-NVFP4 after vllm_server_8002 restart; startup log reported GPU KV cache size 834,507 tokens and 3.18x concurrency for 262,144-token requests
        dgx02: node-local http://127.0.0.1:8004 and mac-mini http://192.168.2.4:8004 returned /health 200, /v1/models exposed gemma-4-26B-A4B-it-NVFP4, and direct concurrency 1..4 chat completion benchmark passed
        mac_studio: node-local http://127.0.0.1:8004 and mac-mini http://192.168.2.3:8004 returned /health 200, /v1/models exposed mlx-community/gemma-4-26b-a4b-it-nvfp4, and direct concurrency 1..5 chat completion benchmark passed
      edge_openai_smoke: passed_with_control_plane_capacity_snapshot_2026_07_02

nodes:
  - id: corp-dgx-spark-01-vllm-node
    alias: corp-dgx-spark-01-vllm
    role: vllm-provider
    ssh: digitalcommerce_dgx_spark_01@192.168.2.2
    ssh_origin: mac-mini
    workspace: /home/digitalcommerce_dgx_spark_01
    provider_pool_candidate: true
    provider:
      id: corp-dgx-spark-01-vllm
      type: vllm
      endpoint: http://192.168.2.2:8002/v1
      edge_adapter_endpoint: http://127.0.0.1:8002/v1
      health: http://192.168.2.2:8002/health
      served_model: gemma-4-26B-A4B-it-NVFP4
      capacity: 4
      capacity_status: configured_health_passed_direct_smoke_and_edge_capacity_smoke
      last_runtime_observation: restarted with gpu_memory_utilization 0.40 on 2026-07-02; mac-mini http://192.168.2.2:8002 returned /health 200 and /v1/models; startup log reported GPU KV cache size 834,507 tokens and 3.18x concurrency for 262,144-token requests
      capacity_basis: dev-corp target baseline; vLLM --max-num-seqs 4, --max-model-len 262144, --gpu-memory-utilization 0.40; observed KV cache satisfies requested 262144x2 minimum
      edge_connectivity:
        mode: reverse_ssh_tunnel
        reason: current node.yaml uses tunnel-local Edge addr in the native provider-pool runtime
        tunnel_pid_file: /Users/fe/agent-work/iop-dev-corp/build/dev-corp-runtime/node01-tunnel.pid
        remote_forwards:
          artifact: 127.0.0.1:28085 -> mac-mini 127.0.0.1:18085
          edge_node_tcp: 127.0.0.1:28087 -> mac-mini 127.0.0.1:18087
      runtime:
        host: spark-0b30
        os: Ubuntu 24.04.3 LTS / aarch64
        hardware: NVIDIA DGX Spark / NVIDIA GB10 / 119GiB RAM
        manager: tmux
        tmux_session: vllm_server_8002
        start_script: /home/digitalcommerce_dgx_spark_01/start_vllm_8002.sh
        python: /home/digitalcommerce_dgx_spark_01/vllm_env/bin/python3
        path_prefix_required: /home/digitalcommerce_dgx_spark_01/vllm_env/bin
        path_prefix_reason: FlashInfer FP4 JIT invokes ninja from PATH during first compile
        package_baseline:
          vllm: 0.23.0
          torch: 2.11.0
          transformers: 5.12.1
          flashinfer_python: 0.6.12
          huggingface_hub: 1.20.1
        args:
          env:
            PATH_prefix: /home/digitalcommerce_dgx_spark_01/vllm_env/bin
            VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE: "4194304"
          host: 0.0.0.0
          port: 8002
          dtype: bfloat16
          gpu_memory_utilization: 0.40
          max_model_len: 262144
          max_num_seqs: 4
          max_num_batched_tokens: auto_2496
          max_num_batched_tokens_note: vLLM raised the default from 2048 to 2496 for the Gemma4 prefix-LM/video path; it is a scheduler iteration budget, not the total KV cache size
          context_window_max: 262144
          kv_size_tokens_effective: 834507
          full_context_concurrency_observed: 3.18

  - id: corp-dgx-spark-02-vllm-node
    alias: corp-dgx-spark-02-vllm
    role: vllm-provider
    ssh: dplab@192.168.2.4
    ssh_origin: mac-mini
    workspace: /home/dplab
    provider_pool_candidate: true
    provider:
      id: corp-dgx-spark-02-vllm
      type: vllm
      endpoint: http://192.168.2.4:8004/v1
      edge_adapter_endpoint: http://127.0.0.1:8004/v1
      health: http://192.168.2.4:8004/health
      served_model: gemma-4-26B-A4B-it-NVFP4
      capacity: 4
      capacity_status: configured_health_passed_direct_smoke_and_edge_capacity_smoke
      last_runtime_observation: Docker vllm-gemma4 running with gpu_memory_utilization 0.40; node-local and mac-mini /health passed, /v1/models exposed gemma-4-26B-A4B-it-NVFP4, and direct concurrency 1..4 chat completion benchmark passed; startup log reported GPU KV cache size 860,222 tokens and 3.28x concurrency for 262,144-token requests
      capacity_basis: dev-corp target baseline; Docker publishes host 8004 to container 8004; vLLM --max-num-seqs 4, --max-model-len 262144, --gpu-memory-utilization 0.40; observed KV cache satisfies requested 262144x2 minimum
      edge_connectivity:
        mode: reverse_ssh_tunnel
        reason: node02 cannot reach mac-mini 172.24.63.178:18085/18086 directly from 192.168.2.4
        tunnel_pid_file: /Users/fe/agent-work/iop-dev-corp/build/dev-corp-runtime/node02-tunnel.pid
        remote_forwards:
          artifact: 127.0.0.1:28085 -> mac-mini 127.0.0.1:18085
          edge_node_tcp: 127.0.0.1:28087 -> mac-mini 127.0.0.1:18087
      runtime:
        host: spark-fb94
        os: Ubuntu 24.04.3 LTS / aarch64
        hardware: NVIDIA DGX Spark / NVIDIA GB10 / 119GiB RAM
        manager: docker
        container_name: vllm-gemma4
        start_script: /home/dplab/start_vllm_gemma4_8004.sh
        env_file: /home/dplab/.config/iop-dev-corp/vllm-gemma4.env
        env_file_contains_secret: true
        image: vllm/vllm-openai:latest
        container_port: 8004
        host_port: 8004
        package_baseline:
          vllm: 0.23.0
          torch: 2.11.0+cu130
          transformers: 5.12.0
          flashinfer_python: 0.6.12
          huggingface_hub: 1.19.0
        args:
          env:
            VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE: "4194304"
          gpu_memory_utilization: 0.40
          max_model_len: 262144
          max_num_seqs: 4
          max_num_batched_tokens: auto_2496
          max_num_batched_tokens_note: vLLM raised the default from 2048 to 2496 for the Gemma4 prefix-LM/video path; it is a scheduler iteration budget, not the total KV cache size
          context_window_max: 262144
          kv_size_tokens_effective: 860222
          full_context_concurrency_observed: 3.28

  - id: corp-mac-studio-mlx-vllm-node
    alias: corp-mac-studio-mlx-vllm
    role: vllm-mlx-provider
    ssh: dc_dev@192.168.2.3
    ssh_origin: mac-mini
    workspace: /Users/dc_dev
    provider_pool_candidate: true
    provider:
      id: corp-mac-studio-mlx-vllm
      type: openai_compat
      runtime_type: vllm-mlx
      endpoint: http://192.168.2.3:8004/v1
      edge_adapter_endpoint: http://127.0.0.1:8004/v1
      health: http://192.168.2.3:8004/health
      served_model: mlx-community/gemma-4-26b-a4b-it-nvfp4
      capacity: 5
      capacity_status: configured_health_passed_direct_smoke_and_edge_capacity_smoke
      last_runtime_observation: screen vllm_mlx_8004 running with max_num_seqs 5, max_request_tokens 262144, max_kv_size 786432; node-local and mac-mini /health passed, /v1/models exposed mlx-community/gemma-4-26b-a4b-it-nvfp4, and direct concurrency 1..5 chat completion benchmark passed
      capacity_basis: vllm-mlx --max-num-seqs 5 with requested KV 262144x3 mapped to --max-kv-size 786432
      runtime:
        host: dc-devui-MacStudio.local
        os: macOS 26.2
        hardware: Apple M3 Ultra / 512GB RAM / 80-core GPU
        manager: screen
        manager_status: detached screen session vllm_mlx_8004; DYLD_LIBRARY_PATH=/opt/homebrew/opt/expat/lib is required for pyexpat on this host
        screen_session: vllm_mlx_8004
        start_script: /Users/dc_dev/iop-dev-corp-field/start_vllm_mlx_8004.sh
        python: /Users/dc_dev/vllm-env/bin/python
        package_baseline:
          vllm_mlx: 0.3.0
          mlx: 0.31.2
          mlx_lm: 0.31.3
          mlx_vlm: 0.6.3
          torch: 2.12.1
          transformers: 5.12.1
          huggingface_hub: 1.20.1
        args:
          host: 0.0.0.0
          port: 8004
          continuous_batching: true
          max_num_seqs: 5
          prefill_batch_size: 5
          completion_batch_size: 5
          chunked_prefill_tokens: 1024
          max_kv_size: 786432
          max_request_tokens: 262144
          context_window_max: 262144
          kv_size_tokens_effective: 786432
          reasoning_parser: gemma4
      secondary_provider_candidate:
        id: corp-mac-studio-mlx-vlm-diffusiongemma
        type: mlx-vlm
        endpoint: http://192.168.2.3:8005/v1
        health: http://192.168.2.3:8005/health
        served_model: mlx-community/diffusiongemma-26B-A4B-it-OptiQ-4bit
        include_in_default_pool: false
        note: exposes multiple models and should be routed only after alias/capacity policy is decided
