macOS companion app

macOS IPC

OpenClaw macOS IPC आर्किटेक्चर

एक स्थानीय Unix सॉकेट, exec अनुमोदनों और system.run के लिए Node होस्ट सेवा को macOS ऐप से जोड़ता है। खोज/कनेक्शन जाँच के लिए एक openclaw-mac डीबग CLI (apps/macos/Sources/OpenClawMacCLI) उपलब्ध है; एजेंट क्रियाएँ अब भी Gateway WebSocket और node.invoke के माध्यम से प्रवाहित होती हैं। Node-समर्थित computer.act पथ, एम्बेडेड Peekaboo ऑटोमेशन को प्रक्रिया के भीतर चलाता है; स्वतंत्र Peekaboo क्लाइंट PeekabooBridge का उपयोग करते हैं।

लक्ष्य

  • एकल GUI ऐप इंस्टेंस, जो TCC से संबंधित सभी कार्यों (सूचनाएँ, स्क्रीन रिकॉर्डिंग, माइक्रोफ़ोन, वाक्, AppleScript) का स्वामी होता है।
  • ऑटोमेशन के लिए एक छोटा इंटरफ़ेस: Gateway + Node कमांड, प्रक्रिया के भीतर computer.act, साथ ही स्वतंत्र UI ऑटोमेशन क्लाइंट के लिए PeekabooBridge।
  • पूर्वानुमेय अनुमतियाँ: हमेशा वही हस्ताक्षरित बंडल ID, जिसे launchd द्वारा लॉन्च किया जाता है, ताकि TCC अनुमतियाँ बनी रहें।

यह कैसे काम करता है

Gateway + Node ट्रांसपोर्ट

  • ऐप Gateway (स्थानीय मोड) चलाता है और Node के रूप में उससे जुड़ता है।
  • एजेंट क्रियाएँ node.invoke के माध्यम से की जाती हैं (उदा. system.run, system.notify, canvas.*)।
  • Node कमांड में canvas.*, camera.snap, camera.clip, screen.snapshot, screen.record, computer.act, system.run, और system.notify शामिल हैं।
  • Node एक permissions मैप रिपोर्ट करता है, ताकि एजेंट देख सकें कि स्क्रीन, कैमरा, माइक्रोफ़ोन, वाक्, ऑटोमेशन या सुलभता एक्सेस उपलब्ध है या नहीं।

Node सेवा + ऐप IPC

  • एक हेडलेस Node होस्ट सेवा Gateway WebSocket से जुड़ती है।
  • system.run अनुरोधों को एक स्थानीय Unix सॉकेट (ExecApprovalsSocket.swift) के माध्यम से macOS ऐप को अग्रेषित किया जाता है।
  • ऐप UI संदर्भ में exec करता है, आवश्यकता होने पर संकेत देता है और आउटपुट लौटाता है।

आरेख (SCI):

text
एजेंट -> Gateway -> Node सेवा (WS)                      |  IPC (UDS + टोकन + HMAC + TTL)                      v                  Mac ऐप (UI + TCC + system.run)

PeekabooBridge (UI ऑटोमेशन)

  • अंतर्निहित एजेंट computer टूल इस सॉकेट का उपयोग नहीं करता। युग्मित macOS Node, एम्बेडेड Peekaboo सेवाओं के साथ ऐप प्रक्रिया में computer.act को पूरा करता है।
  • UI ऑटोमेशन एक अलग UNIX सॉकेट (~/Library/Application Support/OpenClaw/<socket>) और PeekabooBridge JSON प्रोटोकॉल का उपयोग करता है।
  • होस्ट वरीयता क्रम (क्लाइंट-साइड): Peekaboo.app -> Claude.app -> OpenClaw.app -> स्थानीय निष्पादन।
  • सुरक्षा: ब्रिज होस्ट के लिए अनुमत सूची में शामिल TeamID आवश्यक है (बंडल किया गया PeekabooBridgeHostCoordinator एक निश्चित टीम और ऐप की अपनी हस्ताक्षर टीम को अनुमत सूची में रखता है); केवल DEBUG में उपलब्ध समान-UID वैकल्पिक मार्ग को PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 (Peekaboo परंपरा) द्वारा सुरक्षित किया जाता है।
  • विवरण के लिए देखें: PeekabooBridge का उपयोग

परिचालन प्रवाह

  • पुनः आरंभ/पुनर्निर्माण: scripts/restart-mac.sh मौजूदा इंस्टेंस समाप्त करता है, Swift के माध्यम से पुनर्निर्माण करता है, दोबारा पैकेज करता है और पुनः लॉन्च करता है। यह उपलब्ध हस्ताक्षर पहचान का स्वतः पता लगाता है और कोई पहचान न मिलने पर --no-sign पर वापस जाता है; हस्ताक्षर अनिवार्य करने के लिए --sign पास करें (कोई कुंजी उपलब्ध न होने पर विफल होता है) या अहस्ताक्षरित पथ को बाध्य करने के लिए --no-sign पास करें। हस्ताक्षरित पथ पर परिवेश में सेट SIGN_IDENTITY को अनसेट किया जाता है, ताकि scripts/codesign-mac-app.sh की अपनी पहचान स्वतः-पहचान प्रमाणपत्र चुन सके।
  • एकल इंस्टेंस: ऐप डुप्लिकेट बंडल ID के लिए NSWorkspace.runningApplications की जाँच करता है और एक से अधिक इंस्टेंस मिलने पर बाहर निकल जाता है (MenuBar.swift में isDuplicateInstance())।

सुदृढ़ीकरण संबंधी टिप्पणियाँ

  • सभी विशेषाधिकार-प्राप्त इंटरफ़ेस के लिए TeamID मिलान अनिवार्य करना बेहतर है।
  • PeekabooBridge: PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 (केवल DEBUG) स्थानीय विकास के लिए समान-UID कॉलर को अनुमति दे सकता है।
  • सभी संचार केवल स्थानीय रहते हैं; कोई नेटवर्क सॉकेट उजागर नहीं किया जाता।
  • TCC संकेत केवल GUI ऐप बंडल से उत्पन्न होते हैं; पुनर्निर्माणों में हस्ताक्षरित बंडल ID को स्थिर रखें।
  • Exec अनुमोदन सॉकेट सुदृढ़ीकरण: फ़ाइल मोड 0600, साझा टोकन, पीयर-UID जाँच (getpeereid), HMAC-SHA256 चुनौती/प्रतिक्रिया और अनुरोधों पर छोटी TTL।

संबंधित

Was this useful?
On this page

On this page