기본 local 테스트 환경이 standard remote runner라는 전제에 맞춰 문서와 로드맵 기준을 정리한다. Core compose host publish 기본값을 18010으로 맞추고 8080 호환은 명시적 override로 남긴다.
5.9 KiB
5.9 KiB
Milestone: 워크스페이스 포트/환경 표준화
위치
- Roadmap:
agent-roadmap/ROADMAP.md - Phase:
agent-roadmap/phase/agent-ops-mcp-control-plane/PHASE.md
목표
NomadCode의 Flutter client, core service, compose/local run, code-server preview, IOP Edge 연동 endpoint를 workspace 공통 포트 대역으로 정리한다. 기존 8080 기반 local core와 web preview 관례는 바로 깨지지 않게 compatibility note를 남기고, host publish와 remote runner 문서부터 같은 대역 언어로 맞춘다.
상태
[검토중]
구현 잠금
- 상태: 해제
- 결정 필요: 없음
범위
- Flutter/client web preview와 code-server proxy preview를 frontend 대역 후보로 정리
- Core HTTP/API host publish와 local default
8080compatibility note 정리 - PostgreSQL/Redis host publish는 필요할 때만 DB/cache offset 대역으로 노출하고, compose 내부 통신은 service DNS를 우선한다는 기준 정리
- IOP Edge OpenAI-compatible Responses endpoint, model provider URL, remote Android runner 환경 변수를 private 값 없이 문서화
- Plane, Mattermost, Jira, Firebase 같은 외부 integration 값은 endpoint 책임 경계만 기록하고 token/secret은 tracked 문서에서 제외
기능
Epic: [inventory] NomadCode environment inventory
NomadCode가 직접 소유한 client/core 포트와 외부 IOP/Nexo/Plane 연동 endpoint를 현재 repo baseline 기준으로 분리해 정리한다.
- [client-preview] Flutter web/code-server preview는 현재 local smoke 기준
8081계열 임시 포트와/proxy/<port>/base href를 사용한다. frontend 대역 후보13010으로 정리할 때 기존 preview 흐름과 workspace mock URL의localhost:8080code-server entry 호환성을 기록한다. - [core-port] Core HTTP/API는
HTTP_ADDR=:8080, DockerEXPOSE 8080을 internal compatibility로 유지하고, compose host publish 기본값을18010:8080으로 맞춘다. 기존8080host publish가 필요하면NOMADCODE_CORE_HOST_PORT=8080override로 확인한다. - [infra-ports] PostgreSQL/Redis는 현재 compose 내부에서
code-server-postgres:5432,code-server-redis:6379service DNS를 사용하고 별도 host publish를 갖지 않는다. 필요한 경우만 DB/cache offset 대역15410/16310노출 후보를 문서화한다. - [external-endpoints] IOP Edge OpenAI-compatible endpoint는 현재
MODEL_BASE_URL,MODEL_API_KEY,MODEL_NAME,MODEL_CONTEXT_SIZE,MODEL_TIMEOUT_SEC로 설정하고, A2A/proto-socket/provider 연동은A2A_*,PROTO_SOCKET_*,PLANE_*,JIRA_*,MATTERMOST_*env로 분리한다. raw secret 없이 source of truth와 책임 경계만 남긴다.
완료 리뷰
- 상태: 요청됨
- 요청일: 2026-06-07
- 완료 근거:
README.md,services/core/README.md,apps/client/README.md,agent-test/local/mobile-smoke.md,packages/contracts/notes/flutter-core-api-candidates.md에 workspace 포트 대역과 compatibility baseline을 문서화했다.- Flutter preview
13010+, Core host publish18010:8080, PostgreSQL/Redis host publish 후보15410/16310, IOP/provider env group의 secret-free 책임 경계를 분리했다. agent-test/local/*의 기본 host를 standard remote runner 기준으로 정리하고 Android/Mattermost remote smoke의 포트 기준을 채웠다.- Core compose host publish 기본값을
18010:8080으로 바꾸고, 기존8080host publish는NOMADCODE_CORE_HOST_PORT=8080override로 남겼다. - 검증:
git diff --checkPASS. - 검증: standard remote runner에서
zsh -lc 'docker compose ... config'로 compose 렌더링을 확인했다. 기본 publish는published: "18010",NOMADCODE_CORE_HOST_PORT=8080override는published: "8080"으로 확인했다.
- 리뷰 필요:
- 사용자가 완료 결과를 확인했다
- archive 이동을 승인했다
- 리뷰 코멘트: 작은 문서화 작업은 바로 처리했으며, 별도 large plan 대상은 남기지 않았다.
범위 제외
- Plane/Jira work item sync 구현
- Workbench/provider slot UI 구현
- IOP 모델 라우팅, RAG, MCP/tool policy 구현
- token, password, Firebase/Jira/Plane secret 기록
- remote Android runner 또는 code-server host 즉시 재배포
작업 컨텍스트
- 관련 경로:
apps/client/,services/core/,docker-compose.yml,.env.example,agent-test/local/,packages/contracts/ - 외부 관련 경로:
../iop/,../nexo/packages/messaging_flutter/,../proto-socket/dart/ - 표준선(선택): container 내부 포트와 기존 local default는 compatibility baseline으로 유지하고, host publish, preview, remote runner 문서부터 workspace 대역으로 정렬한다.
- 현재 작업 동기화:
- 활성 로드맵 포인터는
Agent-Ops MCP Control PlanePhase와 이 Milestone을 가리키며, activeagent-task/작업 파일은 없다. - Core baseline source는
services/core/internal/config/config.go,services/core/Makefile,services/core/docker-compose.yml,services/core/Dockerfile,services/core/README.md에 흩어져 있고, internal compatibility port는8080, compose host publish 기본값은18010이다. - Client preview baseline source는
agent-test/local/mobile-smoke.md이며, human web preview는 code-server/proxy/<port>/와 기본13010+, legacy/ad hoc8081호환을 함께 사용한다. - Workspace mock entry는
apps/client/lib/src/features/workspaces/domain/project_workspace.dart에서 code-serverlocalhost:8080URL을 사용한다. - Proto-socket client endpoint는
apps/client/lib/src/integrations/proto_socket/proto_socket_endpoint_config.dart의PROTO_SOCKET_*env에서 오며, host가 없으면 비활성화된다. - external provider/model endpoint 값은 tracked roadmap에 실제 token/password를 기록하지 않고 env 이름과 책임 경계만 동기화한다.
- 활성 로드맵 포인터는
- 선행 작업: workspace 공통 포트 inventory 정리
- 후속 작업: compose/env/test smoke 갱신과 drift 방지
- 확인 필요: 없음