{
  "title": "macOS Developer Setup",
  "content": "This guide covers the necessary steps to build and run the OpenClaw macOS application from source.\n\nBefore building the app, ensure you have the following installed:\n\n1. **Xcode 26.2+**: Required for Swift development.\n2. **Node.js 22+ & pnpm**: Required for the gateway, CLI, and packaging scripts.\n\n## 1. Install Dependencies\n\nInstall the project-wide dependencies:\n\n## 2. Build and Package the App\n\nTo build the macOS app and package it into `dist/OpenClaw.app`, run:\n\nIf you don't have an Apple Developer ID certificate, the script will automatically use **ad-hoc signing** (`-`).\n\nFor dev run modes, signing flags, and Team ID troubleshooting, see the macOS app README:\n[https://github.com/openclaw/openclaw/blob/main/apps/macos/README.md](https://github.com/openclaw/openclaw/blob/main/apps/macos/README.md)\n\n> **Note**: Ad-hoc signed apps may trigger security prompts. If the app crashes immediately with \"Abort trap 6\", see the [Troubleshooting](#troubleshooting) section.\n\n## 3. Install the CLI\n\nThe macOS app expects a global `openclaw` CLI install to manage background tasks.\n\n**To install it (recommended):**\n\n1. Open the OpenClaw app.\n2. Go to the **General** settings tab.\n3. Click **\"Install CLI\"**.\n\nAlternatively, install it manually:\n\n### Build Fails: Toolchain or SDK Mismatch\n\nThe macOS app build expects the latest macOS SDK and Swift 6.2 toolchain.\n\n**System dependencies (required):**\n\n* **Latest macOS version available in Software Update** (required by Xcode 26.2 SDKs)\n* **Xcode 26.2** (Swift 6.2 toolchain)\n\nIf versions don’t match, update macOS/Xcode and re-run the build.\n\n### App Crashes on Permission Grant\n\nIf the app crashes when you try to allow **Speech Recognition** or **Microphone** access, it may be due to a corrupted TCC cache or signature mismatch.\n\n1. Reset the TCC permissions:\n   \n2. If that fails, change the `BUNDLE_ID` temporarily in [`scripts/package-mac-app.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-app.sh) to force a \"clean slate\" from macOS.\n\n### Gateway \"Starting...\" indefinitely\n\nIf the gateway status stays on \"Starting...\", check if a zombie process is holding the port:\n\n```bash theme={null}\nopenclaw gateway status\nopenclaw gateway stop",
  "code_samples": [
    {
      "code": "## 2. Build and Package the App\n\nTo build the macOS app and package it into `dist/OpenClaw.app`, run:",
      "language": "unknown"
    },
    {
      "code": "If you don't have an Apple Developer ID certificate, the script will automatically use **ad-hoc signing** (`-`).\n\nFor dev run modes, signing flags, and Team ID troubleshooting, see the macOS app README:\n[https://github.com/openclaw/openclaw/blob/main/apps/macos/README.md](https://github.com/openclaw/openclaw/blob/main/apps/macos/README.md)\n\n> **Note**: Ad-hoc signed apps may trigger security prompts. If the app crashes immediately with \"Abort trap 6\", see the [Troubleshooting](#troubleshooting) section.\n\n## 3. Install the CLI\n\nThe macOS app expects a global `openclaw` CLI install to manage background tasks.\n\n**To install it (recommended):**\n\n1. Open the OpenClaw app.\n2. Go to the **General** settings tab.\n3. Click **\"Install CLI\"**.\n\nAlternatively, install it manually:",
      "language": "unknown"
    },
    {
      "code": "## Troubleshooting\n\n### Build Fails: Toolchain or SDK Mismatch\n\nThe macOS app build expects the latest macOS SDK and Swift 6.2 toolchain.\n\n**System dependencies (required):**\n\n* **Latest macOS version available in Software Update** (required by Xcode 26.2 SDKs)\n* **Xcode 26.2** (Swift 6.2 toolchain)\n\n**Checks:**",
      "language": "unknown"
    },
    {
      "code": "If versions don’t match, update macOS/Xcode and re-run the build.\n\n### App Crashes on Permission Grant\n\nIf the app crashes when you try to allow **Speech Recognition** or **Microphone** access, it may be due to a corrupted TCC cache or signature mismatch.\n\n**Fix:**\n\n1. Reset the TCC permissions:",
      "language": "unknown"
    },
    {
      "code": "2. If that fails, change the `BUNDLE_ID` temporarily in [`scripts/package-mac-app.sh`](https://github.com/openclaw/openclaw/blob/main/scripts/package-mac-app.sh) to force a \"clean slate\" from macOS.\n\n### Gateway \"Starting...\" indefinitely\n\nIf the gateway status stays on \"Starting...\", check if a zombie process is holding the port:",
      "language": "unknown"
    }
  ],
  "headings": [
    {
      "level": "h2",
      "text": "Prerequisites",
      "id": "prerequisites"
    },
    {
      "level": "h2",
      "text": "1. Install Dependencies",
      "id": "1.-install-dependencies"
    },
    {
      "level": "h2",
      "text": "2. Build and Package the App",
      "id": "2.-build-and-package-the-app"
    },
    {
      "level": "h2",
      "text": "3. Install the CLI",
      "id": "3.-install-the-cli"
    },
    {
      "level": "h2",
      "text": "Troubleshooting",
      "id": "troubleshooting"
    },
    {
      "level": "h3",
      "text": "Build Fails: Toolchain or SDK Mismatch",
      "id": "build-fails:-toolchain-or-sdk-mismatch"
    },
    {
      "level": "h3",
      "text": "App Crashes on Permission Grant",
      "id": "app-crashes-on-permission-grant"
    },
    {
      "level": "h3",
      "text": "Gateway \"Starting...\" indefinitely",
      "id": "gateway-\"starting...\"-indefinitely"
    }
  ],
  "url": "llms-txt#macos-developer-setup",
  "links": []
}