Temporal는 내결함성 오케스트레이션을 주고, 원격 Mac의 LLM·파일 도구는 OpenClaw화이트리스트·하트비트 한계·실패 요약 JSON을 워크플로가 읽을 수 있는 형태로 돌려받아야 합니다.

바로가기: Worker 신원 · 재시도 · 비밀 · 루프백/터널 · 하트비트 · 실패 요약 · 재현 절차

워크플로 비용·페이로드 설계는 LlamaIndex 워크플로 M4 원격 비용 매트릭스와 비교하고, 게이트 재시도 패턴은 JSON Schema·타임아웃·재시도 글을 함께 보세요. 다중 에이전트와 역할 분리는 CrewAI 게이트 라우팅 런북이 도움이 됩니다. 공개: 문서·요금·구매.

Worker 신원과 운영 경계

Task queue는 환경별 설정표에만 두고 파이프라인에 박지 마세요. Python 워커는 팀 규약의 빌드 식별자를 릴리스 태그와 맞춰 블루/그린 시 구버전 폴링을 끊습니다. OpenClaw 베어러는 런칭 단위로 회전하고, Temporal WorkflowId·RunId를 게이트 correlationId에 붙이면 감사와 히스토리가 한 줄로 이어집니다.

재시도 정책: 워크플로와 활동, 게이트웨이 서킷

Workflow는 결정적이어야 하므로 LLM·HTTP·쉘은 Activity로 내립니다. Activity 재시도는 Temporal에 맡기되 OpenClaw 서킷과 겹치면 이중 폭주가 납니다. 게이트 실행 퓨즈가 먼저 구조화 오류를 내고 Activity 데드라인은 그보다 깁니다. 재시도 차수는 서킷 쿨다운을 넘지 않게 캡을 걸고, 비가역 입력 오류는 ApplicationFailure로 비재시도 처리합니다.

비밀 주입: 저장소 밖, 프로세스 안, 로그 밖

클러스터 URL·네임스페이스 키는 워커 런타임에만 주입합니다(launchd 환경 변수, 컨테이너 시크릿 등). OpenClaw 베어러 파일은 저장소 밖 볼륨·chmod 600. 워크플로 입력에는 토큰 원문 대신 참조 핸들만 흐르게 하고 실패 봉투에도 비밀 필드는 넣지 않습니다.

게이트웨이 루프백과 SSH 터널 모드

루프백: 워커와 게이트가 같은 원격 Mac이면 127.0.0.1만 리슨하고 공인 인그레스를 열지 않습니다. 터널: 노트북·CI 검증 시 ssh -R …:127.0.0.1:9443처럼 로컬 게이트만 당깁니다. 공통 원칙은 도구 엔드포인트를 공인에 직접 노출하지 않는다는 것입니다.

활동 하트비트와 타임아웃 계단

긴 LLM·인덱싱 단계는 heartbeat_timeout을 켜야 장애 시 빨리 재배치됩니다. 하트비트 주기는 게이트 업스트림 대기보다 짧게, start_to_close_timeoutexecuteTimeoutMs보다 길게 잡아 먼저 봉투 오류를 받습니다. schedule_to_close_timeout은 큐 적체까지 포함한 상한입니다.

실패 요약을 워크플로로 회신하기

게이트 JSON(ok:false, stage, code, correlationId, hint)을 Activity 결과로 올리거나 ApplicationFailure details에 넣어 보상·티켓·승인 분기를 태웁니다. 스택 원문은 워커 로컬에만 두고 UI에는 요약만 노출합니다.

{ "ok": false, "correlationId": "wf_ledger_01hz_temporal_run", "stage": "gateway_execute", "code": "tool_not_allowlisted", "hint": "매니페스트에 도구를 추가하거나 이름 철자를 맞추세요." }

재현 절차

  1. 원격 Mac에 Python venv·Temporal SDK·핀된 OpenClaw를 설치하고 openclaw doctor --json 경고를 없앱니다.
  2. 게이트웨이를 루프백으로 띄우거나 SSH 역터널로 노트북에서 접속 경로를 고정합니다.
  3. JSON 도구 허용 목록에서 이름·스키마를 확정하고 워커 기동 시 목록 해시를 로그 한 줄로 남깁니다.
  4. Activity에 하트비트·시작~종료·스케줄 상한을 설정하고 HTTP 클라이언트 데드라인을 게이트 퓨즈보다 길게 맞춥니다.
  5. 정상·스키마 위반·서킷 열림 세 가지 스모크를 돌려 Temporal 히스토리와 게이트웨이 JSONL의 상관 ID가 일치하는지 확인합니다.
  6. 실패 봉투를 워크플로 입력/신호로 매핑하는 보상 경로를 코드 리뷰합니다.

기술 블로그··요금·구매는 로그인 없이 열립니다.

요약: Worker 큐·빌드 ID로 신원을 고정하고, Temporal 재시도와 게이트웨이 서킷을 계단으로 맞춘 뒤 루프백 또는 SSH 터널로만 도구를 노출하며, 하트비트 안에서 장시간 활동을 진행하고 실패는 JSON 봉투로 워크플로에 돌려보냅니다.