iop/HANDOFF.md
toki fe6be48936 docs(roadmap): provider protocol 계획을 구체화한다
다중 cloud provider의 호출 경계와 사용자별 credential 관리 책임을 구현 전에 명확히 해 후속 작업의 계약·보안 기준을 일관되게 적용한다.
2026-07-31 21:25:38 +09:00

19 KiB
Raw Blame History

Handoff: Chronos Standalone Agent Runtime과 Node Domain-Agent Gateway

  • 작성일: 2026-07-31
  • 현재 타겟: 새 Chronos 프로젝트의 최종 아키텍처 확정안 검토와 이후 Milestone 설계 준비
  • 다음 세션 첫 진입점: 이 문서
  • 상태: 프로젝트명·저장소 경계·gateway 방향 확정, 새 저장소·구현·이전·로드맵 생성 미착수
  • 기록 위치: Chronos 저장소가 아직 없으므로 이 파일만 iop 루트에 임시 handoff로 둔다. Chronos 초기화 후 canonical handoff와 Roadmap은 Chronos로 옮긴다.

사용자 확정 사항

  1. 현재 /config/workspace/iop-s0IOP Agent CLI Runtime Milestone은 기존 범위대로 끝까지 완료한다. 지금 구조를 중간에 재편하거나 새 원격 gateway 범위를 끌어오지 않는다.
  2. agentic-framework는 문서·셸 중심의 가벼운 공통 agent-ops 프레임워크로 그대로 유지한다. 어디든 설치 가능한 현재 성격을 보존하고 application runtime을 추가하지 않는다.
  3. 새 독립 프로젝트의 이름은 Chronos로 확정한다. 저장소·CLI·daemon의 기본 이름은 각각 chronos, chronos, chronosd로 사용한다.
  4. 아래의 단계 2 이후 작업은 새 Chronos 프로젝트를 장기 기준 저장소이자 Roadmap/Milestone source of truth로 삼는다.
  5. 다음 세션은 우선 Chronos의 최종 아키텍처와 책임 경계만 확정한다. 이 handoff에서는 새 저장소, Milestone, 구현 plan, 코드 이전을 생성하지 않는다.
  6. 확정안이 정리된 뒤 Chronos 저장소에 Roadmap/Milestone을 만들고, IOP·OTO 코드 변경은 해당 Milestone이 가리키는 cross-repo 구현 작업으로 관리한다.

프로젝트 이름과 상징

프로젝트명은 Chronos로 확정한다.

사용자가 기존 skill/runtime에 일을 맡겨 실제로 얻은 가장 큰 가치는 자신의 시간이 크게 늘어난 것이다. Chronos는 단순 scheduler 명칭이 아니라 다음 경험을 상징한다.

일의 시간을 Chronos에게 맡기고, 내 시간을 되찾는다.

Chronos가 작업을 Plan → Work → Review → Recovery 순서로 계속 진행하는 동안 사용자는 작업을 상시 감시하지 않는다. 이름은 체계적으로 흐르는 작업 시간과 사용자에게 반환되는 시간을 함께 뜻한다.

  • 영문 문구: Chronos — Take your time back.
  • 한국어 문구: 일은 맡기고, 시간은 되찾다.
  • 저장소 기본명: chronos
  • CLI 기본명: chronos
  • daemon 기본명: chronosd
  • runtime package/product family: chronos-runtime
  • Node bridge kind 후보: chronos-agent

동명의 scheduler·workflow·AI 제품이 존재한다는 점은 인지하고 선택했다. 내부/초기 프로젝트명은 Chronos로 유지하고, 공개 배포 시점에만 조직 prefix, package namespace, domain·상표 충돌을 별도 검토한다. 다음 세션이 충돌만을 이유로 이름을 다시 열지 않는다.

최종 방향

현재 /config/workspace/iop-s0에서 완성할 iop-agent 구현을 선행 source로 삼아, 완료 후 standalone daemon/runtime의 제품 소유권을 새 Chronos 프로젝트로 이전한다. Chronos는 Node에 내장하지 않는다. 로컬 사용에서 Node는 필수가 아니다. IOP 관리 환경에서만 Node가 선택적 domain-agent gateway가 되어 기존 outbound Edge 연결과 로컬 Chronos 연결을 중계한다.

