Skip to content

OpenClaw macOS Companion(메뉴 표시줄 + 게이트웨이 브로커) ​

macOS 앱은 OpenClaw의 메뉴바 동반입니다. 권한을 소유하고 있습니다. 게이트웨이를 로컬로 관리/연결하고(launchd 또는 수동으로) macOS를 노출합니다. 에이전트에 노드로서의 기능을 제공합니다.

기능 ​

  • 메뉴 표시줄에 기본 알림 및 상태가 표시됩니다.
  • TCC 프롬프트 소유(알림, 접근성, 화면 녹화, 마이크, 음성 인식, 자동화/AppleScript).
  • 게이트웨이(로컬 또는 원격)를 실행하거나 연결합니다.
  • macOS 전용 도구(캔버스, 카메라, 화면 녹화, system.run)를 노출합니다.
  • 원격 모드(launchd)에서 로컬 노드 호스트 서비스를 시작하고 로컬 모드에서 중지합니다.
  • 선택적으로 UI 자동화를 위해 PeekabooBridge를 호스팅합니다.
  • 요청 시 npm/pnpm을 통해 전역 CLI(openclaw)를 설치합니다(Gateway 런타임에는 권장되지 않음).

로컬 대 원격 모드 ​

  • 로컬(기본값): 앱이 실행 중인 로컬 게이트웨이(있는 경우)에 연결됩니다. 그렇지 않으면 openclaw gateway install를 통해 시작된 서비스를 활성화합니다.
  • 원격: 앱이 SSH/Tailscale을 통해 게이트웨이에 연결되지만 시작되지 않습니다. 로컬 프로세스. 앱은 원격 게이트웨이가 이 Mac에 연결할 수 있도록 로컬 노드 호스트 서비스를 시작합니다. 앱은 게이트웨이를 하위 프로세스로 생성하지 않습니다.

실행 제어 ​

앱은 bot.molt.gateway라는 라벨이 붙은 사용자별 LaunchAgent를 관리합니다. (또는 --profile/OPENCLAW_PROFILE를 사용할 때 bot.molt.<profile>; 레거시 com.openclaw.*는 여전히 언로드됩니다.)

bash
launchctl kickstart -k gui/$UID/bot.molt.gateway
launchctl bootout gui/$UID/bot.molt.gateway

명명된 프로필을 실행할 때 레이블을 bot.molt.<profile>로 바꿉니다.

LaunchAgent가 설치되어 있지 않은 경우 앱에서 활성화하거나 실행하세요. openclaw gateway install.

노드 기능(mac) ​

macOS 앱은 자체적으로 노드로 표시됩니다. 일반적인 명령:

  • 캔버스: canvas.present, canvas.navigate, canvas.eval, canvas.snapshot, canvas.a2ui.*
  • 카메라 : camera.snap, camera.clip
  • 화면 : screen.record
  • 시스템 : system.run, system.notify

노드는 에이전트가 무엇이 허용되는지 결정할 수 있도록 permissions 맵을 보고합니다.

노드 서비스 + 앱 IPC:

  • 헤드리스 노드 호스트 서비스가 실행 중일 때(원격 모드) 게이트웨이 WS에 노드로 연결됩니다.
  • system.run는 로컬 Unix 소켓을 통해 macOS 앱(UI/TCC 컨텍스트)에서 실행됩니다. 프롬프트 + 출력은 앱 내에 유지됩니다.

다이어그램(SCI):

Gateway -> Node Service (WS)
                 |  IPC (UDS + token + HMAC + TTL)
                 v
             Mac App (UI + TCC + system.run)

Exec 승인(system.run) ​

system.run는 macOS 앱의 Exec 승인(설정 → Exec 승인)에 의해 제어됩니다. 보안 + 질문 + 허용 목록은 Mac의 다음 위치에 로컬로 저장됩니다.

~/.openclaw/exec-approvals.json

예:

json
{
  "version": 1,
  "defaults": {
    "security": "deny",
    "ask": "on-miss"
  },
  "agents": {
    "main": {
      "security": "allowlist",
      "ask": "on-miss",
      "allowlist": [{ "pattern": "/opt/homebrew/bin/rg" }]
    }
  }
}

