From 3a5a089426fd3b83ea5fe91033d81bdb942e647a Mon Sep 17 00:00:00 2001 From: toki Date: Wed, 27 May 2026 21:11:05 +0900 Subject: [PATCH] update roadmap and add edge-local-dev-config-runtime milestone --- agent-roadmap/ROADMAP.md | 6 +- .../serving-routing-optimization/PHASE.md | 2 +- agent-roadmap/current.md | 8 +- .../phase/control-plane-portal-ops/PHASE.md | 4 + .../edge-local-dev-config-runtime.md | 75 +++++++++++++++++++ 5 files changed, 88 insertions(+), 7 deletions(-) rename agent-roadmap/{ => archive}/phase/serving-routing-optimization/PHASE.md (99%) create mode 100644 agent-roadmap/phase/control-plane-portal-ops/milestones/edge-local-dev-config-runtime.md diff --git a/agent-roadmap/ROADMAP.md b/agent-roadmap/ROADMAP.md index 3af83c9..ada06f6 100644 --- a/agent-roadmap/ROADMAP.md +++ b/agent-roadmap/ROADMAP.md @@ -25,9 +25,9 @@ RAG, context 구성/압축, web search, MCP 정책, tool policy, output validati - 경로: `agent-roadmap/archive/phase/edge-node-execution-foundation/PHASE.md` - 요약: Edge-Node 소켓 실행 경로, Node adapter execution, CLI session, 최소 외부 입력 표면을 안정화한 단계다. -- [진행중] Ollama 서빙 안정화 기반 - - 경로: `agent-roadmap/phase/serving-routing-optimization/PHASE.md` - - 요약: Edge OpenAI-compatible API에서 Node의 Ollama adapter를 호출하는 E2E 경로를 실제 Ollama endpoint와 split-host 환경에서 안정화하는 단계다. 추가 provider, 표준화, 후속 최적화 계층은 포함하지 않는다. +- [완료] Ollama 서빙 안정화 기반 + - 경로: `agent-roadmap/archive/phase/serving-routing-optimization/PHASE.md` + - 요약: Edge OpenAI-compatible API에서 Node의 Ollama adapter를 호출하는 E2E 경로를 실제 Ollama endpoint와 split-host 환경에서 안정화했다. 추가 provider, 표준화, 후속 최적화 계층은 후속 Phase로 넘긴다. - [계획] 추론 서버 provider 확장 - 경로: `agent-roadmap/phase/inference-provider-extension/PHASE.md` diff --git a/agent-roadmap/phase/serving-routing-optimization/PHASE.md b/agent-roadmap/archive/phase/serving-routing-optimization/PHASE.md similarity index 99% rename from agent-roadmap/phase/serving-routing-optimization/PHASE.md rename to agent-roadmap/archive/phase/serving-routing-optimization/PHASE.md index 039052e..d74d2d5 100644 --- a/agent-roadmap/phase/serving-routing-optimization/PHASE.md +++ b/agent-roadmap/archive/phase/serving-routing-optimization/PHASE.md @@ -2,7 +2,7 @@ ## 상태 -[진행중] +[완료] ## 목표 diff --git a/agent-roadmap/current.md b/agent-roadmap/current.md index 63121cf..80006e7 100644 --- a/agent-roadmap/current.md +++ b/agent-roadmap/current.md @@ -2,12 +2,14 @@ ## 활성 Phase -- [진행중] Ollama 서빙 안정화 기반 - - 경로: `agent-roadmap/phase/serving-routing-optimization/PHASE.md` +- [계획] Control Plane과 Client 운영 + - 경로: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` ## 활성 Milestone -- 없음 +- [계획] Edge-local Dev Config와 바이너리 중심 실행 루프 + - Phase: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` + - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/edge-local-dev-config-runtime.md` ## 선택 규칙 diff --git a/agent-roadmap/phase/control-plane-portal-ops/PHASE.md b/agent-roadmap/phase/control-plane-portal-ops/PHASE.md index 4587cc7..0aaca6c 100644 --- a/agent-roadmap/phase/control-plane-portal-ops/PHASE.md +++ b/agent-roadmap/phase/control-plane-portal-ops/PHASE.md @@ -17,6 +17,10 @@ - 경로: `agent-roadmap/archive/phase/control-plane-portal-ops/milestones/flutter-first-portal-migration.md` - 요약: Next.js `apps/web` scaffold를 제거하고 `apps/portal` Flutter 앱, Flutter Web compose 배포 흐름, Portal-Control Plane proto-socket WS hello 기반을 세웠다. +- [계획] Edge-local Dev Config와 바이너리 중심 실행 루프 + - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/edge-local-dev-config-runtime.md` + - 요약: Control Plane이 없는 동안 `edge.yaml`을 테스트용 source of truth로 삼고, 로컬/개발 서버 config, bootstrap, setup, smoke test를 `iop-edge` command 중심으로 모은다. + - [계획] Client Integration Clone Adoption - 경로: `agent-roadmap/phase/control-plane-portal-ops/milestones/client-integration-clone-adoption.md` - 요약: NomadCode client 표준을 IOP client에 복제하기 위한 모듈명, bootstrap, proto-socket, Mattermost push host integration 기준을 정리한다. diff --git a/agent-roadmap/phase/control-plane-portal-ops/milestones/edge-local-dev-config-runtime.md b/agent-roadmap/phase/control-plane-portal-ops/milestones/edge-local-dev-config-runtime.md new file mode 100644 index 0000000..1d5ca82 --- /dev/null +++ b/agent-roadmap/phase/control-plane-portal-ops/milestones/edge-local-dev-config-runtime.md @@ -0,0 +1,75 @@ +# Milestone: Edge-local Dev Config와 바이너리 중심 실행 루프 + +## 위치 + +- Roadmap: `agent-roadmap/ROADMAP.md` +- Phase: `agent-roadmap/phase/control-plane-portal-ops/PHASE.md` + +## 목표 + +Control Plane이 아직 없는 동안 `edge.yaml`을 개발/테스트용 Control Plane source of truth로 사용한다. +로컬/개발 서버 배포와 smoke test는 helper script나 모델용 skill로 흩뜨리지 않고 `iop-edge` command 표면에 모으며, Node 사용자는 `node.yaml`을 만들거나 편집하지 않고 Edge가 제공하는 bootstrap만 실행한다. +Edge/Node 바이너리는 repo checkout 위치에 묶이지 않고, 바이너리와 같은 폴더의 구조화된 config와 artifact만으로 실행 가능해야 한다. + +## 상태 + +[계획] + +## 승격 조건 + +- 없음 + +## 구현 잠금 + +- 상태: 해제 +- 결정 필요: 없음 + +## 범위 + +- Control Plane 부재 시 사용할 `edge.yaml` 구조를 Edge-local dev/test source of truth로 정리한다. +- `iop-edge`가 바이너리 기준 경로의 `edge.yaml`을 기본 config 후보로 찾고, repo checkout 없이 실행 가능하게 한다. +- Node별 id/alias/token/adapter/runtime 설정은 Edge config의 `nodes[]`에서 관리한다. +- Node host 사용자는 Edge가 발급한 bootstrap 명령만 실행하고, `node.yaml` 생성/편집/확인이나 `iop-node serve --config ...` 직접 실행을 기본 경로로 보지 않는다. +- 로컬/개발 서버 셋업, 실행, config 확인, Node bootstrap 발급, 기본 smoke test를 `iop-edge` command 중심으로 수렴시킨다. +- 기존 `iop-node` 바이너리는 실행자로 유지하되, 사용자-facing 제어와 배포 루프는 `iop-edge`가 안내하고 조립한다. + +## 기능 + +### Epic: [edge-dev-loop] Edge-local dev loop + +Control Plane이 붙기 전까지 Edge 바이너리와 `edge.yaml`만으로 개발 서버 배포와 Edge-Node smoke를 반복 가능하게 만든다. + +- [ ] [config-discovery] `iop-edge`는 `--config`가 없을 때 repo 상대 `configs/edge.yaml`에 의존하지 않고, 바이너리와 같은 폴더의 `edge.yaml` 같은 배포용 기본 config 후보를 우선 사용할 수 있다. 검증: 임시 폴더에 `iop-edge`와 `edge.yaml`만 둔 상태에서 `iop-edge config check`와 `iop-edge serve`가 동작한다. +- [ ] [edge-source] `edge.yaml`은 Control Plane 없는 개발 단계의 source of truth로서 `nodes[]`에 Node id, alias, token, adapter, runtime 설정을 담는다. 검증: `iop-edge config check`가 `nodes[]` token/id/alias 충돌과 adapter/runtime 설정 오류를 잡는다. +- [ ] [edge-commands] Node 등록 관리, bootstrap command 발급, local/dev setup, 실행 전 config 확인, smoke test 진입점은 공식 사용자 경로에서 `iop-edge` command로 제공된다. 검증: 문서와 help output에서 `bin/*`, 별도 dev deploy 바이너리, 모델용 skill이 공식 경로로 등장하지 않는다. +- [ ] [node-hidden-config] Node 사용자 UX는 Edge가 제시한 bootstrap 한 줄로 끝나며 `node.yaml` 생성, 편집, 확인 또는 `iop-node serve --config ...` 직접 실행을 요구하지 않는다. 검증: 사용자용 dev/field 가이드에 node config 파일 조작 단계가 없다. +- [ ] [bundle-run] Edge/Node dev bundle은 repo checkout 위치와 무관하게 바이너리 옆 config/artifact만으로 실행 가능하다. 검증: clean temp dir 또는 개발 서버 배포 디렉터리에서 Edge 실행, Node bootstrap, Node registration, `/v1/models` smoke가 통과한다. + +## 완료 리뷰 + +- 상태: 없음 +- 요청일: 없음 +- 완료 근거: 모든 기능 Task와 Task 안에 명시된 검증이 아직 충족되지 않았다. +- 리뷰 필요: + - [ ] 사용자가 완료 결과를 확인했다 + - [ ] archive 이동을 승인했다 +- 리뷰 코멘트: 없음 + +## 범위 제외 + +- Control Plane server의 실제 Edge config sync/enrollment 구현 +- Flutter client 운영 화면 구현 +- 별도 `bin/dev-deploy`, 별도 dev deploy 바이너리, 모델용 agent skill을 공식 사용자 경로로 만드는 작업 +- Node 사용자에게 `node.yaml` 작성/편집/확인 또는 `iop-node serve --config ...` 직접 실행을 요구하는 UX +- production release, signing, long-term credential rotation, mTLS 세부 구현 + +## 작업 컨텍스트 + +- 관련 경로: `apps/edge/cmd/edge`, `apps/edge/internal/bootstrap`, `apps/edge/internal/node`, `apps/edge/internal/transport`, `apps/node/cmd/node`, `apps/node/internal/bootstrap`, `packages/config`, `packages/hostsetup`, `configs/edge.yaml`, `docs/deploy-dev.md`, `docs/field-bootstrap-work-guide.md`, `README.md`, `agent-ops/rules/project/rules.md` +- 표준선(선택): README의 Edge 책임 중 `Edge-managed Node bootstrap/configuration`과 `Edge는 자신의 로컬 런타임 상태를 소유한다`는 원칙을 따른다. +- 표준선(선택): Control Plane 부재 개발 단계에서는 `edge.yaml`이 테스트용 Control Plane 역할을 하며, `nodes[]`가 Node별 실행 설정의 원본이다. +- 표준선(선택): 공식 사용자 UX는 `iop-edge`와 `iop-node` command 표면에 모으되, Node 사용자는 Edge bootstrap만 실행하고 Node config 파일을 다루지 않는다. +- 표준선(선택): helper script가 필요해도 내부 개발 보조로만 두고 공식 로컬/dev 배포 경로로 문서화하지 않는다. +- 선행 작업: Field Bootstrap UX와 테스트 포트 정비 +- 후속 작업: Control Plane과 Client, Agent Bootstrap과 OTO 등록, Multi-Edge 운영 +- 확인 필요: 없음