- apps/portal 디렉터리를 apps/client로 리팩터링 - ControlPlaneWireClient → WireClient 명명 변경 - 관련_proto import 정렬, struct protobuf 생성 제거 - README, docker-compose, 스크립트 등 일관성 개선
4.4 KiB
4.4 KiB
Milestone: Control Plane과 Client
위치
- Roadmap:
agent-roadmap/ROADMAP.md - Phase:
agent-roadmap/phase/control-plane-portal-ops/PHASE.md
목표
여러 Edge를 연결하고 관찰하며 Edge 설정 변경, 명령 전달, 이벤트 수신을 담당하는 Control Plane과 Flutter client 운영면을 구축한다. Client는 NomadCode 전용 화면이 아니라 IOP가 독립적으로 운영되기 위한 범용 운영/UX 계층으로 둔다.
상태
[계획]
구현 잠금
- 상태: 잠금
- 결정 필요: 아래 체크리스트
- Client의 첫 운영 화면 범위를 Edge/Node 상태 조회 중심으로 둘지, 명령/설정 변경까지 포함할지 결정한다.
- Control Plane-Edge 연결에서 우선 구현할 IOP Wire Protocol 범위를 결정한다.
- IOP client가 범용 운영 UI로 남기 위해 제외할 NomadCode 전용 UX 경계를 결정한다.
- Client Integration Clone Adoption 완료 전 Flutter client 화면 구현을 어디까지 진행할지 결정한다.
범위
- Control Plane Go server의 Edge connection 관리
- Client-Control Plane, Control Plane-Edge IOP Wire Protocol 확장
- Flutter client의 Runtime/Automation/Serving 운영 화면 기초
- Edge 상태 조회, 설정 변경, 명령 전달, 이벤트 수신
- Edge agent 생성과 bootstrap command 발급 상태 조회/관리
- remote terminal bridge session 생성/조회/권한 확인 표면
- IOP 책임 범위 안의 model serving, automation, session, routing, policy, history, audit 운영 UX
기능
Epic: [edge-ops-boundary] Edge Operations Boundary
- [edge-mediated] Control Plane은 Node를 직접 연결하거나 직접 스케줄링하지 않는다.
- [edge-status] Control Plane은 하나 이상의 Edge 연결 상태를 조회할 수 있다. 검증: Edge 연결 상태 조회 경로가 동작하는지 확인한다.
- [edge-command-events] Edge 명령 전달과 이벤트 수신 흐름이 IOP Wire Protocol 기준으로 문서화된다.
- [client-via-cp] Client는 Control Plane을 통해 Edge 운영 상태를 조회한다.
Epic: [client-wire-surface] Client Wire Surface
- [client-boundary] Flutter client는 IOP 자체 운영 UI/UX이며 NomadCode에 맞춘 전용 shell로 만들지 않는다.
- [client-status] Client는 Edge/Node/agent 상태를 사용자에게 보여줄 수 있다. 검증: Client 상태 화면 또는 상태 표시 경로를 확인한다.
- [server-bridge] 브라우저 직접 TCP가 어려운 구간은 Control Plane server-side bridge를 둔다.
- [client-wire-hello] Client-Control Plane proto-socket WebSocket hello handshake scaffold가 구현되고 테스트되어 있다. 검증: Control Plane과 client 테스트에서 hello handshake가 통과한다.
- [http-boundary]
net/http는 health/readiness/bootstrap 같은 보조 endpoint 용도로 유지한다. - [deploy-docs] Control Plane과 Flutter client의 배포/검증 절차가
README.md의 운영 경계와 private local testing rule의 환경 기준에 맞게 정리되어 있다.
완료 리뷰
- 상태: 없음
- 요청일: 없음
- 완료 근거: 모든 기능 Task와 Task 안에 명시된 검증이 아직 충족되지 않았다.
- 리뷰 필요:
- 사용자가 완료 결과를 확인했다
- archive 이동을 승인했다
- 리뷰 코멘트: 없음
범위 제외
- Control Plane을 Kubernetes식 중앙 스케줄러로 만드는 작업
- Edge 내부 DB를 Control Plane DB로 대체
- 모든 런타임 상태를 Control Plane 단일 원본으로 만드는 작업
- NomadCode Agent Shell 자체 구현
- NomadCode 전용 Project Workspace, diff/PR/branch/commit UX
작업 컨텍스트
- 관련 경로:
apps/control-plane,apps/client,apps/control-plane/README.md,apps/client/README.md,agent-ops/rules/private/rules.md,docker-compose.yml,scripts/dev/web.sh - 표준선(선택): Control Plane은 Node를 직접 스케줄링하지 않고 Edge를 통해 관찰/제어한다.
- 표준선(선택): Client-Control Plane의 첫 wire surface는
/clientWebSocket hello handshake를 기준으로 둔다. - 선행 작업: Flutter-first Client 마이그레이션, Client Integration Clone Adoption, Agent Bootstrap과 OTO 등록, 정책/이력/감사 일부 기준
- 후속 작업: Multi-Edge 운영
- 확인 필요: Client 첫 화면 범위, Control Plane-Edge wire 우선순위, NomadCode 전용 UX 제외 기준, client 표준 clone 반영 범위