참고:

  • allowlist 항목은 확인된 바이너리 경로에 대한 glob 패턴입니다.
  • 프롬프트에서 "항상 허용"을 선택하면 해당 명령이 허용 목록에 추가됩니다.
  • system.run 환경 재정의가 필터링됩니다(드롭 PATH, DYLD_*, LD_*, NODE_OPTIONS, PYTHON*, PERL*, RUBYOPT) 그런 다음 앱 환경과 병합됩니다.

딥링크 ​

앱은 로컬 작업에 대한 openclaw:// URL 구성표를 등록합니다.

openclaw://agent ​

게이트웨이 agent 요청을 트리거합니다.

bash
open 'openclaw://agent?message=Hello%20from%20deep%20link'

쿼리 매개변수:

  • message (필수)
  • sessionKey (선택 사항)
  • thinking (선택 사항)
  • deliver / to / channel (선택 사항)
  • timeoutSeconds (선택 사항)
  • key (선택적 무인 모드 키)

안전:

  • key가 없으면 앱에서 확인 메시지를 표시합니다.
  • 유효한 key를 사용하면 무인 실행이 됩니다(개인 자동화용).

온보딩 흐름(일반) ​

  1. OpenClaw.app을 설치하고 실행합니다.
  2. 권한 체크리스트를 완료합니다(TCC 프롬프트).
  3. 로컬 모드가 활성화되어 있고 게이트웨이가 실행 중인지 확인하세요.
  4. 터미널 접속을 원할 경우 CLI를 설치하세요.

빌드 및 개발 워크플로(네이티브) ​

  • cd apps/macos && swift build
  • swift run OpenClaw (또는 Xcode)
  • 패키지 앱: scripts/package-mac-app.sh

게이트웨이 연결 디버그(macOS CLI) ​

디버그 CLI를 사용하여 동일한 Gateway WebSocket 핸드셰이크 및 검색을 실행합니다. macOS 앱이 앱을 실행하지 않고 사용하는 논리입니다.

bash
cd apps/macos
swift run openclaw-mac connect --json
swift run openclaw-mac discover --timeout 3000 --json

연결 옵션:

  • --url <ws://host:port>: 구성 무시
  • --mode <local|remote>: 구성에서 해결(기본값: 구성 또는 로컬)
  • --probe: 새로운 상태 프로브를 강제 실행합니다.
  • --timeout <ms>: 요청 시간 초과 (기본값: 15000)
  • --json: 비교를 위한 구조화된 출력

검색 옵션:

  • --include-local: "로컬"로 필터링되는 게이트웨이를 포함합니다.
  • --timeout <ms>: 전체 검색 창(기본값: 2000)
  • --json: 비교를 위한 구조화된 출력

팁: openclaw gateway discover --json와 비교하여 macOS 앱의 검색 파이프라인(NWBrowser + tailnet DNS-SD 대체)이 다음과 다릅니다. Node CLI의 dns-sd 기반 검색.

원격 연결 배관(SSH 터널) ​

macOS 앱이 원격 모드로 실행되면 SSH 터널이 열려 로컬 UI가 됩니다. 구성 요소는 마치 로컬 호스트에 있는 것처럼 원격 게이트웨이와 통신할 수 있습니다.

제어 터널(Gateway WebSocket 포트) ​

  • 목적: 상태 확인, 상태, 웹 채팅, 구성 및 기타 제어 영역 호출.
  • 로컬 포트: 게이트웨이 포트(기본값 18789), 항상 안정적입니다.
  • 원격 포트: 원격 호스트의 동일한 게이트웨이 포트입니다.
  • 동작: 임의의 로컬 포트가 없습니다. 앱이 기존의 정상 터널을 재사용합니다. 또는 필요한 경우 다시 시작합니다.
  • SSH 형태: ssh -N -L <local>:127.0.0.1:<remote> with BatchMode + ExitOnForwardFailure + keepalive 옵션.
  • IP 보고: SSH 터널은 루프백을 사용하므로 게이트웨이는 노드를 볼 수 있습니다. IP는 127.0.0.1입니다. 실제 클라이언트를 원할 경우 직접(ws/wss) 전송을 사용하세요. 표시할 IP(macOS 원격 액세스 참조).

설정 단계는 macOS 원격 액세스를 참조하세요. 프로토콜의 경우 자세한 내용은 게이트웨이 프로토콜을 참조하세요.

관련 문서 ​

비공식 커뮤니티 번역 · 공식 영문 문서