10 KiB
10 KiB
Workspace Remote Test Environments
이 문서는 workspace 하위 프로젝트의 원격 테스트 환경, 원격 checkout, 공개/host publish 포트, 충돌 관리 기준을 한곳에서 보기 위한 운영 인벤토리다.
상세 실행 명령과 최종 테스트 기준은 각 프로젝트의 agent-test/<env>/, compose/env example, project rule을 따른다. 이 문서는 raw secret, token, password, private key, 계정 password, private endpoint 원문을 기록하지 않는다.
관리 기준
- 현재 Codex/container local 환경에서는 Docker-in-Docker, macOS, Android/ADB, browser/device runtime evidence를 기본 검증 환경으로 보지 않는다.
- 원격 runner를 사용할 때는 원격 checkout branch/HEAD와 local 변경 동기화 여부를 먼저 확인한다. 동기화되지 않은 원격 실행은 현재 변경 검증으로 보지 않는다.
- 포트는
project-owned test slot과shared field/runtime baseline을 분리해 기록한다. - 컨테이너 내부 listen 포트는 제품/프레임워크 기본값을 우선 유지하고, workspace 표준화 대상은 host publish, preview, remote runner 문서, smoke command다.
- ignored local file은 inventory 근거로만 보고, 값 자체를 중앙 tracked 문서로 복사하지 않는다.
원격 테스트 환경 표
| 프로젝트 | 원격 테스트 환경 | 원격 checkout / 기준 위치 | 원격 검증 용도 | Project-owned test slots | Shared / field baseline | Secret / private input |
|---|---|---|---|---|---|---|
appsok |
ssh toki@toki-labs.com standard remote Mac runner |
$HOME/docker/services/code-server/data/volume/workspace/appsok |
Flutter macOS, Xcode, Keychain, ADB, Jenkins 연동 검증 | Flutter web preview 13050 when needed |
일반 unit/analyze/macOS build는 public port 없음 | Jenkins credential, SSH password, signing/notary credential은 remote Keychain 또는 사용자 제공 값만 사용 |
alt |
필요 시 ssh toki@toki-labs.com |
~/agent-work/alt |
Docker-backed PostgreSQL/Redis, platform/device/browser runtime, 외부 provider/live smoke | frontend 13030, API/worker 18030/18031, optional wire/evidence relay 19030, DB/cache 15430/16330 |
field reserve 13000-13099, artifact/model 18080/18081, wire 19080/19090, metrics 19092, specialized 19190는 shared baseline으로만 취급 |
KIS/live provider credential은 private rule 또는 secret-only profile에서만 사용 |
iop |
ssh toki@toki-labs.com, code-server/remote runner |
/Users/toki/agent-work/iop-dev |
Control Plane, Client UI, PostgreSQL, Redis, Prometheus, Grafana compose group; Edge, Node, field/bootstrap 검증 | local/test: frontend 13000, CP HTTP 18000, DB/cache 15400/16300, Prometheus/Grafana 19110/19120; dev: frontend 13001, CP HTTP 18001, DB/cache 15401/16301, Prometheus/Grafana 19111/19121, subnet 10.89.1.0/24; dev-corp compose: frontend 13002, CP HTTP 18002, DB/cache 15402/16302, Prometheus/Grafana 19112/19122, subnet 10.89.2.0/24 |
local/test field baseline 18080/18081, 19080/19081/19090, Edge/CP metrics 19092/19100; dev wire/model candidates 19001/19002/19003, 18082/18083, Edge/CP metrics 19101/19103; dev-corp compose wire 19004/19005/19006, Edge/CP metrics 19102/19104 |
Edge token 등 secret 원문은 원격 환경에서 주입하고 tracked 문서에 기록하지 않음 |
nexo |
ssh toki@toki-labs.com |
repo ~/agent-work/nexo, compose ~/docker/agent-service/nexo/compose |
Mattermost core/push-proxy runtime, Flutter/Android, Detox, FCM/device evidence | core 18065, push-proxy 18066 |
Android Detox Metro는 8081 점유 시 8088; Flutter Web preview는 ignored web-smoke.env 값 기준 |
Mattermost/FCM/test account 값은 agent-test/local/secrets.md 같은 ignored profile에서만 확인 |
nomadcode |
ssh toki@toki-labs.com standard remote runner |
local $HOME/agent-work/nomadcode; dev $HOME/agent-work/nomadcode-dev |
Core, Flutter client, Android SDK runner, Mattermost/FCM 시나리오, Gito branch webhook consumer | local preview 13010, Core host publish 18010:8080, DB/cache 후보 15410/16310; dev preview 13011, Core host publish 18011:8080, DB/cache 후보 15411/16311 |
sibling ../nexo/packages/messaging_flutter, ../proto-socket/dart 경로 전제. IOP dev model endpoint http://toki-labs.com:18083/v1은 dependency baseline이며 nomadcode-owned port가 아님 |
Mattermost/FCM/signature/Gito webhook secret 등 private input은 ignored local profile 기준 |
gito |
ssh toki@toki-labs.com standard remote runner |
local $HOME/docker/services/code-server/data/volume/workspace/gito; dev $HOME/agent-work/gito-dev |
Core Go, Flutter client, provider webhook/proto-socket smoke, agent-shell runner baseline, NomadCode delivery smoke | local preview 13060, Core host publish/direct HTTP 18060, optional proto-socket/agent transport 19060, DB/cache 후보 15460/16360; dev preview 13061, Core HTTP 18061, optional transport 19061, DB/cache 후보 15461/16361 |
Core internal/default 8080은 compatibility 경로. NomadCode webhook target은 local http://127.0.0.1:18010/api/integrations/gito/webhook, dev http://127.0.0.1:18011/api/integrations/gito/webhook |
Provider webhook secret, credential_ref, runner credential, Gito delivery signing secret은 ignored local profile 기준 |
rara |
ssh toki@toki-labs.com standard remote Mac runner |
목표 checkout /Users/toki/agent-work/rara-dev; 2026-07-18 기준 provisioning 필요 |
Go/Python source test와 build, PostgreSQL-backed Control Plane/RAG/Worker readiness, Python executor gRPC smoke | Control Plane 18070, RAG API 18071, Go Worker 18072, Python Executor gRPC 19070, PostgreSQL host publish 15470, compose subnet 후보 10.89.7.0/24; 13070, 16370, 19170-19172는 RARA dev reserve |
제품 local compatibility 18080-18082, Python 기본 19090, PostgreSQL 기본 5432는 IOP shared baseline과 충돌하므로 shared runner에 그대로 publish하지 않음 |
Database/integration/model credential은 원격에서 주입하고 tracked 문서와 shell 출력에 기록하지 않음 |
proto-socket |
기본은 local matrix; Dart.web Chrome 없을 때 remote fallback | toki@toki-labs.com, ~/agent-work/proto-socket-dart-web |
Dart.web/WSS Chrome fallback, SPKI wrapper, cross-language matrix 보조 | crosstest runner fixed range 29090-29899 |
runtime service port 없음; 예제 9090은 제품/테스트 슬롯 아님 |
runner 입력 secret 없음. SSH 인증은 local 계정/agent 환경 책임 |
oto |
ssh toki@toki-labs.com standard remote runner |
/Users/toki/agent-work/oto |
OTO runner, Core HTTP, Flutter client/web preview, bootstrap/release validation | frontend/web preview 13020, Core HTTP host publish 18020 |
product fallback 127.0.0.1:8080은 compatibility 경로. OTO-owned wire/agent transport port는 아직 확정하지 않음 |
OTO_RUNNER_RELEASE_BASE_URL, enrollment token, private release host 원문은 tracked 문서에 기록하지 않음 |
agent-shell |
없음 | 없음 | Dart/Flutter package test | 없음 | package 자체 포트 없음. host 앱이 환경 소유 | 없음 |
dart-app-core |
없음 | 없음 | Dart library tests | 없음 | library 자체 포트 없음 | 없음 |
agentic-framework |
없음 | 없음 | agent-ops framework/docs | 없음 | 서버/runtime 포트 없음 | 없음 |
포트 충돌 관리
| 항목 | 상태 | 조치 |
|---|---|---|
appsok preview vs nomadcode preview |
기존 appsok 문서가 13010+를 언급해 nomadcode 13010과 충돌 가능 |
appsok project-owned preview slot을 13050으로 고정한다. |
alt field reserve 13000-13099 vs 프로젝트별 preview slots |
field/shared reserve가 전체 frontend 대역을 넓게 표현함 | alt 자체 preview는 13030으로 보고, field reserve는 shared baseline으로 분리한다. |
iop shared field ports |
18080/18081/19080/19090/19092가 다른 프로젝트 smoke에서도 참조됨 |
IOP-owned runtime baseline으로 유지하되 다른 프로젝트의 project-owned slot으로 재사용하지 않는다. |
iop dev profile |
local/test stack이 원격 host에서 이미 13000, 18000, 19080, 19081, 15400, 16300, 19110, 19120을 점유할 수 있음 |
dev profile은 .env.dev.example 기준 13001, 18001, 19001, 19002, 19003, 15401, 16301, 19101, 19103, 19111, 19121을 사용하고 compose project/network를 분리한다. |
oto remote local profile |
제품 fallback 127.0.0.1:8080과 workspace backend slot 18020이 함께 존재함 |
테스트/원격 evidence는 18020을 기준으로 하고 8080은 product compatibility fallback으로만 문서화한다. |
nexo 18065/18066 |
workspace backend 후보 18040 계열과 다름 |
Mattermost compatibility baseline으로 유지한다. 신규 nexo-owned backend가 필요할 때만 18040 계열을 검토한다. |
nomadcode local/dev split |
local profile과 dev profile을 같은 원격 host에서 분리해야 함 | local은 13010/18010/15410/16310, dev는 13011/18011/15411/16311을 사용한다. Gito dev subscription target은 http://127.0.0.1:18011/api/integrations/gito/webhook이다. |
gito local/dev split |
Gito provider intake와 NomadCode consumer target을 같은 원격 host에서 분리해야 함 | local은 13060/18060/19060/15460/16360, dev는 13061/18061/19061/15461/16361을 사용한다. dev Gito는 NomadCode dev 18011로 delivery한다. |
rara local compatibility vs IOP shared field |
RARA config 기본 18080-18082, Python 기본 19090이 IOP artifact/model/wire baseline과 겹침 |
RARA 기본 원격 dev에서는 18070-18072, 19070, PostgreSQL 15470을 override하고 local 기본값을 shared runner에 publish하지 않는다. |
proto-socket 29090-29899 |
일반 runtime port가 아니라 test runner fixed range | workspace 예외 대역으로 유지하고 제품 host publish 표준화 대상에서 제외한다. |
변경 전 체크리스트
- 원격 checkout이 현재 작업과 동기화되어 있는지 확인한다.
- compose host publish 변경인지, container 내부 listen 변경인지 구분한다.
- remote runner, code-server proxy, Android/Detox/Flutter Web smoke가 같은 포트를 참조하는지 확인한다.
- README,
.env.example,agent-test/<env>/*, smoke command, client config가 서로 다른 기본값을 말하지 않도록 맞춘다. - field/runtime 포트는 문서 정리만으로 바꾸지 않는다. 변경 전 smoke, client config, remote runner path를 같이 확인한다.