iop/apps/client
2026-07-18 14:15:53 +09:00
..
android feat: client integration and control-plane phase updates 2026-05-30 18:02:06 +09:00
assets feat: client integration and control-plane phase updates 2026-05-30 18:02:06 +09:00
ios refactor: portal → client 앱 리팩토링 및 제어플랫폼 와이어 클라이언트 명명 변경 2026-05-28 20:24:45 +09:00
lib refactor: 로드맵 갱신 및 클라이언트/에지/노드 개선 2026-07-18 14:15:53 +09:00
linux feat: client integration and control-plane phase updates 2026-05-30 18:02:06 +09:00
macos feat: client integration and control-plane phase updates 2026-05-30 18:02:06 +09:00
test refactor: 로드맵 갱신 및 클라이언트/에지/노드 개선 2026-07-18 14:15:53 +09:00
web refactor: portal → client 앱 리팩토링 및 제어플랫폼 와이어 클라이언트 명명 변경 2026-05-28 20:24:45 +09:00
windows feat: client integration and control-plane phase updates 2026-05-30 18:02:06 +09:00
.gitignore feat: client integration and control-plane phase updates 2026-05-30 18:02:06 +09:00
.metadata refactor: portal → client 앱 리팩토링 및 제어플랫폼 와이어 클라이언트 명명 변경 2026-05-28 20:24:45 +09:00
analysis_options.yaml refactor: portal → client 앱 리팩토링 및 제어플랫폼 와이어 클라이언트 명명 변경 2026-05-28 20:24:45 +09:00
Dockerfile fix(client): compose 웹 빌드 경로를 보강한다 2026-06-07 21:15:44 +09:00
nginx.conf refactor: portal → client 앱 리팩토링 및 제어플랫폼 와이어 클라이언트 명명 변경 2026-05-28 20:24:45 +09:00
pubspec.lock feat: update roadmap and migrate iop_console to packages/flutter 2026-06-01 09:20:15 +09:00
pubspec.yaml refactor: mattermost 통합 정리 및 openai tool boundary 개선 2026-07-06 21:06:36 +09:00
README.md refactor: mattermost 통합 정리 및 openai tool boundary 개선 2026-07-06 21:06:36 +09:00

IOP Client

IOP(Inference Operations Platform)의 공식 Client UI 애플리케이션입니다. Flutter를 사용하여 다중 플랫폼(Web, Desktop, Mobile)을 단일 코드베이스로 지원합니다.

Nexo 알림 통합

이 client는 Nexo messaging plugin(nexo_messaging)을 통해 push notification을 구독합니다. Client는 상위 폴더의 ../nexo가 제공하는 notification 기능만 사용하며, Mattermost-compatible 인증/등록/서버 통합 책임은 Nexo 쪽 경계에서 담당합니다. Client는 NexoNotificationHostIntegration을 통해 notification stream을 구독하고 UI에 표시됩니다.

Agent Shell 구성

이 client는 IOP-owned Flutter package인 packages/flutter/iop_console을 path dependency로 사용합니다. iop_console은 workspace sibling package인 agent_shell을 사용해 IopConsoleShellIopAgentPanel을 제공하며, IOP 운영/유지보수 agent 화면을 단독 IOP 앱과 외부 임베딩 소비자에서 같은 위젯 경계로 조립하기 위한 시작점입니다.

IOP client는 NomadCode 전용 workbench layout을 소유하지 않습니다. IOP 쪽 책임은 Control Plane을 통해 Edge/Node 운영 상태와 유지보수 작업을 다루는 agent capability와 panel widget을 제공하는 것이고, NomadCode 같은 소비자는 iop_console 또는 향후 IOP console package를 자신의 shell 안에 선택적으로 mount합니다.

개발 및 검증 명령

의존성 설치

flutter pub get

테스트 실행

flutter test

Dart Protobuf 생성

이 프로젝트는 Go/Dart 등 다중 언어 환경의 메시지 계약을 공유하기 위해 protobuf를 사용합니다. Dart proto 코드를 새로 생성하려면 루트 Makefile에서 make proto-dart를 실행하세요. Client-Control Plane wire 계약 원문은 repo root의 agent-contract/inner/client-control-plane-wire.md를 기준으로 합니다.

필요 조건:

  1. protoc 설치
  2. protoc_plugin 글로벌 설치:
    flutter pub global activate protoc_plugin
    
    참고: protoc-gen-dart가 시스템 PATH에 등록되어 있지 않더라도, Makefile이 자동으로 ~/.pub-cache/bin/config/.pub-cache/bin 경로를 검색해 컴파일을 수행하므로 수동 PATH 설정이 필수적이지는 않습니다.

Web 빌드

flutter build web \
  --dart-define=IOP_CONTROL_PLANE_HTTP_URL=http://localhost:18000 \
  --dart-define=IOP_CONTROL_PLANE_WIRE_URL=ws://localhost:19080/client

환경 변수 및 설정 정의

본 앱은 빌드 시점에 --dart-define 인자를 사용해 설정을 주입받습니다.

변수명 설명 기본값
IOP_CONTROL_PLANE_HTTP_URL Control Plane HTTP API 주소 http://localhost:18000
IOP_CONTROL_PLANE_WIRE_URL Control Plane WebSocket 연결 주소 ws://localhost:19080/client