# Workspace Environments 이 문서는 하위 프로젝트의 local/test/runtime 환경을 workspace 관점에서 요약한다. 상세 구현과 최종 source of truth는 각 프로젝트의 `agent-test//`, compose/env example, roadmap milestone에 둔다. ## 공통 기준 - tracked 문서에는 raw secret, token, password, private key, 계정 id를 쓰지 않는다. - ignored local file은 inventory 근거로만 보고, 값 자체를 복사하지 않는다. - 원격 runtime 포트 변경은 compose/env/smoke/client config 영향 확인 뒤 프로젝트별 마일스톤에서 처리한다. - host publish 표준화와 container 내부 listen 포트 변경은 별도 문제로 다룬다. ## 프로젝트별 환경 요약 | 프로젝트 | Local / Test 환경 | Remote / Runtime 환경 | 포트/환경 메모 | |---|---|---|---| | `alt` | Go workspace, Flutter client, local PostgreSQL/Redis compose, KIS smoke는 private testing env 의존 | `ssh toki@toki-labs.com`, `~/agent-work/alt` | API/worker 후보 `18030/18031`, frontend `13030`, optional wire `19030`, DB/cache `15430/16330`. KIS credential은 tracked 문서에 쓰지 않는다. | | `iop` | Docker compose 기반 Control Plane, Client UI, PostgreSQL, Redis, Prometheus, Grafana. Edge는 별도 runtime service로 붙일 수 있다. | `ssh toki@toki-labs.com`, `/Users/toki/agent-work/iop-dev`; dev-corp compose 후보 `ssh fe@172.24.63.178`, `/Users/fe/agent-work/iop-dev-corp` | local/test frontend `13000`, backend `18000`, artifact/model `18080/18081`, wire `19080/19081/19090`, Edge metrics `19092`, CP metrics `19100`, Prometheus/Grafana `19110/19120`, DB/cache `15400/16300`. dev frontend `13001`, backend `18001`, wire `19001/19002/19003`, DB/cache `15401/16301`, artifact/model `18082/18083`, Edge/CP metrics `19101/19103`, Prometheus/Grafana `19111/19121`, subnet `10.89.1.0/24`. dev-corp frontend `13002`, backend `18002`, wire `19004/19005/19006`, DB/cache `15402/16302`, artifact/model `18085/18086`, Edge/CP metrics `19102/19104`, Prometheus/Grafana `19112/19122`, subnet `10.89.2.0/24`. | | `nexo` | Mattermost core, webapp, push-proxy, Flutter test host, upstream dev compose | `ssh toki@toki-labs.com`, repo `~/agent-work/nexo`, compose `~/docker/agent-service/nexo/compose` | core `18065`, push-proxy `18066`은 compatibility baseline. upstream dev compose 포트는 nexo-owned runtime 포트와 분리한다. | | `nomadcode` | Core local default `8080`, Docker compose DB/Redis, Flutter client, code-server preview | Android runner `$HOME/agent-work/nomadcode`, sibling `../nexo/packages/messaging_flutter`, `../proto-socket/dart` | frontend 후보 `13010`, backend 후보 `18010`, DB/cache `15410/16310`. Plane, Mattermost, Jira, IOP Edge endpoint는 secret 없이 책임 경계만 기록한다. | | `gito` | Core local default `8080`, Go control plane/worker/shell, Flutter client, optional Postgres/Redis/proto-socket runner smoke. 기본 local 테스트 evidence는 standard remote runner 기준 | `ssh toki@toki-labs.com`, `$HOME/agent-work/gito` | frontend `13060`, backend/Core HTTP `18060`, optional wire/agent transport `19060`, DB/cache `15460/16360`. Core 내부 listen `8080`은 유지하되 shared runner 검증은 gito-owned host slot을 사용한다. | | `rara` | local config는 Control Plane `18080`, RAG API `18081`, Go Worker `18082`, Python Executor `19090`, PostgreSQL `5432` compatibility 값 사용 | 기본 검증은 `ssh toki@toki-labs.com`, 목표 checkout `/Users/toki/agent-work/rara-dev`; 2026-07-18 기준 checkout provisioning 필요 | remote dev는 Control Plane `18070`, RAG API `18071`, Go Worker `18072`, Python Executor `19070`, PostgreSQL `15470`, compose subnet 후보 `10.89.7.0/24` 사용. local compatibility 포트는 shared runner에 publish하지 않는다. | | `oto` | 기본 local 테스트 evidence는 remote runner 기준. OTO Core product fallback `127.0.0.1:8080`, runner typed-command tests, Flutter client는 compatibility 경로로 유지 | `ssh toki@toki-labs.com`, `/Users/toki/agent-work/oto` | frontend `13020`, backend/Core HTTP `18020`. `make core-run`은 `OTO_CORE_ADDR=0.0.0.0:18020`, `make client-run-web`은 preview `13020`을 사용한다. `OTO_RUNNER_RELEASE_BASE_URL`은 HTTPS release URL 기준을 유지하되 private host 원문은 기록하지 않는다. | | `appsok` | 기본 local 테스트 evidence는 standard remote Mac runner 기준. 현재 checkout의 `git diff --check`와 문법 수준 확인은 preflight로만 사용 | `ssh toki@toki-labs.com`, `$HOME/docker/services/code-server/data/volume/workspace/appsok` | Flutter/macOS build는 public port 없음. Flutter web preview가 필요하면 frontend `13050`을 사용한다. Jenkins/ADB/Xcode/Keychain credential 원문은 tracked 문서에 쓰지 않는다. | | `proto-socket` | same-language/cross-language test matrix, examples, per-language runners | Dart web/Chrome fallback: `ssh toki@toki-labs.com`, `~/agent-work/proto-socket-dart-web` | runtime 포트 없음. fixed crosstest local port `29090-29899`는 workspace 표준 예외. 예제 `9090`은 제품 host publish 포트로 보지 않는다. | | `agent-shell` | Dart/Flutter package test | 없음 | package 자체 포트 없음. | | `dart-app-core` | Dart library tests | 없음 | library 자체 포트 없음. | | `agentic-framework` | agent-ops framework/docs | 없음 | 서버/runtime 포트 없음. 포트 마일스톤 대상에서 제외한다. | ## 변경 전 확인 항목 - compose host publish 변경인지, container 내부 listen 변경인지 먼저 구분한다. - remote runner, code-server proxy, Android/Detox/Flutter Web smoke가 같은 포트를 참조하는지 확인한다. - README, `.env.example`, `agent-test//*`, smoke command, client config가 서로 다른 기본값을 말하지 않도록 맞춘다. - DB/Redis host publish 변경은 로컬 도구와 외부 접속 필요 여부를 확인한 뒤 진행한다. - field runtime에서 이미 쓰는 `18080`, `18081`, `19080`, `19090`, `18065`, `18066`은 먼저 compatibility baseline으로 취급한다. - 프로젝트별 원격 테스트 환경과 포트 충돌 관리는 `.workspace-ops/docs/remote-test-environments.md`를 함께 확인한다.