Local standalone

CLI / Skill / Flutter / Unity
              ↕ versioned local control
Chronos daemon (`chronosd`)
              ↕
workflow runtime과 durable state

IOP managed

Control Plane → Edge → 기존 Node outbound session
                         ↕
                 Node agent_bridge gateway
                         ↕ local typed connection
                  동일한 Chronos daemon

책임은 다음과 같이 고정한다.

소유자 책임
agentic-framework 어디든 설치 가능한 agent-ops 공통 규칙·skill·sync framework. Chronos runtime을 포함하지 않음
Chronos standalone runtime core, CLI/daemon, local control, workflow adapter, durable state/replay, scoped execution, Roadmap lifecycle 조합
IOP Node 로컬 agent discovery/registration, capability·health, admission, request correlation, bounded relay, timeout/backpressure, Edge 연결 중계
IOP Edge/Control Plane 원격 principal authorization, Node/agent routing, command/event summary, audit와 운영 표면
OTO pipeline/job/artifact/log 의미와 실행 상태의 원본
Flutter/Unity runtime client. CLI를 감싸지 않고 versioned local proto-socket 계열 계약을 직접 사용

Node는 workflow artifact, Plan/Review 해석, project state, OTO job state의 원본을 소유하지 않는다. Node 또는 Edge 연결이 끊겨도 이미 수락된 standalone 작업은 계속되어야 한다.

Provider 경계

외부에서는 하나의 provider/resource 계열로 발견할 수 있지만, 기존 model/CLI provider와 같은 실행 의미로 합치지 않는다.

agent_bridge provider framework
  ├─ kind: chronos-agent
  └─ kind: oto-runner

공유 가능한 것은 다음 lifecycle뿐이다.

  • versioned registration과 stable instance identity
  • capability catalog와 availability/health
  • command correlation과 idempotency
  • ordered event, result, cancel/stop
  • disconnect/reconnect와 snapshot/replay
  • capacity, timeout, bounded queue와 audit metadata

Chronos의 Plan/Review/Milestone 상태와 OTO의 pipeline/job/artifact payload는 kind별 typed driver가 소유한다. 자유형 terminal output, model prompt/delta, HTTP ProviderTunnel body로 변환하지 않는다.

Node의 기존 terminal/CLI 기능은 설치·bootstrap·업데이트·비상 진단 후보일 뿐 정상 제어면이 아니다. chronosd를 terminal에서 실행하고 stdout을 파싱하는 구조는 singleton ownership, command correlation, cancel/resume, event ordering과 crash recovery를 중복 구현하게 하므로 폐기한다.

제품 사용 표면

같은 runtime을 다음 범위로 독립 사용 가능해야 한다.

  • Plan/Review cycle만 실행
  • 하나의 Milestone 범위만 실행
  • 여러 Milestone을 포함한 전체 Roadmap lifecycle 실행
  • 로컬 CLI에서 수동 시작·상태·중단·재개
  • agent용 Skill이 CLI 또는 안정된 client interface를 통해 같은 기능 사용
  • Flutter/Unity가 local control 계약으로 상태·event·control 사용
  • IOP 관리 환경에서 Node gateway를 통한 선택적 원격 상태·제어

Plan/Review cycle의 상태 의미와 artifact 규칙은 공통 core가 소유한다. 실행 위치에 따라 adapter를 분리한다.

  • 로컬 workflow: plan, work, review를 동일 사용자 장비의 standalone runtime이 수행한다.
  • remote user-agent workflow: plan, work, review 요청과 결과가 모두 원격 사용자 agent를 통과한다. 공통 cycle을 사용하지만 transport, executor, retry, attention/승인 경로는 별도 adapter다.

따라서 실행 지점이 같다는 이유로 두 workflow를 하나의 pipeline 구현으로 강제하지 않는다. 공통 core는 cycle state와 transition을 제공하고, local/remote adapter가 각 수행 방식을 제공한다.

OTO에서 흡수할 것과 버릴 것

OTO에서 제품화할 핵심은 agent가 outbound 장기 session으로 등록 → capability 보고 → server push 수신 → heartbeat/report하는 연결 패턴이다.

