- Update PHASE.md with operator actions milestone - Add control-plane-operator-actions milestone details - Add SDD documentation for control-plane-product-surface - Add agent-task for control-plane-operator-actions (G06, G07) |
||
|---|---|---|
| .antigravitycli | ||
| .claude | ||
| .gemini | ||
| .vscode | ||
| agent-ops | ||
| agent-roadmap | ||
| agent-task | ||
| agent-test/local | ||
| apps | ||
| packages/flutter/oto_console | ||
| proto/oto | ||
| services/core | ||
| .aiexclude | ||
| .clineignore | ||
| .clinerules | ||
| .codex | ||
| .cursorignore | ||
| .cursorrules | ||
| .geminiignore | ||
| .gitignore | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| GEMINI.md | ||
| Makefile | ||
| opencode.json | ||
| README.md | ||
OTO Monorepo
YAML 기반 CI/CD 파이프라인 자동화 도구 OTO의 Monorepo 프로젝트입니다. 독립 Control Plane 분리 마이그레이션을 통해 Runner, Client, Core Service로 컴포넌트를 분리하여 관리합니다.
프로젝트 구조
/
├── apps/
│ ├── runner/ # Dart CLI 기반 OTO Runner (파이프라인 실행 엔진)
│ └── client/ # Flutter 기반 OTO Console Client (독립 제어 콘솔)
├── services/
│ └── core/ # Go 기반 OTO Control Plane Server (Runner Registry & Bootstrap)
└── Makefile # Monorepo 작업을 위한 루트 진입점 Helper
시작하기
루트 Makefile을 통해 모든 서브프로젝트의 의존성 설치, 분석, 테스트 작업을 통합 관리할 수 있습니다.
Workspace 포트와 환경 기준
OTO는 독립 Control Plane 제품 경로를 기준으로 포트와 환경값을 기록합니다.
iop Edge 또는 wire 포트는 OTO workspace 포트 표준의 source of truth가 아닙니다.
기본 local 테스트 evidence는 원격 runner ssh toki@toki-labs.com의 /Users/toki/agent-work/oto checkout 기준으로 수집합니다.
| 표면 | 표준 후보 | 호환 기준 |
|---|---|---|
| OTO Core HTTP | backend host publish 18020 |
로컬 실행 기본값 OTO_CORE_ADDR 미설정 시 127.0.0.1:8080은 기존 개발 호환 경로로 유지 |
| Flutter client/web preview | frontend preview 13020 |
preview 포트는 UI dev server 포트이며, 서버 연결 URL은 OTO_SERVER_HTTP_URL로 별도 지정 |
| runner bootstrap/release | OTO_RUNNER_RELEASE_BASE_URL |
release base URL은 https://만 기록하고, token/credential/private endpoint 원문은 tracked 문서에 남기지 않음 |
Core를 workspace publish 포트로 띄울 때는 OTO_CORE_ADDR=0.0.0.0:18020처럼 listen 주소를 명시합니다.
Flutter web preview는 cd apps/client && flutter run -d chrome --web-port=13020을 기준 후보로 둡니다.
Makefile 기준 실행은 make core-run과 make client-run-web OTO_SERVER_HTTP_URL=http://toki-labs.com:18020을 사용합니다.
bootstrap command와 artifact URL 문서는 public validation 기준과 source of truth만 남기고, enrollment token이나 private release host는 런타임 환경에서만 주입합니다.
Runner bootstrap asset matrix
Control Plane bootstrap은 OTO_RUNNER_RELEASE_BASE_URL 아래의 OS/arch별 oto binary asset을 내려받는 것을 기준으로 합니다.
Linux와 macOS는 tar.gz, Windows는 zip archive를 사용합니다.
| OS | Arch | Release asset |
|---|---|---|
| Linux | x64 | oto-linux-x64.tar.gz |
| Linux | arm64 | oto-linux-arm64.tar.gz |
| macOS | x64 | oto-macos-x64.tar.gz |
| macOS | arm64 | oto-macos-arm64.tar.gz |
| Windows | x64 | oto-windows-x64.zip |
| Windows | arm64 | oto-windows-arm64.zip |
Bootstrap command 예시는 --server-url, --agent-id, --enrollment-token, --release-base-url 인자를 기준으로 하며, --release-base-url은 https:// URL만 허용합니다.
Tracked 문서와 테스트 규칙에는 enrollment token, credential, private release host 원문을 기록하지 않습니다.
의존성 설치 (Setup)
각 앱/서비스의 패키지 및 모듈 의존성을 설치합니다.
make setup
코드 분석 및 린트 (Analyze)
서브프로젝트별 정적 분석을 수행합니다.
make runner-analyze
make client-analyze
테스트 실행 (Test)
개별 서브프로젝트 테스트
make runner-test
make client-test
make core-test
통합 테스트 실행 (전체 서브프로젝트)
make test
서브프로젝트 상세 안내
각 서브프로젝트의 내부 아키텍처 및 상세 사용 방법은 하위 경로의 README 문서를 참조하세요:
- OTO Runner README
- OTO Client README
- OTO Core Server: services/core/