From 192cf8e4178543bcd32bec906ffd47b92eee1ffa Mon Sep 17 00:00:00 2001 From: leedongmyun Date: Sat, 11 Jul 2026 12:29:03 +0900 Subject: [PATCH] Sync uncommitted changes to new branch --- agent-client/claude/iop-claude-gateway.py | 2 +- .../project/dev-corp-runtime-deploy/SKILL.md | 26 +++--- agent-test/dev-corp/client-smoke.md | 8 +- agent-test/dev-corp/edge-smoke.md | 38 ++++----- agent-test/dev-corp/inventory.yaml | 81 ++++++++++--------- agent-test/dev-corp/node-smoke.md | 22 ++--- agent-test/dev-corp/platform-common-smoke.md | 6 +- agent-test/dev-corp/rules.md | 20 ++--- agent-test/dev-corp/testing-smoke.md | 6 +- docs/dev-corp-openai-compatible-call-guide.md | 6 +- docs/dev-corp-pi-settings-guide.md | 4 +- docs/openai-compatible-api-contract.md | 2 +- 12 files changed, 111 insertions(+), 110 deletions(-) diff --git a/agent-client/claude/iop-claude-gateway.py b/agent-client/claude/iop-claude-gateway.py index 3a0cd64..f380d55 100755 --- a/agent-client/claude/iop-claude-gateway.py +++ b/agent-client/claude/iop-claude-gateway.py @@ -19,7 +19,7 @@ SEULGIVIBE_KEY_HELPER = os.path.expanduser("~/.claude/anthropic_key.sh") DEV_CORP_OPENAI_BASE_URL = os.environ.get( "DEV_CORP_OPENAI_BASE_URL", - "http://digitalplatform-iop.cloud:18086/v1", + "http://digitalplatform.iop.ai.kr:18086/v1", ).rstrip("/") DEV_CORP_KEY_HELPER = os.path.expanduser("~/.claude/dev-corp-openai-key.sh") DEV_CORP_TOKEN_FILES = [ diff --git a/agent-ops/skills/project/dev-corp-runtime-deploy/SKILL.md b/agent-ops/skills/project/dev-corp-runtime-deploy/SKILL.md index a74e443..9e3104e 100644 --- a/agent-ops/skills/project/dev-corp-runtime-deploy/SKILL.md +++ b/agent-ops/skills/project/dev-corp-runtime-deploy/SKILL.md @@ -8,12 +8,12 @@ description: dev-corp 배포, public digitalplatform Edge와 내부 DGX/Mac Stud ## 목적 -dev-corp provider pool을 현재 dev-runtime과 같은 구조로 배포한다. 배포는 runner checkout 준비, source clean sync, 테스트, dev-corp runtime rebuild, public Edge/Node 재시작, provider snapshot 기반 capacity 검증까지 포함한다. 현재 dev-corp Edge runtime은 `digitalplatform-iop.cloud`이며, mac-mini는 source/build/provider SSH runner로만 사용한다. +dev-corp provider pool을 현재 dev-runtime과 같은 구조로 배포한다. 배포는 runner checkout 준비, source clean sync, 테스트, dev-corp runtime rebuild, public Edge/Node 재시작, provider snapshot 기반 capacity 검증까지 포함한다. 현재 dev-corp Edge runtime은 `iop.ai.kr`이며, mac-mini는 source/build/provider SSH runner로만 사용한다. ## 언제 호출할지 - 사용자가 `dev-corp 배포`, `dev-corp runtime 배포`, `회사 dev 환경 배포`처럼 dev-corp 환경 배포를 요청할 때 -- public `digitalplatform-iop.cloud` Edge와 DGX Spark 01/02 vLLM node, Mac Studio vLLM-MLX node로 이루어진 provider pool을 갱신할 때 +- public `iop.ai.kr` Edge와 DGX Spark 01/02 vLLM node, Mac Studio vLLM-MLX node로 이루어진 provider pool을 갱신할 때 - dev-corp model alias, provider endpoint, provider capacity, node 접속 정보를 배포 절차에 반영할 때 - dev-corp OpenAI-compatible `/v1/chat/completions` 경로가 provider capacity만큼 채워지는지 검증할 때 @@ -28,12 +28,12 @@ dev-corp provider pool을 현재 dev-runtime과 같은 구조로 배포한다. - [ ] `agent-ops/rules/project/domain/testing/rules.md`를 읽고 사용자 실행 파이프라인 검증 기준을 확인한다. - [ ] `agent-test/dev-corp/inventory.yaml`을 먼저 읽는다. 파일이 없으면 `agent-test/dev-corp/rules.md`, `agent-test/dev-corp/edge-smoke.md`, `agent-test/dev-corp/node-smoke.md`로 fallback하고, 구조화 inventory 누락을 보고한다. -- [ ] dev-corp Edge 배포/검증 통로는 `digitalplatform-iop.cloud`이다. mac-mini runner/provider 관리 경유지를 Edge 배포, OpenAI-compatible smoke, Node `edge_addr`, bootstrap 기본 URL로 잡지 않는다. -- [ ] dev-corp provider pool과 compose/local/dev-runtime profile을 섞지 않는다. dev-corp provider pool은 public `digitalplatform-iop.cloud` Edge와 dev-corp config를 기준으로 한다. +- [ ] dev-corp Edge 배포/검증 통로는 `iop.ai.kr`이다. mac-mini runner/provider 관리 경유지를 Edge 배포, OpenAI-compatible smoke, Node `edge_addr`, bootstrap 기본 URL로 잡지 않는다. +- [ ] dev-corp provider pool과 compose/local/dev-runtime profile을 섞지 않는다. dev-corp provider pool은 public `iop.ai.kr` Edge와 dev-corp config를 기준으로 한다. - [ ] mac-mini에 `/Users/fe/agent-work/iop-dev-corp` checkout이 없으면 배포를 시작하지 말고 checkout 생성과 source sync를 setup blocker로 보고한다. - [ ] mac-mini에서 `192.168.2.2:8002`, `192.168.2.4:8004`, `192.168.2.3:8004`의 `/health`와 `/v1/models`가 성공하는지 확인한다. - [ ] Edge config의 OpenAI-compatible adapter endpoint는 각 Node process 기준으로 평가된다. direct preflight는 `192.168.2.x` 주소로 하되, Edge가 Node에 내려주는 provider endpoint는 node-local `127.0.0.1:`를 우선한다. -- [ ] DGX Spark 01/02와 Mac Studio Node의 Edge addr은 `digitalplatform-iop.cloud:18087`이다. mac-mini local route 또는 reverse SSH tunnel은 현재 기준 잘못된 Edge addr이며 명시적인 rollback/장애 비교 외에는 사용하지 않는다. +- [ ] DGX Spark 01/02와 Mac Studio Node의 Edge addr은 `iop.ai.kr:18087`이다. mac-mini local route 또는 reverse SSH tunnel은 현재 기준 잘못된 Edge addr이며 명시적인 rollback/장애 비교 외에는 사용하지 않는다. - [ ] `gemma4:26b` alias와 총 capacity `13`은 `agent-test/dev-corp/inventory.yaml`의 최신 검증 상태를 기준으로 판단한다. 새 배포에서 Edge config 반영과 capacity smoke가 통과하기 전에는 새 결과를 확정값으로 보고하지 않는다. - [ ] DGX Spark vLLM provider는 capacity `4`, 호출당 최대 context window `262144`, requested KV `262144x2` 이상을 기준으로 한다. vLLM에는 vLLM-MLX식 `--max-kv-size`가 없으므로 실제 KV cache는 `gpu_memory_utilization` 적용 후 startup log의 `GPU KV cache size`와 `Maximum concurrency for 262,144 tokens per request`로 검증한다. DGX01/02 검증 기준은 `vllm=0.24.0`, `--max-num-seqs 4`, `--max-model-len 262144`, `--gpu-memory-utilization 0.40`이고, FP4 MoE 커널 한계 보정을 위해 `VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304`도 함께 둔다. Gemma4 agent/tool-call profile은 `--enforce-eager`, `--skip-mm-profiling`, `--limit-mm-per-prompt '{"image": 0, "video": 0}'`, `--mm-processor-cache-gb 0`, `--enable-auto-tool-choice`, `--tool-call-parser gemma4`, Gemma4 tool chat template, `--reasoning-parser gemma4`, `--default-chat-template-kwargs '{"enable_thinking":true}'`를 함께 둔다. - [ ] DGX Spark 02 endpoint는 Docker publish 때문에 `192.168.2.4:8004`이다. `8000`, `8001`, `8002`를 기본 endpoint로 쓰지 않는다. @@ -52,21 +52,21 @@ dev-corp provider pool을 현재 dev-runtime과 같은 구조로 배포한다. - DGX Spark 02 Docker image `vllm/vllm-openai:v0.24.0`의 entrypoint는 이미 `vllm serve`이다. container command에는 `serve`를 중복으로 넣지 말고 positional model `/models/gemma-4-26B-A4B-it-NVFP4`부터 둔다. 현재 Docker publish는 host `8004` -> container `8004` 기준이다. - Gemma4 tool-call/parser profile은 capacity/KV 튜닝과 별개로 agent 동작 가능성을 결정한다. DGX Spark 01은 `/home/digitalcommerce_dgx_spark_01/tool_chat_template_gemma4.jinja`, DGX Spark 02는 `/vllm-workspace/examples/tool_chat_template_gemma4.jinja`를 `--chat-template`로 사용하고, 둘 다 `--enforce-eager --skip-mm-profiling --limit-mm-per-prompt '{"image": 0, "video": 0}' --mm-processor-cache-gb 0 --enable-auto-tool-choice --tool-call-parser gemma4 --reasoning-parser gemma4 --default-chat-template-kwargs '{"enable_thinking":true}'`를 둔다. Mac Studio vLLM-MLX는 별도 chat template override 없이 `--continuous-batching --disable-prefix-cache --enable-auto-tool-choice --tool-call-parser gemma4 --reasoning-parser gemma4 --default-chat-template-kwargs '{"enable_thinking":true}'`를 둔다. - 모델별 parser/template 값은 섞지 않는다. Gemma 계열은 `tool_call_parser=gemma4`, `reasoning_parser=gemma4`, Gemma4 tool chat template 또는 vLLM-MLX 기본 template kwargs를 사용한다. Qwen 계열은 dev-runtime 문서의 `tool_call_parser=qwen`, `reasoning_parser=qwen3`, Qwen 전용 chat template 검증값을 따르며 Gemma4 parser/template을 재사용하지 않는다. -- Pi agent dev-corp profile은 `agent-test/dev-corp/inventory.yaml`의 `model.pi_agent_profile`을 기준으로 한다. 2026-07-09 현재 Pi 기본 경로는 Edge OpenAI-compatible alias route인 `dev-corp` / `gemma4:26b` / thinking `high`이고, base URL은 `http://digitalplatform-iop.cloud:18086/v1`이다. Mac Studio direct provider `dev-corp-direct` / `mlx-community/gemma-4-26b-a4b-it-nvfp4`와 DGX Spark 01 direct provider `dev-corp-spark01` / `gemma-4-26B-A4B-it-NVFP4`는 non-default direct/fallback profile로 둔다. +- Pi agent dev-corp profile은 `agent-test/dev-corp/inventory.yaml`의 `model.pi_agent_profile`을 기준으로 한다. 2026-07-09 현재 Pi 기본 경로는 Edge OpenAI-compatible alias route인 `dev-corp` / `gemma4:26b` / thinking `high`이고, base URL은 `http://digitalplatform.iop.ai.kr:18086/v1`이다. Mac Studio direct provider `dev-corp-direct` / `mlx-community/gemma-4-26b-a4b-it-nvfp4`와 DGX Spark 01 direct provider `dev-corp-spark01` / `gemma-4-26B-A4B-it-NVFP4`는 non-default direct/fallback profile로 둔다. - Mac Studio는 `DYLD_LIBRARY_PATH=/opt/homebrew/opt/expat/lib` 없이 Python `pyexpat` import가 실패할 수 있다. `screen` session `vllm_mlx_8004` 안에서 이 환경변수를 export한 뒤 시작한다. - 2026-07-08 재확인 기준 Mac Studio vLLM-MLX는 `/Users/dc_dev/vllm-env-0.4.0/bin/python` 환경의 `vllm-mlx=0.4.0`, `mlx=0.32.0`, `mlx-lm=0.31.3`, `mlx-vlm=0.6.4`, `transformers=5.12.1`, `huggingface-hub=1.22.0`로 동작한다. `--continuous-batching`은 유지하고 `--disable-prefix-cache`를 추가했으며, `/health`, `/v1/models`, 직접 API non-stream/stream auto tool-call, streaming multi-turn tool-result final answer, Pi `-p` tool-call, Pi TUI 초기 프롬프트 tool-call 로그 종료를 확인했다. - Mac Studio vLLM-MLX의 현 값은 "구동 가능한 최종 체크포인트"로 취급한다. 추가 미세 조정은 새 포트/새 venv 또는 명시적 rollback 지점을 둔 별도 실험으로만 수행하고, Spark 01/02 vLLM 설정이나 Pi 기본 provider/model을 함께 변경하지 않는다. 알려진 잔여 이슈는 Gemma4 thought channel delimiter가 최종 content에 누수될 수 있는 점이며, 이 경우 serving 옵션을 계속 흔들기보다 Pi extension/provider adapter에서 vLLM-MLX Gemma 전용 sanitizer로 containment 하는 방향을 우선 검토한다. - 2026-07-08 재확인 기준 DGX Spark 01은 vLLM 0.24.0 text-only/eager profile과 `default_chat_template_kwargs.enable_thinking=true`로 재기동 후 mac-mini 내부 endpoint `http://192.168.2.2:8002`에서 `/health` 200과 `/v1/models`, 직접 API forced/auto/streaming tool-call smoke, 로컬 Pi TUI bash/git-push tool-call 흐름을 통과했고 startup log에서 GPU KV cache `1,453,705` tokens, full-context concurrency `5.55x`를 확인했다. - 2026-07-08 재확인 기준 DGX Spark 02는 Docker `vllm-gemma4` image `vllm/vllm-openai:v0.24.0`, host/container `8004`, text-only/eager profile과 `default_chat_template_kwargs.enable_thinking=true`로 동작하며 mac-mini와 node-local `/health`, `/v1/models`, 직접 API auto/streaming tool-call smoke를 통과했다. startup log에서 GPU KV cache `1,452,633` tokens, full-context concurrency `5.54x`를 확인했다. -- 2026-07-02 mac-mini native Control Plane `18002/19004/19005` 관측값은 historical evidence다. 2026-07-09 현재 dev-corp Edge source of truth는 public `digitalplatform-iop.cloud`이고, current runner에서 public host SSH와 public Control Plane status 접근은 확인되지 않았다. -- 2026-07-09 기준 dev-corp provider-pool Edge OpenAI-compatible capacity smoke 표준은 public `http://digitalplatform-iop.cloud:18086/v1/chat/completions` 15개 동시 요청이다. `/v1/responses`는 OpenAI-compatible provider model group raw passthrough parity 전까지 미지원이므로 성공 기준에서 제외한다. -- 2026-07-09 public Edge 재연결 검증에서 DGX Spark 01/02와 Mac Studio node를 `digitalplatform-iop.cloud:18087`로 변경한 뒤 `/v1/chat/completions` 15개 동시 요청이 15/15 성공했다. 같은 날 current passthrough source로 public Edge를 재빌드/재시작하고 최신 node 바이너리를 DGX Spark 01/02와 Mac Studio에 배포한 뒤 기본 streaming `/v1/chat/completions` 15/15에서 provider reasoning delta가 유지됐고 transformed `chatcmpl-manual` ID는 0/15였다. 원격 evidence는 `build/dev-corp-runtime/logs/public_latest_edge_node_chat_15_20260709_181222.json`이다. 2026-07-08 `/v1/responses` 통과 기록은 mac-mini provider-pool runtime 기준 legacy evidence로만 본다. +- 2026-07-02 mac-mini native Control Plane `18002/19004/19005` 관측값은 historical evidence다. 2026-07-09 현재 dev-corp Edge source of truth는 public `iop.ai.kr`이고, current runner에서 public host SSH와 public Control Plane status 접근은 확인되지 않았다. +- 2026-07-09 기준 dev-corp provider-pool Edge OpenAI-compatible capacity smoke 표준은 public `http://digitalplatform.iop.ai.kr:18086/v1/chat/completions` 15개 동시 요청이다. `/v1/responses`는 OpenAI-compatible provider model group raw passthrough parity 전까지 미지원이므로 성공 기준에서 제외한다. +- 2026-07-09 public Edge 재연결 검증에서 DGX Spark 01/02와 Mac Studio node를 `iop.ai.kr:18087`로 변경한 뒤 `/v1/chat/completions` 15개 동시 요청이 15/15 성공했다. 같은 날 current passthrough source로 public Edge를 재빌드/재시작하고 최신 node 바이너리를 DGX Spark 01/02와 Mac Studio에 배포한 뒤 기본 streaming `/v1/chat/completions` 15/15에서 provider reasoning delta가 유지됐고 transformed `chatcmpl-manual` ID는 0/15였다. 원격 evidence는 `build/dev-corp-runtime/logs/public_latest_edge_node_chat_15_20260709_181222.json`이다. 2026-07-08 `/v1/responses` 통과 기록은 mac-mini provider-pool runtime 기준 legacy evidence로만 본다. ## 실행 절차 1. **환경 인벤토리 확정** - 배포 대상 runner, repo path, Edge id, Control Plane status URL, OpenAI base URL, Edge admin URL, Node SSH 정보를 `agent-test/dev-corp/inventory.yaml`에서 확정한다. - - public OpenAI/base, bootstrap/artifact, Edge-Node TCP는 기본적으로 `digitalplatform-iop.cloud` 경로를 사용한다. mac-mini runner/provider 관리 경로로 Edge를 배포하거나 Node를 붙이는 것은 기본 금지이며, 사용자가 mac-mini local 비교를 명시 요청한 경우에만 별도 비교로 진행한다. + - public OpenAI/base, bootstrap/artifact, Edge-Node TCP는 기본적으로 `iop.ai.kr` 경로를 사용한다. mac-mini runner/provider 관리 경로로 Edge를 배포하거나 Node를 붙이는 것은 기본 금지이며, 사용자가 mac-mini local 비교를 명시 요청한 경우에만 별도 비교로 진행한다. - provider pool 대상 model alias와 provider별 capacity target을 확정한다. - 필수 정보가 없거나 서로 충돌하면 배포를 시작하지 말고 누락/충돌 항목을 보고한다. @@ -100,14 +100,14 @@ dev-corp provider pool을 현재 dev-runtime과 같은 구조로 배포한다. - dry-run이 `rejected` 또는 예상 밖 `restart_required`를 반환하면 배포를 멈추고 config diff를 보고한다. 7. **배포와 재시작** - - Control Plane이 public host에서 운용되는 경우 `digitalplatform-iop.cloud:18002/19004/19005` dev-corp port를 기준으로 확인한다. mac-mini local Control Plane은 dev-corp Edge source of truth가 아니다. - - Edge는 public `digitalplatform-iop.cloud` host에서 `18085/18086/18087`을 기준으로 재시작/확인한다. mac-mini runner runtime은 dev-corp Edge source of truth가 아니다. + - Control Plane이 public host에서 운용되는 경우 `iop.ai.kr:18002/19004/19005` dev-corp port를 기준으로 확인한다. mac-mini local Control Plane은 dev-corp Edge source of truth가 아니다. + - Edge는 public `iop.ai.kr` host에서 `18085/18086/18087`을 기준으로 재시작/확인한다. mac-mini runner runtime은 dev-corp Edge source of truth가 아니다. - DGX Spark 01/02는 Linux ARM64 node binary를 mac-mini 경유로 배포하고 기존 node process를 재시작한다. - Mac Studio는 macOS node binary를 mac-mini 경유로 배포하고 기존 node process를 재시작한다. - provider runtime 옵션을 갱신하는 배포라면 DGX Spark 01은 `/home/digitalcommerce_dgx_spark_01/start_vllm_8002.sh`의 `PATH=/home/digitalcommerce_dgx_spark_01/vllm_env_0_24_0/bin:$PATH`, `VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304`, `--max-num-seqs 4`, `--max-model-len 262144`, `--gpu-memory-utilization 0.40`, `--enforce-eager`, `--skip-mm-profiling`, `--limit-mm-per-prompt '{"image": 0, "video": 0}'`, `--mm-processor-cache-gb 0`, `--enable-auto-tool-choice`, `--tool-call-parser gemma4`, `--chat-template /home/digitalcommerce_dgx_spark_01/tool_chat_template_gemma4.jinja`, `--reasoning-parser gemma4`, `--default-chat-template-kwargs '{"enable_thinking":true}'`를 확인하고 tmux `vllm_server_8002`를 재기동한다. - provider runtime 옵션을 갱신하는 배포라면 DGX Spark 02는 Docker container `vllm-gemma4`를 image `vllm/vllm-openai:v0.24.0` entrypoint `vllm serve` 기준으로 재생성한다. container env에는 `VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304`를 넣고, container args는 positional model `/models/gemma-4-26B-A4B-it-NVFP4` 뒤에 `--max-model-len 262144`, `--gpu-memory-utilization 0.40`, `--max-num-seqs 4`, `--port 8004`, `--enforce-eager`, `--skip-mm-profiling`, `--limit-mm-per-prompt '{"image": 0, "video": 0}'`, `--mm-processor-cache-gb 0`, `--enable-auto-tool-choice`, `--tool-call-parser gemma4`, `--chat-template /vllm-workspace/examples/tool_chat_template_gemma4.jinja`, `--reasoning-parser gemma4`, `--default-chat-template-kwargs '{"enable_thinking":true}'`를 둔다. - provider runtime 옵션을 갱신하는 배포라면 Mac Studio는 `screen -dmS vllm_mlx_8004` 안에서 `DYLD_LIBRARY_PATH=/opt/homebrew/opt/expat/lib`를 export한 뒤 `/Users/dc_dev/vllm-env-0.4.0/bin/python -m vllm_mlx.cli serve`를 `--continuous-batching`, `--max-num-seqs 6`, `--prefill-batch-size 6`, `--completion-batch-size 6`, `--chunked-prefill-tokens 1024`, `--disable-prefix-cache`, `--max-kv-size 786432`, `--max-request-tokens 262144`, `--enable-auto-tool-choice`, `--tool-call-parser gemma4`, `--reasoning-parser gemma4`, `--default-chat-template-kwargs '{"enable_thinking":true}'`로 재기동한다. - - Node bootstrap은 Edge의 `node register`가 출력한 OS별 완성 명령을 우선한다. Node `edge_addr`는 `digitalplatform-iop.cloud:18087`이어야 한다. node-local provider endpoint 또는 별도 `IOP_HOME`이 필요한 경우에는 `~/iop-dev-corp-field/node.yaml`을 수동 배치할 수 있고, token 원문은 로그/보고에 남기지 않는다. + - Node bootstrap은 Edge의 `node register`가 출력한 OS별 완성 명령을 우선한다. Node `edge_addr`는 `iop.ai.kr:18087`이어야 한다. node-local provider endpoint 또는 별도 `IOP_HOME`이 필요한 경우에는 `~/iop-dev-corp-field/node.yaml`을 수동 배치할 수 있고, token 원문은 로그/보고에 남기지 않는다. 8. **배포 후 연결 검증** - Edge, OpenAI-compatible listener, Node TCP, admin port, Control Plane status port가 열려 있는지 확인한다. diff --git a/agent-test/dev-corp/client-smoke.md b/agent-test/dev-corp/client-smoke.md index 8e061a6..9c1bc8b 100644 --- a/agent-test/dev-corp/client-smoke.md +++ b/agent-test/dev-corp/client-smoke.md @@ -3,7 +3,7 @@ test_env: dev-corp test_profile: client-smoke domain: client verification_type: smoke -last_rule_updated_at: 2026-07-08 +last_rule_updated_at: 2026-07-11 --- # client-smoke dev-corp 테스트 @@ -47,9 +47,9 @@ last_rule_updated_at: 2026-07-08 - package-unit: `cd packages/flutter/iop_console && flutter test` - lint: `cd apps/client && flutter analyze --no-fatal-infos` - smoke: `cd apps/client && flutter test` -- e2e: `IOP_WEB_PORT=13002 IOP_CONTROL_PLANE_HTTP_URL=http://digitalplatform-iop.cloud:18002 IOP_CONTROL_PLANE_WIRE_URL=ws://digitalplatform-iop.cloud:19004/client ./scripts/dev/web.sh` +- e2e: `IOP_WEB_PORT=13002 IOP_CONTROL_PLANE_HTTP_URL=http://iop.ai.kr:18002 IOP_CONTROL_PLANE_WIRE_URL=ws://iop.ai.kr:19004/client ./scripts/dev/web.sh` - compose-e2e: mac-mini 환경에서 `IOP_EDGE_NODE_TOKEN`을 안전하게 주입한 뒤 `docker compose --env-file .env.dev-corp.example up --build` -- web-build: `make client-build-web IOP_CONTROL_PLANE_HTTP_URL=http://digitalplatform-iop.cloud:18002 IOP_CONTROL_PLANE_WIRE_URL=ws://digitalplatform-iop.cloud:19004/client` +- web-build: `make client-build-web IOP_CONTROL_PLANE_HTTP_URL=http://iop.ai.kr:18002 IOP_CONTROL_PLANE_WIRE_URL=ws://iop.ai.kr:19004/client` - model: - full-cycle: @@ -58,7 +58,7 @@ last_rule_updated_at: 2026-07-08 - client 또는 `packages/flutter/iop_console` 변경은 최소 `cd apps/client && flutter test`로 확인한다. - `packages/flutter/iop_console` 자체 API나 widget 구조가 바뀌면 `cd packages/flutter/iop_console && flutter test` 실행 가능 여부를 확인한다. - analyzer 영향이 있는 dependency, app shell, generated import 변경이면 `cd apps/client && flutter analyze --no-fatal-infos`를 함께 확인한다. -- Web build/deploy, `apps/client/Dockerfile`, `docker-compose.yml`, `scripts/dev/web.sh`, `Makefile client-build-web` 변경은 mac-mini에서 dev-server 기동 또는 compose build 중 변경 범위에 맞는 경로를 확인하고, 외부 브라우저 확인 URL이 기본 public 경로 `http://digitalplatform-iop.cloud:13002` 계열인지 보고한다. +- Web build/deploy, `apps/client/Dockerfile`, `docker-compose.yml`, `scripts/dev/web.sh`, `Makefile client-build-web` 변경은 mac-mini에서 dev-server 기동 또는 compose build 중 변경 범위에 맞는 경로를 확인하고, 외부 브라우저 확인 URL이 기본 public 경로 `http://iop.ai.kr:13002` 계열인지 보고한다. - compose 경로를 확인할 때는 `IOP_EDGE_NODE_TOKEN`을 mac-mini 환경에서 주입하고, token 원문은 tracked 파일에 기록하지 않는다. ## 보조 검증 diff --git a/agent-test/dev-corp/edge-smoke.md b/agent-test/dev-corp/edge-smoke.md index 30a4e1c..38d9041 100644 --- a/agent-test/dev-corp/edge-smoke.md +++ b/agent-test/dev-corp/edge-smoke.md @@ -3,7 +3,7 @@ test_env: dev-corp test_profile: edge-smoke domain: edge verification_type: smoke -last_rule_updated_at: 2026-07-09 +last_rule_updated_at: 2026-07-11 --- # edge-smoke dev-corp 테스트 @@ -34,30 +34,30 @@ last_rule_updated_at: 2026-07-09 ## 환경 - host: local checkout. provider pool과 source/build evidence가 필요하면 mac-mini `ssh fe@172.24.63.178`의 `/Users/fe/agent-work/iop-dev-corp` checkout을 사용한다. -- Edge runtime evidence: public `digitalplatform-iop.cloud` host를 기준으로 한다. +- Edge runtime evidence: public `iop.ai.kr` host를 기준으로 한다. - port: compose Edge-Node TCP transport `19006`; native provider-pool Edge-Node TCP 후보 `18087`; artifact/bootstrap HTTP 후보 `18085`; Edge OpenAI-compatible HTTP 후보 `18086`; Edge metrics 후보 `19102`; admin 후보 `19094`. - runtime: Go `1.24` - package manager: Go modules / Makefile - docker: unit/smoke quick check는 Docker를 요구하지 않는다. compose dev-corp 검증은 mac-mini에서 `.env.dev-corp.example` 기준으로 수행한다. -- external service: dev-corp artifact/base URL 기본 후보 `http://digitalplatform-iop.cloud:18085`, dev-corp Edge runtime 기본 후보 `digitalplatform-iop.cloud:18087`; mac-mini local endpoint는 dev-corp Edge 경로로 사용하지 않는다. -- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `http://digitalplatform-iop.cloud:18086/v1` +- external service: dev-corp artifact/base URL 기본 후보 `http://iop.ai.kr:18085`, dev-corp Edge runtime 기본 후보 `iop.ai.kr:18087`; mac-mini local endpoint는 dev-corp Edge 경로로 사용하지 않는다. +- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `http://digitalplatform.iop.ai.kr:18086/v1` - credential: token/secret/API key 원문은 문서에 기록하지 않는다. ## dev-corp provider pool 인벤토리 -dev-corp provider pool과 3-node 연결 상태를 점검할 때는 `agent-test/dev-corp/inventory.yaml`의 machine-readable 값을 우선한다. Edge runtime은 public `digitalplatform-iop.cloud`이며, mac-mini checkout은 source/build/provider SSH runner로만 사용한다. +dev-corp provider pool과 3-node 연결 상태를 점검할 때는 `agent-test/dev-corp/inventory.yaml`의 machine-readable 값을 우선한다. Edge runtime은 public `iop.ai.kr`이며, mac-mini checkout은 source/build/provider SSH runner로만 사용한다. -- Edge host: `digitalplatform-iop.cloud` / `115.21.224.82` +- Edge host: `iop.ai.kr` / `115.21.224.82` - Edge config: public host runtime config at `/Users/toki/agent-work/iop-dev-corp/build/dev-corp-runtime/edge.yaml`. - Edge id: `dev-corp-edge` -- Control Plane HTTP/status 후보: `http://digitalplatform-iop.cloud:18002`, `http://digitalplatform-iop.cloud:18002/edges/dev-corp-edge/status` when the public port is enabled -- Control Plane-Edge wire 후보: `digitalplatform-iop.cloud:19005` when the public port is enabled -- bootstrap HTTP 기본 후보: `http://digitalplatform-iop.cloud:18085` -- Edge OpenAI-compatible base URL 기본 후보: `http://digitalplatform-iop.cloud:18086/v1` -- Edge-Node TCP transport 기본 후보: `digitalplatform-iop.cloud:18087` -- mac-mini/internal 후보는 dev-corp Edge 경로가 아니다. Node `edge_addr`는 `digitalplatform-iop.cloud:18087`이어야 한다. +- Control Plane HTTP/status 후보: `http://iop.ai.kr:18002`, `http://iop.ai.kr:18002/edges/dev-corp-edge/status` when the public port is enabled +- Control Plane-Edge wire 후보: `iop.ai.kr:19005` when the public port is enabled +- bootstrap HTTP 기본 후보: `http://iop.ai.kr:18085` +- Edge OpenAI-compatible base URL 기본 후보: `http://digitalplatform.iop.ai.kr:18086/v1` +- Edge-Node TCP transport 기본 후보: `iop.ai.kr:18087` +- mac-mini/internal 후보는 dev-corp Edge 경로가 아니다. Node `edge_addr`는 `iop.ai.kr:18087`이어야 한다. - model alias 후보: `gemma4:26b` -- host Pi dev-corp profile: `agent-test/dev-corp/inventory.yaml`의 `model.pi_agent_profile` 기준. 2026-07-10 현재 Pi 기본 provider/model/thinking level은 `dev-corp` / `gemma4:26b` / `high`이며, base URL은 public Edge route `http://digitalplatform-iop.cloud:18086/v1`이고 sampling parameter는 Pi extension으로 `temperature=0.2`, `top_p=0.95`를 주입한다. dev `qwen3.6:35b` Pi profile은 `agent-test/dev/inventory.yaml`에서 별도로 관리한다. +- host Pi dev-corp profile: `agent-test/dev-corp/inventory.yaml`의 `model.pi_agent_profile` 기준. 2026-07-10 현재 Pi 기본 provider/model/thinking level은 `dev-corp` / `gemma4:26b` / `high`이며, base URL은 public Edge route `http://digitalplatform.iop.ai.kr:18086/v1`이고 sampling parameter는 Pi extension으로 `temperature=0.2`, `top_p=0.95`를 주입한다. dev `qwen3.6:35b` Pi profile은 `agent-test/dev/inventory.yaml`에서 별도로 관리한다. 노드 후보: @@ -65,7 +65,7 @@ dev-corp provider pool과 3-node 연결 상태를 점검할 때는 `agent-test/d - SSH/user: mac-mini에서 `ssh digitalcommerce_dgx_spark_01@192.168.2.2` - provider endpoint: `http://192.168.2.2:8002/v1` - Edge adapter endpoint: node-local `http://127.0.0.1:8002/v1` - - Edge connectivity: direct public Edge `digitalplatform-iop.cloud:18087`. + - Edge connectivity: direct public Edge `iop.ai.kr:18087`. - served model: `gemma-4-26B-A4B-it-NVFP4` - capacity baseline 후보: `4` - runtime: tmux `vllm_server_8002`, start script `/home/digitalcommerce_dgx_spark_01/start_vllm_8002.sh`, `vllm=0.24.0`, `PATH=/home/digitalcommerce_dgx_spark_01/vllm_env_0_24_0/bin:$PATH`, `--max-num-seqs 4`, `--max-model-len 262144`, `--gpu-memory-utilization 0.40`, `--enforce-eager`, `--skip-mm-profiling`, `--limit-mm-per-prompt '{"image": 0, "video": 0}'`, `--mm-processor-cache-gb 0`, `--enable-auto-tool-choice`, `--tool-call-parser gemma4`, `--chat-template /home/digitalcommerce_dgx_spark_01/tool_chat_template_gemma4.jinja`, `--reasoning-parser gemma4`, `--default-chat-template-kwargs '{"enable_thinking":true}'`, 2026-07-08 startup log GPU KV cache `1,453,705` tokens / full-context concurrency `5.55x`, `VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304` @@ -73,7 +73,7 @@ dev-corp provider pool과 3-node 연결 상태를 점검할 때는 `agent-test/d - SSH/user: mac-mini에서 `ssh dplab@192.168.2.4` - provider endpoint: `http://192.168.2.4:8004/v1` - Edge adapter endpoint: node-local `http://127.0.0.1:8004/v1` - - Edge connectivity: direct public Edge `digitalplatform-iop.cloud:18087`. + - Edge connectivity: direct public Edge `iop.ai.kr:18087`. - served model: `gemma-4-26B-A4B-it-NVFP4` - capacity baseline 후보: `4` - runtime: Docker container `vllm-gemma4`, start script `/home/dplab/start_vllm_gemma4_8004.sh`, host `8004` -> container `8004`, image `vllm/vllm-openai:v0.24.0`, `vllm=0.24.0`, `--max-num-seqs 4`, `--max-model-len 262144`, `--gpu-memory-utilization 0.40`, `--enforce-eager`, `--skip-mm-profiling`, `--limit-mm-per-prompt '{"image": 0, "video": 0}'`, `--mm-processor-cache-gb 0`, `--enable-auto-tool-choice`, `--tool-call-parser gemma4`, `--chat-template /vllm-workspace/examples/tool_chat_template_gemma4.jinja`, `--reasoning-parser gemma4`, `--default-chat-template-kwargs '{"enable_thinking":true}'`, 2026-07-08 startup log GPU KV cache `1,452,633` tokens / full-context concurrency `5.54x`, `VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304` @@ -104,13 +104,13 @@ Mac Studio의 `http://192.168.2.3:8005/v1` mlx-vlm DiffusionGemma endpoint는 ## 2026-07-09 dev-corp public Edge runtime 상태 -- Active Edge runtime is `digitalplatform-iop.cloud` (`115.21.224.82`) with public `18085` bootstrap, `18086` OpenAI-compatible, and `18087` Edge-Node TCP. +- Active Edge runtime is `iop.ai.kr` (`115.21.224.82`) with public `18085` bootstrap, `18086` OpenAI-compatible, and `18087` Edge-Node TCP. - mac-mini checkout/runtime is a runner and must not be used as Edge source of truth unless explicitly doing a local-runner comparison. -- On 2026-07-09 the three provider nodes were moved from mac-mini/reverse-tunnel Edge addresses to `digitalplatform-iop.cloud:18087`, and public `/v1/chat/completions` 15-concurrency smoke passed 15/15. +- On 2026-07-09 the three provider nodes were moved from mac-mini/reverse-tunnel Edge addresses to `iop.ai.kr:18087`, and public `/v1/chat/completions` 15-concurrency smoke passed 15/15. - On 2026-07-09 after rebuilding the public Edge from the current passthrough source, default streaming `/v1/chat/completions` preserved provider reasoning deltas for 15/15 concurrent requests; transformed `chatcmpl-manual` IDs were 0/15. Evidence: `build/dev-corp-runtime/logs/public_passthrough_chat_15_20260709_180115.json`. - On 2026-07-09 after deploying latest node binaries to DGX Spark 01/02 and Mac Studio, public streaming `/v1/chat/completions` again passed 15/15 with provider reasoning deltas preserved and transformed `chatcmpl-manual` IDs 0/15. Evidence: `build/dev-corp-runtime/logs/public_latest_edge_node_chat_15_20260709_181222.json`. - Mac Studio provider catalog `type`은 최신 config validator 기준으로 `openai_compat`를 사용한다. 실제 provider runtime은 vLLM-MLX이고 `runtime_type: vllm-mlx`로 추적한다. -- `/v1/chat/completions` capacity smoke 표준: 15개 동시 요청을 public `http://digitalplatform-iop.cloud:18086/v1`로 보낸다. 2026-07-09 public Edge 재연결 검증에서는 15/15 성공했다. +- `/v1/chat/completions` capacity smoke 표준: 15개 동시 요청을 public `http://digitalplatform.iop.ai.kr:18086/v1`로 보낸다. 2026-07-09 public Edge 재연결 검증에서는 15/15 성공했다. - `/v1/responses`는 OpenAI-compatible provider model group raw passthrough parity 전까지 미지원이므로 provider-pool capacity 성공 기준에서 제외한다. ## 명령 @@ -120,7 +120,7 @@ Mac Studio의 `http://192.168.2.3:8005/v1` mlx-vlm DiffusionGemma endpoint는 - unit: `go test ./apps/edge/...` - smoke: `./scripts/e2e-smoke.sh`는 기본 포트 임시 설정을 쓰는 보조 smoke이므로 dev-corp 포트 override 필요 여부를 먼저 확인한다. - e2e: `make test-e2e`는 보조 smoke이며 full-cycle 실제 구동을 대체하지 않는다. -- model: dev-corp OpenAI-compatible profile을 띄운 경우 `OPENAI_API_KEY=$(cat build/dev-corp-runtime/.secrets/openai_api_key) iop-edge smoke openai --model gemma4:26b --base-url http://digitalplatform-iop.cloud:18086` +- model: dev-corp OpenAI-compatible profile을 띄운 경우 `OPENAI_API_KEY=$(cat build/dev-corp-runtime/.secrets/openai_api_key) iop-edge smoke openai --model gemma4:26b --base-url http://digitalplatform.iop.ai.kr:18086` - direct-provider: mac-mini에서 `curl -fsS http://192.168.2.2:8002/v1/models`, `curl -fsS http://192.168.2.4:8004/v1/models`, `curl -fsS http://192.168.2.3:8004/v1/models` - full-cycle: repo 내부 edge-node 진단, `iop-edge smoke openai`, OpenAI-compatible 입력 표면 수동 검증 diff --git a/agent-test/dev-corp/inventory.yaml b/agent-test/dev-corp/inventory.yaml index b16f29b..608ff84 100644 --- a/agent-test/dev-corp/inventory.yaml +++ b/agent-test/dev-corp/inventory.yaml @@ -1,6 +1,6 @@ test_env: dev-corp profile: dev-corp-provider-pool -last_updated_at: "2026-07-09" +last_updated_at: "2026-07-11" source: remote_runner: @@ -8,7 +8,7 @@ source: 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 is the mac-mini source/build/provider SSH runner only. As of 2026-07-09 the active dev-corp Edge is the public host digitalplatform-iop.cloud (115.21.224.82), and provider nodes must use digitalplatform-iop.cloud:18087 directly. + current_observation: /Users/fe/agent-work/iop-dev-corp checkout is the mac-mini source/build/provider SSH runner only. As of 2026-07-09 the active dev-corp Edge is the public host iop.ai.kr (115.21.224.82), and provider nodes must use iop.ai.kr:18087 directly. clean_sync: - git fetch origin main - git reset --hard origin/main @@ -17,36 +17,36 @@ source: edge: id: dev-corp-edge - host: digitalplatform-iop.cloud + host: iop.ai.kr public_ip: 115.21.224.82 - ssh: toki@digitalplatform-iop.cloud + ssh: toki@iop.ai.kr runtime_root: /Users/toki/agent-work/iop-dev-corp config_path: /Users/toki/agent-work/iop-dev-corp/build/dev-corp-runtime/edge.yaml - config_note: public Edge config and bootstrap artifacts were normalized to digitalplatform-iop.cloud on 2026-07-09. + config_note: public Edge config and bootstrap artifacts were normalized to iop.ai.kr on 2026-07-09. control_plane_enabled_current_runtime: unknown - control_plane_http: http://digitalplatform-iop.cloud:18002 - control_plane_status_url: http://digitalplatform-iop.cloud:18002/edges/dev-corp-edge/status - control_plane_client_ws_runner: ws://digitalplatform-iop.cloud:19004/client - control_plane_edge_wire_addr_runner: digitalplatform-iop.cloud:19005 - public_route_policy: active_dev_corp_edge_uses_digitalplatform_iop_cloud + control_plane_http: http://iop.ai.kr:18002 + control_plane_status_url: http://iop.ai.kr:18002/edges/dev-corp-edge/status + control_plane_client_ws_runner: ws://iop.ai.kr:19004/client + control_plane_edge_wire_addr_runner: iop.ai.kr:19005 + public_route_policy: active_dev_corp_edge_uses_iop_ai_kr runner_route_policy: mac-mini is source/build/provider management only, not an Edge route. - public_route_note: digitalplatform-iop.cloud is the dev-corp Edge runtime and the only default route for bootstrap, OpenAI-compatible base URL, and Node edge_addr. - control_plane_http_public: http://digitalplatform-iop.cloud:18002 - control_plane_client_ws_public: ws://digitalplatform-iop.cloud:19004/client - bootstrap_http_public: http://digitalplatform-iop.cloud:18085 - bootstrap_http_node_internal: http://digitalplatform-iop.cloud:18085 - openai_base_url_public: http://digitalplatform-iop.cloud:18086/v1 - openai_base_url_node_internal: http://digitalplatform-iop.cloud:18086/v1 - openai_base_url_runner: http://digitalplatform-iop.cloud:18086/v1 + public_route_note: iop.ai.kr is the dev-corp Edge runtime and the only default route for bootstrap, OpenAI-compatible base URL, and Node edge_addr. + control_plane_http_public: http://iop.ai.kr:18002 + control_plane_client_ws_public: ws://iop.ai.kr:19004/client + bootstrap_http_public: http://iop.ai.kr:18085 + bootstrap_http_node_internal: http://iop.ai.kr:18085 + openai_base_url_public: http://digitalplatform.iop.ai.kr:18086/v1 + openai_base_url_node_internal: http://digitalplatform.iop.ai.kr:18086/v1 + openai_base_url_runner: http://digitalplatform.iop.ai.kr: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: digitalplatform-iop.cloud:18087 - edge_node_tcp_node_internal: digitalplatform-iop.cloud:18087 + edge_node_tcp_public: iop.ai.kr:18087 + edge_node_tcp_node_internal: iop.ai.kr:18087 admin_addr_runner: 127.0.0.1:19094 latest_public_edge_reconnect: observed_at: "2026-07-09" - node_edge_addr: digitalplatform-iop.cloud:18087 + node_edge_addr: iop.ai.kr:18087 moved_from: - retired reverse tunnel route - retired mac-mini local route @@ -78,18 +78,19 @@ edge: binary_sha256: 95c59ee0dacb134dc2c6d46fb34f2dac49c33d7da38abe96157583822364f57a note: public /v1/responses remains unsupported for OpenAI-compatible provider model groups until raw passthrough parity is implemented; use /v1/chat/completions for provider-pool capacity smoke. latest_bootstrap_domain_fix: - observed_at: "2026-07-09" - public_host: digitalplatform-iop.cloud - runtime_pid_after_restart: 86504 + observed_at: "2026-07-11" + public_host: iop.ai.kr + runtime_pid_after_restart: 19178 config: - advertise_host: digitalplatform-iop.cloud - artifact_base_url: http://digitalplatform-iop.cloud:18085 + advertise_host: iop.ai.kr + artifact_base_url: http://iop.ai.kr:18085 bootstrap_defaults: - artifact_base_url: http://digitalplatform-iop.cloud:18085 - edge_addr: digitalplatform-iop.cloud:18087 + artifact_base_url: http://iop.ai.kr:18085 + edge_addr: iop.ai.kr:18087 verification: public_bootstrap_defaults: passed public_chat_completions_single: passed + public_chat_completions_new_domain_15: passed public_chat_completions_default_passthrough_15: passed build: @@ -130,7 +131,7 @@ model: current_default_provider: dev-corp current_default_model: gemma4:26b current_default_runtime: edge_openai_compatible_provider_pool - current_default_base_url: http://digitalplatform-iop.cloud:18086/v1 + current_default_base_url: http://digitalplatform.iop.ai.kr:18086/v1 current_default_api: openai-completions current_default_auth_header: true current_default_thinking_level: high @@ -152,7 +153,7 @@ model: scope: dev-corp provider only effect: inject temperature 0.2 and top_p 0.95 into provider request payload api_key_value_tracked: false - route_policy: current dev-corp Pi default must use the public Edge route digitalplatform-iop.cloud. + route_policy: current dev-corp Pi default must use the public Edge route iop.ai.kr. pi_model_parameters: provider: dev-corp model_id: gemma4:26b @@ -276,19 +277,19 @@ model: latest_capacity_verification: date: "2026-07-09" route: public_digitalplatform_edge - host: digitalplatform-iop.cloud - edge_addr: digitalplatform-iop.cloud:18087 + host: iop.ai.kr + edge_addr: iop.ai.kr:18087 source_ref: e8c240ea23a29f1568326b6d162913863b3dca33 default_thinking_token_budget: 1024 control_plane_enabled: unknown - control_plane_status_url: http://digitalplatform-iop.cloud:18002/edges/dev-corp-edge/status + control_plane_status_url: http://iop.ai.kr:18002/edges/dev-corp-edge/status capacity_snapshot_observed: false capacity_snapshot_note: public Control Plane status was not accessible from the current runner; HTTP 15/15 smoke and node connection logs are current evidence, while in_flight/queued snapshot evidence remains legacy 2026-07-08 mac-mini runtime data. runtime: runner_checkout: /Users/fe/agent-work/iop-dev-corp remote_log: build/dev-corp-runtime/logs/public_latest_edge_node_chat_15_20260709_181222.json node_connection: - node_edge_addr: digitalplatform-iop.cloud:18087 + node_edge_addr: iop.ai.kr:18087 moved_from: - retired reverse tunnel route - retired mac-mini local route @@ -411,8 +412,8 @@ nodes: request_timeout_ms: 1800000 edge_connectivity: mode: direct_public_edge - edge_addr: digitalplatform-iop.cloud:18087 - reason: active dev-corp Edge is the public digitalplatform-iop.cloud host + edge_addr: iop.ai.kr:18087 + reason: active dev-corp Edge is the public iop.ai.kr host tunnel_pid_file: /Users/fe/agent-work/iop-dev-corp/build/dev-corp-runtime/node01-tunnel.pid tunnel_status: stopped_obsolete_2026_07_09 retired_reverse_tunnels: true @@ -483,8 +484,8 @@ nodes: request_timeout_ms: 1800000 edge_connectivity: mode: direct_public_edge - edge_addr: digitalplatform-iop.cloud:18087 - reason: active dev-corp Edge is the public digitalplatform-iop.cloud host + edge_addr: iop.ai.kr:18087 + reason: active dev-corp Edge is the public iop.ai.kr host tunnel_pid_file: /Users/fe/agent-work/iop-dev-corp/build/dev-corp-runtime/node02-tunnel.pid tunnel_status: stopped_obsolete_2026_07_09 retired_reverse_tunnels: true @@ -546,8 +547,8 @@ nodes: edge_adapter_endpoint: http://127.0.0.1:8004/v1 edge_connectivity: mode: direct_public_edge - edge_addr: digitalplatform-iop.cloud:18087 - reason: active dev-corp Edge is the public digitalplatform-iop.cloud host + edge_addr: iop.ai.kr:18087 + reason: active dev-corp Edge is the public iop.ai.kr host health: http://192.168.2.3:8004/health served_model: mlx-community/gemma-4-26b-a4b-it-nvfp4 capacity: 5 diff --git a/agent-test/dev-corp/node-smoke.md b/agent-test/dev-corp/node-smoke.md index 0edf0e7..c4e90e7 100644 --- a/agent-test/dev-corp/node-smoke.md +++ b/agent-test/dev-corp/node-smoke.md @@ -3,7 +3,7 @@ test_env: dev-corp test_profile: node-smoke domain: node verification_type: smoke -last_rule_updated_at: 2026-07-09 +last_rule_updated_at: 2026-07-11 --- # node-smoke dev-corp 테스트 @@ -33,18 +33,18 @@ last_rule_updated_at: 2026-07-09 ## 환경 - host: local checkout. provider evidence가 필요하면 mac-mini `ssh fe@172.24.63.178`을 사용한다. -- Edge runtime evidence: public `digitalplatform-iop.cloud`를 기준으로 한다. +- Edge runtime evidence: public `iop.ai.kr`를 기준으로 한다. - port: compose Edge-Node TCP transport `19006`, native provider-pool Edge-Node TCP 후보 `18087` - runtime: Go `1.24` - package manager: Go modules / Makefile - docker: unit/smoke quick check는 Docker를 요구하지 않는다. compose dev-corp 검증은 mac-mini에서 수행한다. -- external service: dev-corp Edge runtime 후보는 `digitalplatform-iop.cloud:18087`이다. mac-mini local endpoint와 reverse tunnel은 dev-corp Edge 경로로 사용하지 않는다. -- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `http://digitalplatform-iop.cloud:18086/v1` +- external service: dev-corp Edge runtime 후보는 `iop.ai.kr:18087`이다. mac-mini local endpoint와 reverse tunnel은 dev-corp Edge 경로로 사용하지 않는다. +- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `http://digitalplatform.iop.ai.kr:18086/v1` - credential: token/secret/API key 원문은 문서에 기록하지 않는다. ## dev-corp Node 접속 기준 -dev-corp의 실제 3-node 연결을 점검할 때는 각 provider host의 `~/iop-dev-corp-field/node.yaml`을 확인하고, `transport.edge_addr`가 `digitalplatform-iop.cloud:18087`인지 검증한다. +dev-corp의 실제 3-node 연결을 점검할 때는 각 provider host의 `~/iop-dev-corp-field/node.yaml`을 확인하고, `transport.edge_addr`가 `iop.ai.kr:18087`인지 검증한다. mac-mini `ssh fe@172.24.63.178`의 `/Users/fe/agent-work/iop-dev-corp` checkout은 provider SSH runner로만 사용한다. @@ -54,7 +54,7 @@ retired mac-mini local route와 reverse tunnel route는 Edge 연결로 사용하 - SSH/user: mac-mini에서 `ssh digitalcommerce_dgx_spark_01@192.168.2.2` - provider endpoint: `http://192.168.2.2:8002/v1` - Edge adapter endpoint: node-local `http://127.0.0.1:8002/v1` - - Edge addr: `digitalplatform-iop.cloud:18087` + - Edge addr: `iop.ai.kr:18087` - served model: `gemma-4-26B-A4B-it-NVFP4` - capacity baseline 후보: `4` - runtime capacity/context/KV: `vllm=0.24.0`, `--max-num-seqs 4`, `--max-model-len 262144`, `--gpu-memory-utilization 0.40`; agent/tool-call profile `--enforce-eager`, `--skip-mm-profiling`, `--limit-mm-per-prompt '{"image": 0, "video": 0}'`, `--mm-processor-cache-gb 0`, `--enable-auto-tool-choice`, `--tool-call-parser gemma4`, `--chat-template /home/digitalcommerce_dgx_spark_01/tool_chat_template_gemma4.jinja`, `--reasoning-parser gemma4`, `--default-chat-template-kwargs '{"enable_thinking":true}'`; 2026-07-08 startup log 기준 GPU KV cache `1,453,705` tokens, `262144` full-context concurrency `5.55x`; FP4 MoE env `VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304` @@ -65,7 +65,7 @@ retired mac-mini local route와 reverse tunnel route는 Edge 연결로 사용하 - SSH/user: mac-mini에서 `ssh dplab@192.168.2.4` - provider endpoint: `http://192.168.2.4:8004/v1` - Edge adapter endpoint: node-local `http://127.0.0.1:8004/v1` - - Edge addr: `digitalplatform-iop.cloud:18087` + - Edge addr: `iop.ai.kr:18087` - served model: `gemma-4-26B-A4B-it-NVFP4` - capacity baseline 후보: `4` - runtime capacity/context/KV: image `vllm/vllm-openai:v0.24.0`, `vllm=0.24.0`, `--max-num-seqs 4`, `--max-model-len 262144`, `--gpu-memory-utilization 0.40`; agent/tool-call profile `--enforce-eager`, `--skip-mm-profiling`, `--limit-mm-per-prompt '{"image": 0, "video": 0}'`, `--mm-processor-cache-gb 0`, `--enable-auto-tool-choice`, `--tool-call-parser gemma4`, `--chat-template /vllm-workspace/examples/tool_chat_template_gemma4.jinja`, `--reasoning-parser gemma4`, `--default-chat-template-kwargs '{"enable_thinking":true}'`; 2026-07-08 startup log 기준 GPU KV cache `1,452,633` tokens, `262144` full-context concurrency `5.54x`; FP4 MoE env `VLLM_MAX_TOKENS_PER_EXPERT_FP4_MOE=4194304` @@ -76,7 +76,7 @@ retired mac-mini local route와 reverse tunnel route는 Edge 연결로 사용하 - SSH/user: mac-mini에서 `ssh dc_dev@192.168.2.3` - provider endpoint: `http://192.168.2.3:8004/v1` - Edge adapter endpoint: node-local `http://127.0.0.1:8004/v1` - - Edge addr: `digitalplatform-iop.cloud:18087` + - Edge addr: `iop.ai.kr:18087` - Edge provider catalog type: `openai_compat`; provider runtime type remains `vllm-mlx`. - served model: `mlx-community/gemma-4-26b-a4b-it-nvfp4` - capacity baseline 후보: `5` (provider catalog capacity; current runtime headroom `--max-num-seqs 6`) @@ -106,8 +106,8 @@ Mac Studio의 secondary `http://192.168.2.3:8005/v1` endpoint는 기본 Node/pro ## 2026-07-09 연결/용량 검증 상태 -- DGX Spark 01, DGX Spark 02, Mac Studio Node는 각 host의 `~/iop-dev-corp-field/node.yaml`에서 `edge_addr: "digitalplatform-iop.cloud:18087"`로 실행된다. -- 2026-07-09 재연결 후 세 Node 모두 `registered with edge`와 `connected to edge` 로그를 남겼고 public `http://digitalplatform-iop.cloud:18086/v1/chat/completions` 15개 동시 요청이 15/15 성공했다. +- DGX Spark 01, DGX Spark 02, Mac Studio Node는 각 host의 `~/iop-dev-corp-field/node.yaml`에서 `edge_addr: "iop.ai.kr:18087"`로 실행된다. +- 2026-07-09 재연결 후 세 Node 모두 `registered with edge`와 `connected to edge` 로그를 남겼고 public `http://digitalplatform.iop.ai.kr:18086/v1/chat/completions` 15개 동시 요청이 15/15 성공했다. - `/v1/responses`는 OpenAI-compatible provider model group raw passthrough parity 전까지 미지원이므로 provider-pool capacity 성공 기준에서 제외한다. ## 명령 @@ -125,7 +125,7 @@ Mac Studio의 secondary `http://192.168.2.3:8005/v1` endpoint는 기본 Node/pro - 변경한 node 패키지 또는 `go test ./apps/node/...`를 실행한다. - 실행 요청, stream, cancel, status, session, adapter registry 경로를 바꾼 경우 repo 내부 edge-node 진단과 full-cycle 실제 구동 기준을 함께 적용한다. - vLLM/OpenAI-compatible adapter 설정을 바꾼 경우 mac-mini에서 provider `/health`와 `/v1/models`를 먼저 확인하고, 이후 Edge OpenAI-compatible 경로에서 model alias 후보 `gemma4:26b` 또는 작업에서 확정한 alias가 노출되는지 확인한다. -- dev-corp Edge runtime으로 연결하는 경우 Node가 `digitalplatform-iop.cloud:18087` native provider-pool TCP를 사용하고 mac-mini local route, reverse tunnel route, local/test/dev baseline으로 붙지 않는지 확인한다. +- dev-corp Edge runtime으로 연결하는 경우 Node가 `iop.ai.kr:18087` native provider-pool TCP를 사용하고 mac-mini local route, reverse tunnel route, local/test/dev baseline으로 붙지 않는지 확인한다. - Node bootstrap UX는 Edge가 출력한 완성 명령을 사용하고, 사용자에게 수동 `node.yaml` 편집이나 named env parameter를 기본 경로로 요구하지 않는다. ## 보조 검증 diff --git a/agent-test/dev-corp/platform-common-smoke.md b/agent-test/dev-corp/platform-common-smoke.md index ad99404..777ffcb 100644 --- a/agent-test/dev-corp/platform-common-smoke.md +++ b/agent-test/dev-corp/platform-common-smoke.md @@ -3,7 +3,7 @@ test_env: dev-corp test_profile: platform-common-smoke domain: platform-common verification_type: smoke -last_rule_updated_at: 2026-07-08 +last_rule_updated_at: 2026-07-11 --- # platform-common-smoke dev-corp 테스트 @@ -34,8 +34,8 @@ last_rule_updated_at: 2026-07-08 - runtime: Go `1.24` - package manager: Go modules / Makefile - docker: unit/codegen quick check는 Docker를 요구하지 않는다. compose dev-corp 검증은 mac-mini에서 수행한다. -- external service: dev-corp artifact/base URL 기본 후보 `http://digitalplatform-iop.cloud:18085`; mac-mini runner/local legacy 경로는 bootstrap 기본 URL로 쓰지 않는다. -- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `http://digitalplatform-iop.cloud:18086/v1` +- external service: dev-corp artifact/base URL 기본 후보 `http://iop.ai.kr:18085`; mac-mini runner/local legacy 경로는 bootstrap 기본 URL로 쓰지 않는다. +- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `http://digitalplatform.iop.ai.kr:18086/v1` - credential: token/secret/API key 원문은 문서에 기록하지 않는다. ## 명령 diff --git a/agent-test/dev-corp/rules.md b/agent-test/dev-corp/rules.md index 2dc5c3f..b13944d 100644 --- a/agent-test/dev-corp/rules.md +++ b/agent-test/dev-corp/rules.md @@ -1,12 +1,12 @@ --- test_env: dev-corp -last_rule_updated_at: 2026-07-09 +last_rule_updated_at: 2026-07-11 --- # dev-corp 테스트 규칙 **현재 문서를 반드시 끝까지 정독하고 작업한다. 다 읽지 않고 즉각 작업은 금지한다.** -**dev-corp 테스트 환경은 public `digitalplatform-iop.cloud` Edge와 내부 provider nodes를 기준으로 하며, mac-mini는 source/build/provider SSH runner로만 사용한다. local/dev stack과 공존하도록 host publish 포트와 runtime profile을 분리한다.** +**dev-corp 테스트 환경은 public `iop.ai.kr` Edge와 내부 provider nodes를 기준으로 하며, mac-mini는 source/build/provider SSH runner로만 사용한다. local/dev stack과 공존하도록 host publish 포트와 runtime profile을 분리한다.** ## 공통 규칙 @@ -21,14 +21,14 @@ last_rule_updated_at: 2026-07-09 ## 기본 배포 통로 -- dev-corp Edge의 기본 배포/검증 통로는 `digitalplatform-iop.cloud`이다. artifact/bootstrap, Edge OpenAI-compatible, Edge-Node TCP는 같은 host의 dev-corp 포트 `18085/18086/18087`을 사용한다. +- dev-corp Edge의 기본 배포/검증 통로는 `iop.ai.kr`이다. artifact/bootstrap, Edge OpenAI-compatible, Edge-Node TCP는 같은 host의 dev-corp 포트 `18085/18086/18087`을 사용한다. - mac-mini는 source sync/build/provider 점검 경유지로만 사용한다. dev-corp Edge 주소, Node `edge_addr`, OpenAI-compatible smoke 대상, bootstrap 기본 URL은 public domain 값으로만 둔다. - mac-mini local endpoint로 Edge를 배포/검증하지 않는다. 사용자가 “mac-mini local Edge로 검증” 또는 같은 의미의 명시 요청을 한 경우에만 별도 local-runner 비교로 진행한다. - provider direct 확인은 기존처럼 mac-mini에서 내부 provider endpoint `192.168.2.2:8002`, `192.168.2.4:8004`, `192.168.2.3:8004`를 확인한다. ## 기본 환경 -- host: Edge public runtime은 `digitalplatform-iop.cloud`(`115.21.224.82`)이다. +- host: Edge public runtime은 `iop.ai.kr`(`115.21.224.82`)이다. - remote runner: `ssh fe@172.24.63.178` mac-mini는 source sync/build/provider SSH runner다. - repo root: 목표 checkout은 `/Users/fe/agent-work/iop-dev-corp`이다. 2026-07-02 기준 해당 checkout과 `build/dev-corp-runtime` runtime이 배포되어 있으며, `/Users/fe/iop-field`는 unrelated legacy field state로 본다. - sync 기준: dev-corp 배포 전 mac-mini checkout은 배포 기준 ref로 clean sync하고 dirty 변경은 보존 대상으로 보지 않는다. @@ -39,8 +39,8 @@ last_rule_updated_at: 2026-07-09 - runtime: Go quick check는 local toolchain을 우선한다. Docker/Flutter/client/field/bootstrap/provider-pool evidence는 mac-mini와 내부 provider nodes를 사용한다. - package manager: Go modules / Makefile / Flutter pub - docker: 현재 작업 컨테이너에서는 Docker-in-Docker를 사용하지 않는다. Docker compose 검증은 mac-mini checkout에서 수행한다. -- external service: dev-corp Edge 후보는 `http://digitalplatform-iop.cloud:18085`, `http://digitalplatform-iop.cloud:18086/v1`, `digitalplatform-iop.cloud:18087`이다. Control Plane/Client public 후보는 해당 public host 포트가 실제로 열려 있을 때만 검증 대상으로 삼는다. -- model endpoint: Edge 배포 후 기본 외부 후보 `http://digitalplatform-iop.cloud:18086/v1`; 직접 provider 확인은 `agent-test/dev-corp/inventory.yaml`의 provider endpoint를 따른다. +- external service: dev-corp Edge 후보는 `http://iop.ai.kr:18085`, `http://digitalplatform.iop.ai.kr:18086/v1`, `iop.ai.kr:18087`이다. Control Plane/Client public 후보는 해당 public host 포트가 실제로 열려 있을 때만 검증 대상으로 삼는다. +- model endpoint: Edge 배포 후 기본 외부 후보 `http://digitalplatform.iop.ai.kr:18086/v1`; 직접 provider 확인은 `agent-test/dev-corp/inventory.yaml`의 provider endpoint를 따른다. - credential: secret/token/API key 원문은 문서에 기록하지 않는다. ## 포트 매핑 @@ -58,16 +58,16 @@ last_rule_updated_at: 2026-07-09 | PostgreSQL host publish | `15400` | `15401` | `15402` | | Redis host publish | `16300` | `16301` | `16302` | -dev-corp native/provider-pool profile은 compose Edge-Node TCP `19006`이 아니라 public native Edge listen 후보 `digitalplatform-iop.cloud:18087`을 사용한다. DGX Spark 01/02와 Mac Studio Node도 기본적으로 이 public Edge addr에 직접 붙는다. mac-mini reverse SSH tunnel은 dev-corp Edge 기준으로 사용하지 않는다. 세부 provider endpoint와 Node 접속 기준은 `agent-test/dev-corp/inventory.yaml`, `agent-test/dev-corp/edge-smoke.md`, `agent-test/dev-corp/node-smoke.md`를 따른다. +dev-corp native/provider-pool profile은 compose Edge-Node TCP `19006`이 아니라 public native Edge listen 후보 `iop.ai.kr:18087`을 사용한다. DGX Spark 01/02와 Mac Studio Node도 기본적으로 이 public Edge addr에 직접 붙는다. mac-mini reverse SSH tunnel은 dev-corp Edge 기준으로 사용하지 않는다. 세부 provider endpoint와 Node 접속 기준은 `agent-test/dev-corp/inventory.yaml`, `agent-test/dev-corp/edge-smoke.md`, `agent-test/dev-corp/node-smoke.md`를 따른다. ## 런타임 프로필 - local quick check: 현재 checkout에서 Go quick check를 우선 실행한다. - remote runner: source sync/build/provider SSH 조작은 `ssh fe@172.24.63.178`의 `/Users/fe/agent-work/iop-dev-corp` 기준으로 수행할 수 있다. -- public Edge evidence: Edge runtime evidence와 OpenAI-compatible smoke는 public `digitalplatform-iop.cloud` 경로로 판정한다. +- public Edge evidence: Edge runtime evidence와 OpenAI-compatible smoke는 public `iop.ai.kr` 경로로 판정한다. - compose dev-corp stack: `.env.dev-corp.example`, `COMPOSE_PROJECT_NAME=iop-dev-corp-agent`, `IOP_COMPOSE_NETWORK=iop-dev-corp-agent-net`, Edge-Node TCP `19006`을 사용한다. - Edge direct dev-corp profile: artifact/bootstrap `18085`, OpenAI-compatible `18086`, metrics `19102`, admin `19094`를 사용한다. -- dev-corp provider pool: 기본 public Edge-Node TCP `digitalplatform-iop.cloud:18087`을 기준으로 한다. `/Users/fe/agent-work/iop-dev-corp/build/dev-corp-runtime/edge.yaml`은 mac-mini runner의 보조 산출물일 뿐 dev-corp Edge source of truth로 판정하지 않는다. retired reverse tunnel route는 Edge addr로 사용하지 않는다. 3-node/provider 세부는 `agent-test/dev-corp/edge-smoke.md`와 `agent-test/dev-corp/node-smoke.md`를 따른다. +- dev-corp provider pool: 기본 public Edge-Node TCP `iop.ai.kr:18087`을 기준으로 한다. `/Users/fe/agent-work/iop-dev-corp/build/dev-corp-runtime/edge.yaml`은 mac-mini runner의 보조 산출물일 뿐 dev-corp Edge source of truth로 판정하지 않는다. retired reverse tunnel route는 Edge addr로 사용하지 않는다. 3-node/provider 세부는 `agent-test/dev-corp/edge-smoke.md`와 `agent-test/dev-corp/node-smoke.md`를 따른다. - current native Control Plane: 2026-07-02 기준 provider-pool runtime에서 `build/dev-corp-runtime/bin/control-plane`이 `18002/19004/19005`를 listen하고, Edge id `dev-corp-edge`가 `127.0.0.1:19005`로 연결된다. provider snapshot status 기준은 `http://127.0.0.1:18002/edges/dev-corp-edge/status`다. - external provider field: DGX Spark 01/02와 Mac Studio는 mac-mini에서 내부 SSH로 접속한다. 직접 접속 경로와 provider endpoint는 `agent-test/dev-corp/inventory.yaml`을 따른다. @@ -76,7 +76,7 @@ dev-corp native/provider-pool profile은 compose Edge-Node TCP `19006`이 아니 - plan 작성 시 필수 검증이 현재 checkout을 벗어나 mac-mini runner, field/bootstrap, 외부 provider, Docker/code-server, emulator/device, 공유 장기 runtime을 사용하면 먼저 테스트 환경 프리플라이트를 계획에 기록한다. - 테스트 환경 프리플라이트에는 runner, repo root/workdir, branch/HEAD/dirty 상태, local 변경과 원격 source 동기화 여부, binary/artifact 경로와 필요한 help/version 출력, config path, runtime identity, port/process 상태, 외부 host, OS/arch 가정을 포함한다. - mac-mini에 `/Users/fe/agent-work/iop-dev-corp` checkout이 없으면 배포/검증을 시작하지 말고 checkout 생성과 source sync를 setup blocker로 보고한다. -- provider pool 검증 전 mac-mini에서 내부 provider endpoint `192.168.2.2:8002`, `192.168.2.4:8004`, `192.168.2.3:8004`의 `/health`와 `/v1/models`를 먼저 확인하고, 각 Node의 `edge_addr`가 `digitalplatform-iop.cloud:18087`인지 확인한다. +- provider pool 검증 전 mac-mini에서 내부 provider endpoint `192.168.2.2:8002`, `192.168.2.4:8004`, `192.168.2.3:8004`의 `/health`와 `/v1/models`를 먼저 확인하고, 각 Node의 `edge_addr`가 `iop.ai.kr:18087`인지 확인한다. - `gemma4:26b` alias와 총 capacity `13`은 `agent-test/dev-corp/inventory.yaml`의 최신 검증 상태를 기준으로 판단한다. 새 배포에서 Edge config 반영과 capacity smoke가 통과하기 전에는 새 결과를 확정값으로 보고하지 않는다. - 프리플라이트에서 dirty/divergent checkout 또는 stale artifact가 확인되면 dev-corp 배포에서는 먼저 원격 checkout을 clean sync하고 dev-corp runtime 바이너리를 rebuild한다. 잘못된 identity, missing command, closed port, host OS 불일치, source 미동기화가 확인되면 plan은 setup/sync/rebuild 단계를 만들거나 blocker로 보고한다. diff --git a/agent-test/dev-corp/testing-smoke.md b/agent-test/dev-corp/testing-smoke.md index 828f0ba..333d84f 100644 --- a/agent-test/dev-corp/testing-smoke.md +++ b/agent-test/dev-corp/testing-smoke.md @@ -3,7 +3,7 @@ test_env: dev-corp test_profile: testing-smoke domain: testing verification_type: smoke -last_rule_updated_at: 2026-07-08 +last_rule_updated_at: 2026-07-11 --- # testing-smoke dev-corp 테스트 @@ -37,8 +37,8 @@ last_rule_updated_at: 2026-07-08 - runtime: Go `1.24` - package manager: Go modules / Makefile - docker: quick check는 Docker를 요구하지 않는다. 현재 작업 컨테이너에서는 Docker-in-Docker를 사용하지 않으며, Docker compose 검증은 mac-mini 환경에서 수행한다. -- external service: dev-corp Control Plane 후보는 mac-mini local 기준 `http://127.0.0.1:18002`, 기본 외부 후보 `http://digitalplatform-iop.cloud:18002`이다. Client wire 후보는 mac-mini local 기준 `ws://127.0.0.1:19004/client`, 기본 외부 후보 `ws://digitalplatform-iop.cloud:19004/client`이다. dev-corp Edge runtime 기본 후보는 `digitalplatform-iop.cloud:18087`이며, mac-mini runner/local legacy 경로를 Edge runtime 또는 Node `edge_addr`로 쓰지 않는다. -- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `http://digitalplatform-iop.cloud:18086/v1` +- external service: dev-corp Control Plane 후보는 mac-mini local 기준 `http://127.0.0.1:18002`, 기본 외부 후보 `http://iop.ai.kr:18002`이다. Client wire 후보는 mac-mini local 기준 `ws://127.0.0.1:19004/client`, 기본 외부 후보 `ws://iop.ai.kr:19004/client`이다. dev-corp Edge runtime 기본 후보는 `iop.ai.kr:18087`이며, mac-mini runner/local legacy 경로를 Edge runtime 또는 Node `edge_addr`로 쓰지 않는다. +- model endpoint: dev-corp OpenAI-compatible base URL 기본 후보 `http://digitalplatform.iop.ai.kr:18086/v1` - credential: token/secret/API key 원문은 문서에 기록하지 않는다. ## 명령 diff --git a/docs/dev-corp-openai-compatible-call-guide.md b/docs/dev-corp-openai-compatible-call-guide.md index 3df68ca..7b05c6a 100644 --- a/docs/dev-corp-openai-compatible-call-guide.md +++ b/docs/dev-corp-openai-compatible-call-guide.md @@ -6,7 +6,7 @@ dev-corp `gemma4:26b` 모델을 OpenAI-compatible 방식으로 직접 호출할 | 항목 | 값 | | --- | --- | -| Base URL | `http://digitalplatform-iop.cloud:18086/v1` | +| Base URL | `http://digitalplatform.iop.ai.kr:18086/v1` | | Chat endpoint | `POST /v1/chat/completions` | | Models endpoint | `GET /v1/models` | | Model | `gemma4:26b` | @@ -20,7 +20,7 @@ dev-corp `gemma4:26b` 모델을 OpenAI-compatible 방식으로 직접 호출할 반복 출력 loop를 피하려면 최소 sampling parameter로 `temperature: 0.2`, `top_p: 0.95`를 함께 보낸다. ```bash -curl -N http://digitalplatform-iop.cloud:18086/v1/chat/completions \ +curl -N http://digitalplatform.iop.ai.kr:18086/v1/chat/completions \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ -d '{ @@ -40,7 +40,7 @@ curl -N http://digitalplatform-iop.cloud:18086/v1/chat/completions \ Streaming을 처리하지 않는 client에서는 선택적으로 `stream:false`를 사용할 수 있다. ```bash -curl -fsS http://digitalplatform-iop.cloud:18086/v1/chat/completions \ +curl -fsS http://digitalplatform.iop.ai.kr:18086/v1/chat/completions \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer ' \ -d '{"model":"gemma4:26b","messages":[{"role":"user","content":"ok만 응답해줘."}],"temperature":0.2,"top_p":0.95,"stream":false}' diff --git a/docs/dev-corp-pi-settings-guide.md b/docs/dev-corp-pi-settings-guide.md index a21e93d..b6203a4 100644 --- a/docs/dev-corp-pi-settings-guide.md +++ b/docs/dev-corp-pi-settings-guide.md @@ -106,7 +106,7 @@ export default function (pi: ExtensionAPI) { { "providers": { "dev-corp": { - "baseUrl": "http://digitalplatform-iop.cloud:18086/v1", + "baseUrl": "http://digitalplatform.iop.ai.kr:18086/v1", "api": "openai-completions", "apiKey": "", "authHeader": true, @@ -206,7 +206,7 @@ sampling parameter extension: - dev-corp-direct, dev-corp-spark01에는 적용하지 않음 models.json: -- providers.dev-corp.baseUrl: http://digitalplatform-iop.cloud:18086/v1 +- providers.dev-corp.baseUrl: http://digitalplatform.iop.ai.kr:18086/v1 - providers.dev-corp.api: openai-completions - providers.dev-corp.apiKey: 기존 값이 있으면 보존하고, 없으면 사용자에게 토큰을 요청 - providers.dev-corp.authHeader: true diff --git a/docs/openai-compatible-api-contract.md b/docs/openai-compatible-api-contract.md index 3b1cd14..2ebda22 100644 --- a/docs/openai-compatible-api-contract.md +++ b/docs/openai-compatible-api-contract.md @@ -10,7 +10,7 @@ - caller는 `metadata.iop_response_mode`에 `passthrough`, `passthrough+sideband`, `transformed` 중 하나를 넣어 응답 경로를 선택할 수 있다. - `passthrough+sideband`와 `transformed`는 IOP 확장/변환 응답이며 provider-original byte identity로 취급하지 않는다. - dev-corp `gemma4:26b` provider-pool에서 `think`/`stream`/`include_reasoning` 요청 파라미터만 바꿔 측정하는 범위는 계약 원문의 `dev-corp gemma4:26b provider-pool passthrough 파라미터 범위` 표를 기준으로 한다. -- dev-corp `digitalplatform-iop.cloud` 직접 호출 가이드는 [dev-corp-openai-compatible-call-guide.md](./dev-corp-openai-compatible-call-guide.md)를 기준으로 한다. +- dev-corp `iop.ai.kr` 직접 호출 가이드는 [dev-corp-openai-compatible-call-guide.md](./dev-corp-openai-compatible-call-guide.md)를 기준으로 한다. - dev-corp Pi coding agent 설정 가이드는 [dev-corp-pi-settings-guide.md](./dev-corp-pi-settings-guide.md)를 기준으로 한다. 에이전트 작업에서는 [agent-contract/index.md](../agent-contract/index.md)의 라우팅 규칙을 먼저 따른다.