OpenClaw macOS IPC आर्किटेक्चर¶
वर्तमान मॉडल: एक लोकल Unix socket node host service को macOS app से जोड़ता है, ताकि exec approvals और system.run संभव हो सकें। डिस्कवरी/कनेक्ट जाँच के लिए एक openclaw-mac debug CLI उपलब्ध है; एजेंट की कार्रवाइयाँ अभी भी Gateway WebSocket और node.invoke के माध्यम से प्रवाहित होती हैं। UI ऑटोमेशन के लिए PeekabooBridge का उपयोग किया जाता है।
लक्ष्य¶
- एकल GUI ऐप इंस्टेंस जो सभी TCC-सामना करने वाले कार्यों का स्वामित्व रखता है (नोटिफ़िकेशन, स्क्रीन रिकॉर्डिंग, माइक, स्पीच, AppleScript)।
- ऑटोमेशन के लिए छोटा सतह क्षेत्र: Gateway + node कमांड्स, तथा UI ऑटोमेशन के लिए PeekabooBridge।
- पूर्वानुमेय अनुमतियाँ: हमेशा वही साइन किया हुआ बंडल ID, launchd द्वारा लॉन्च किया गया, ताकि TCC ग्रांट्स स्थिर रहें।
यह कैसे काम करता है¶
Gateway + node ट्रांसपोर्ट¶
- ऐप Gateway (local mode) चलाता है और node के रूप में उससे कनेक्ट होता है।
- एजेंट क्रियाएँ
node.invokeके माध्यम से की जाती हैं (जैसेsystem.run,system.notify,canvas.*)।
Node service + ऐप IPC¶
- एक हेडलेस node host service Gateway WebSocket से कनेक्ट होता है।
system.runअनुरोधों को एक स्थानीय Unix सॉकेट के माध्यम से macOS ऐप तक अग्रेषित किया जाता है।- ऐप UI संदर्भ में exec करता है, आवश्यकता होने पर प्रॉम्प्ट दिखाता है, और आउटपुट लौटाता है।
आरेख (SCI):
Agent -> Gateway -> Node Service (WS)
| IPC (UDS + token + HMAC + TTL)
v
Mac App (UI + TCC + system.run)
PeekabooBridge (UI ऑटोमेशन)¶
- UI ऑटोमेशन एक अलग UNIX सॉकेट का उपयोग करता है जिसका नाम
bridge.sockहै और PeekabooBridge JSON प्रोटोकॉल। - होस्ट वरीयता क्रम (क्लाइंट-साइड): Peekaboo.app → Claude.app → OpenClaw.app → स्थानीय निष्पादन।
- सुरक्षा: ब्रिज होस्ट्स के लिए एक अनुमत TeamID आवश्यक है; DEBUG-केवल same-UID एस्केप हैच
PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1(Peekaboo परंपरा) द्वारा संरक्षित है। - विवरण के लिए देखें: PeekabooBridge usage।
परिचालन प्रवाह¶
- Restart/rebuild:
SIGN_IDENTITY="Apple Development: <Developer Name> (<TEAMID>)" scripts/restart-mac.sh - मौजूदा इंस्टेंस को समाप्त करता है
- Swift बिल्ड + पैकेज
- LaunchAgent को लिखता/बूटस्ट्रैप/किकस्टार्ट करता है
- एकल इंस्टेंस: यदि समान बंडल ID वाला कोई अन्य इंस्टेंस चल रहा हो तो ऐप प्रारंभ में ही बाहर निकल जाता है।
हार्डनिंग नोट्स¶
- सभी विशेषाधिकारयुक्त सतहों के लिए TeamID मिलान की आवश्यकता को प्राथमिकता दें।
- PeekabooBridge:
PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1(केवल DEBUG) स्थानीय विकास के लिए same-UID कॉलर्स की अनुमति दे सकता है। - सभी संचार केवल स्थानीय रहते हैं; कोई नेटवर्क सॉकेट उजागर नहीं किए जाते।
- TCC प्रॉम्प्ट केवल GUI ऐप बंडल से उत्पन्न होते हैं; पुनर्निर्माणों के बीच साइन किया हुआ बंडल ID स्थिर रखें।
- IPC हार्डनिंग: सॉकेट मोड
0600, टोकन, peer-UID जाँच, HMAC चैलेंज/रिस्पॉन्स, छोटा TTL।