흡수한다.

  • session abstraction
  • protocol/capability version registration
  • heartbeat와 disconnect 처리
  • duplicate connection 교체
  • server-push command와 typed report
  • execution ownership 검사

그대로 가져오지 않는다.

  • legacy OTO→IOP Edge direct registration code
  • OTO domain proto를 Chronos에도 공통 적용
  • 빈 값 여부만 확인하는 enrollment token
  • TLS, reconnect/backoff, 실제 cancel 집행이 빠진 현재 한계
  • Node가 OTO scheduler나 artifact/log store가 되는 구조

OTO와 Chronos는 같은 agent_bridge framework 아래 서로 다른 driver/instance로 둔다.

로컬 연결과 보안 경계

현재 iop-agent local control에서 검증 중인 Unix socket 0600, owner-only state root 0700, 동일 effective UID peer 경계를 Chronos 이전 후에도 보존한다. 이 경계를 원격 통합을 위해 느슨하게 만들지 않는다.

초기 후보는 두 단계다.

  1. 같은 사용자 MVP: Node companion/connector가 Chronos의 owner-only local socket을 사용한다.
  2. system Node 또는 다중 사용자 제품형: 사용자 agent가 Node가 소유한 local gateway로 outbound 등록하고 session을 유지한다. Unix domain socket/Windows named pipe가 목표이며, 공통 transport가 준비되지 않은 초기 구현은 127.0.0.1 only + ephemeral port + short-lived credential을 사용할 수 있다.

어느 경우든 사용자 장비에 외부 inbound port를 추가하지 않는다. 원격 traffic은 기존 Node→Edge outbound session 하나로 multiplex한다.

production remote mutation 전 필수 gate:

  • EdgeNode transport authentication/confidentiality
  • remote principal → local owner/project/workspace scope authorization
  • operation allowlist와 audit
  • stable command_id를 이용한 duplicate convergence
  • ordered event relay와 cursor replay
  • replay 범위를 벗어나면 fresh snapshot으로 복구
  • node online, bridge connected, agent available, project running 상태 구분
  • 원격 UI start/focus와 임의 shell/path/protobuf forwarding 기본 금지

현재 EdgeNode transport에는 mTLS helper가 실제 transport에 연결되지 않았으므로, 이 gate 전에는 production project.start/stop/resume을 열지 않는다.

보류·분리 항목

  • local LLM 감시/advisor는 현시점 over-spec으로 보류한다. 결정적 runtime monitoring에는 LLM을 넣지 않는다.
  • remote terminal은 별도 기능이다. Node agent gateway와 합치지 않는다.
  • Flutter/Unity는 CLI 제어가 아니라 proto-socket 계열 계약을 사용한다.
  • remote coding 유지보수는 별도 Desktop Agent를 만들지 않고 향후 Chronos의 remote user-agent workflow adapter로 흡수한다.
  • Node가 Chronos process, workflow, durable state를 기본 소유하거나 Edge reconnect 시 종료시키지 않는다.
  • direct specialized agent→Edge protocol은 현재 기본 경로로 부활시키지 않는다.
  • Node와 Chronos의 겹쳐 보이는 코드를 성급히 공통 package로 추출하지 않는다. shared contract/SDK만 먼저 고정하고 실제로 host-neutral한 구현 경계가 증명된 뒤 추출한다.

단계 기준

이전 대화에서 사용한 번호는 다음을 뜻한다.

  1. /config/workspace/iop-s0의 현재 IOP Agent CLI Runtime 완료
  2. Agent Runtime Ownership Extraction
    • 완료된 standalone runtime 소유권을 새 Chronos 프로젝트로 이전
    • 제품·CLI·daemon 명칭을 chronos, chronos, chronosd로 정리
    • local CLI/socket/offline 사용성 보존
    • versioned control contract/SDK 경계 고정
  3. Scoped Agent Task Execution Surface
    • Plan/Review, Milestone, Roadmap 범위별 독립 실행과 종료 경계
  4. Node External Agent Provider Foundation
    • agent_bridge registration, discovery, health, typed command/event/replay
  5. Edge Managed Agent Routing & Security
    • EdgeNode remote control wire, authorization, audit, reconnect
  6. Roadmap Lifecycle Orchestration
    • 3번 scope를 조합하되 작은 범위 사용성을 보존
  7. OTO Provider Adapter
  8. Remote User-Agent Workflow Bridge

2번 이후 Roadmap/Milestone은 새 Chronos 저장소에서 관리한다. 4, 5, 7번은 구현 파일이 IOP/OTO에 있더라도 Chronos Milestone에서 cross-repo 대상과 검증을 명시한다.

3번과 6번의 local lifecycle 설계는 Node gateway와 독립적으로 진행할 수 있다. 원격 mutation만 5번 보안 gate를 선행한다.

다음 세션 실행 순서

  1. 이 문서와 아래 필수 탐색 경로만 먼저 읽는다.
  2. agentic-framework는 변경하지 않고 경량 공통 프레임워크로 유지한다. Chronos runtime, Roadmap, project rule을 이 저장소에 추가하지 않는다.
  3. 새 Chronos 저장소의 위치·module namespace·초기 scaffold는 최종 아키텍처 확정 뒤 결정한다. 아직 /config/workspace/chronos가 존재한다고 가정하지 않는다.
  4. 최종 아키텍처 문서에서 다음을 결정 가능한 형태로 고정한다.
    • component/process topology
    • repository와 package ownership
    • versioned contract source와 generated SDK 배포
    • local/managed deployment mode
    • identity/authorization
    • command/event/replay/cancel failure semantics
    • Node/Edge/agent disconnect 시 lifecycle
  5. 사용자에게 최종안을 확인받은 뒤 Chronos 저장소를 초기화하고 create-roadmap을 사용해 2번 이후 Milestone을 생성한다.
  6. Chronos 저장소가 생기면 이 문서의 확정 사항을 그 저장소의 canonical handoff/architecture 입력으로 이전한다. agentic-framework에는 Chronos runtime·Roadmap을 남기지 않는다.
  7. 현재 /config/workspace/iop-s0 checkout은 Milestone 완료 정합화 전까지 수정, 이동, 정리하지 않는다. 1번 완료 evidence가 생긴 뒤 extraction 범위를 산정한다.

필수 탐색 경로

유지할 agentic-framework 경계

  • README.md: 현재 저장소가 app runtime이 아닌 agent-ops 공통 원본이라고 명시한다. 저장소 역할 확장은 의식적인 결정이어야 한다.
  • agent-ops/rules/common/philosophy.md: runtime과 LLM 책임, Roadmap과 실행 상태 경계.
  • agent-ops/bin/sync.sh: push 대상은 agent-ops 공통 영역으로 제한된다. Chronos는 이 sync payload가 아니라 별도 소비 프로젝트다.

현재 iop-agent 구현과 계약

IOP Node/Edge gateway 후보

OTO 연결 패턴

보조 컨텍스트

  • 이전 Codex context ID: 019fb30f-08e6-7643-bc73-ef72a3199dcb
  • 위 context를 조회할 수 있으면 보조 근거로만 사용한다. 이 handoff의 사용자 확정 사항과 책임 경계를 우선한다.

작업 상태와 검증

  • 이번 세션에서 구현, migration, Milestone/SDD/contract 생성은 하지 않았다.
  • /config/workspace/agentic-frameworkmain, 기준 commit afd34c3이며 handoff 이동 후 clean 상태다.
  • /config/workspace/iopfeature/provider-usage-attribution-hot-path이며 이동 전 clean 상태였다. 현재 변경은 untracked HANDOFF.md 한 건뿐이다.
  • 새 Chronos 저장소는 아직 생성하지 않았다.
  • /config/workspace/iop-s0feature/iop-agent-cli-runtime, HEAD 4e420910이며 원격 브랜치와 동일한 clean 상태다. Milestone 완료 정합화 전에는 해당 checkout을 임의로 수정하거나 이동하지 않는다.
  • /config/workspace/otomaster, 기준 commit ae2b14f였고 확인 당시 clean 상태였다.
  • 문서 작업이므로 코드 테스트는 실행하지 않는다. git diff --check만 검증한다.