{
  "name": "openclaw",
  "version": "2026.2.26",
  "description": "Multi-channel AI gateway with extensible messaging integrations",
  "keywords": [],
  "homepage": "https://github.com/openclaw/openclaw#readme",
  "bugs": {
    "url": "https://github.com/openclaw/openclaw/issues"
  },
  "license": "MIT",
  "author": "",
  "repository": {
    "type": "git",
    "url": "git+https://github.com/openclaw/openclaw.git"
  },
  "bin": {
    "openclaw": "openclaw.mjs"
  },
  "directories": {
    "doc": "docs",
    "test": "test"
  },
  "files": [
    "CHANGELOG.md",
    "LICENSE",
    "openclaw.mjs",
    "README-header.png",
    "README.md",
    "assets/",
    "dist/",
    "docs/",
    "extensions/",
    "skills/"
  ],
  "type": "module",
  "main": "dist/index.js",
  "exports": {
    ".": "./dist/index.js",
    "./plugin-sdk": {
      "types": "./dist/plugin-sdk/index.d.ts",
      "default": "./dist/plugin-sdk/index.js"
    },
    "./plugin-sdk/account-id": {
      "types": "./dist/plugin-sdk/account-id.d.ts",
      "default": "./dist/plugin-sdk/account-id.js"
    },
    "./cli-entry": "./openclaw.mjs"
  },
  "scripts": {
    "android:assemble": "cd apps/android && ./gradlew :app:assembleDebug",
    "android:install": "cd apps/android && ./gradlew :app:installDebug",
    "android:run": "cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.openclaw.android/.MainActivity",
    "android:test": "cd apps/android && ./gradlew :app:testDebugUnitTest",
    "build": "pnpm canvas:a2ui:bundle && tsdown && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-compat.ts",
    "build:plugin-sdk:dts": "tsc -p tsconfig.plugin-sdk.dts.json",
    "canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
    "check": "pnpm format:check && pnpm tsgo && pnpm lint && pnpm lint:tmp:no-random-messaging && pnpm lint:tmp:channel-agnostic-boundaries && pnpm lint:tmp:no-raw-channel-fetch && pnpm lint:auth:no-pairing-store-group && pnpm lint:auth:pairing-account-scope && pnpm check:host-env-policy:swift",
    "check:docs": "pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links",
    "check:host-env-policy:swift": "node scripts/generate-host-env-security-policy-swift.mjs --check",
    "check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500",
    "deadcode:ci": "pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused",
    "deadcode:knip": "pnpm dlx knip --no-progress",
    "deadcode:report": "pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused",
    "deadcode:report:ci:knip": "mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true",
    "deadcode:report:ci:ts-prune": "mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true",
    "deadcode:report:ci:ts-unused": "mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true",
    "deadcode:ts-prune": "pnpm dlx ts-prune src extensions scripts",
    "deadcode:ts-unused": "pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount",
    "dev": "node scripts/run-node.mjs",
    "docs:bin": "node scripts/build-docs-list.mjs",
    "docs:check-links": "node scripts/docs-link-audit.mjs",
    "docs:dev": "cd docs && mint dev",
    "docs:list": "node scripts/docs-list.js",
    "docs:spellcheck": "bash scripts/docs-spellcheck.sh",
    "docs:spellcheck:fix": "bash scripts/docs-spellcheck.sh --write",
    "format": "oxfmt --write",
    "format:all": "pnpm format && pnpm format:swift",
    "format:check": "oxfmt --check",
    "format:diff": "oxfmt --write && git --no-pager diff",
    "format:docs": "git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write",
    "format:docs:check": "git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check",
    "format:fix": "oxfmt --write",
    "format:swift": "swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/OpenClawKit/Sources",
    "gateway:dev": "OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
    "gateway:dev:reset": "OPENCLAW_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
    "gateway:watch": "node scripts/watch-node.mjs gateway --force",
    "gen:host-env-policy:swift": "node scripts/generate-host-env-security-policy-swift.mjs --write",
    "ghsa:patch": "node scripts/ghsa-patch.mjs",
    "ios:build": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'",
    "ios:gen": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'",
    "ios:open": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open OpenClaw.xcodeproj'",
    "ios:run": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project OpenClaw.xcodeproj -scheme OpenClaw -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.openclaw.ios'",
    "lint": "oxlint --type-aware",
    "lint:all": "pnpm lint && pnpm lint:swift",
    "lint:auth:no-pairing-store-group": "node scripts/check-no-pairing-store-group-auth.mjs",
    "lint:auth:pairing-account-scope": "node scripts/check-pairing-account-scope.mjs",
    "lint:docs": "pnpm dlx markdownlint-cli2",
    "lint:docs:fix": "pnpm dlx markdownlint-cli2 --fix",
    "lint:fix": "oxlint --type-aware --fix && pnpm format",
    "lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
    "lint:tmp:channel-agnostic-boundaries": "node scripts/check-channel-agnostic-boundaries.mjs",
    "lint:tmp:no-random-messaging": "node scripts/check-no-random-messaging-tmp.mjs",
    "lint:tmp:no-raw-channel-fetch": "node scripts/check-no-raw-channel-fetch.mjs",
    "lint:ui:no-raw-window-open": "node scripts/check-no-raw-window-open.mjs",
    "mac:open": "open dist/OpenClaw.app",
    "mac:package": "bash scripts/package-mac-app.sh",
    "mac:restart": "bash scripts/restart-mac.sh",
    "moltbot:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
    "openclaw": "node scripts/run-node.mjs",
    "openclaw:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
    "plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
    "prepack": "pnpm build && pnpm ui:build",
    "prepare": "command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0",
    "protocol:check": "pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/OpenClawProtocol/GatewayModels.swift",
    "protocol:gen": "node --import tsx scripts/protocol-gen.ts",
    "protocol:gen:swift": "node --import tsx scripts/protocol-gen-swift.ts",
    "release:check": "node --import tsx scripts/release-check.ts",
    "start": "node scripts/run-node.mjs",
    "test": "node scripts/test-parallel.mjs",
    "test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
    "test:coverage": "vitest run --config vitest.unit.config.ts --coverage",
    "test:docker:all": "pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup",
    "test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
    "test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
    "test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
    "test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
    "test:docker:live-models": "bash scripts/test-live-models-docker.sh",
    "test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
    "test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
    "test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
    "test:e2e": "vitest run --config vitest.e2e.config.ts",
    "test:fast": "vitest run --config vitest.unit.config.ts",
    "test:force": "node --import tsx scripts/test-force.ts",
    "test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:e2e:anthropic": "OPENCLAW_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:e2e:openai": "OPENCLAW_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
    "test:install:smoke": "bash scripts/test-install-sh-docker.sh",
    "test:live": "OPENCLAW_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts",
    "test:macmini": "OPENCLAW_TEST_VM_FORKS=0 OPENCLAW_TEST_PROFILE=serial node scripts/test-parallel.mjs",
    "test:sectriage": "pnpm exec vitest run --config vitest.gateway.config.ts && vitest run --config vitest.unit.config.ts --exclude src/daemon/launchd.integration.test.ts --exclude src/process/exec.test.ts",
    "test:ui": "pnpm lint:ui:no-raw-window-open && pnpm --dir ui test",
    "test:voicecall:closedloop": "vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1",
    "test:watch": "vitest",
    "tui": "node scripts/run-node.mjs tui",
    "tui:dev": "OPENCLAW_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui",
    "ui:build": "node scripts/ui.js build",
    "ui:dev": "node scripts/ui.js dev",
    "ui:install": "node scripts/ui.js install"
  },
  "dependencies": {
    "@agentclientprotocol/sdk": "0.14.1",
    "@aws-sdk/client-bedrock": "^3.998.0",
    "@buape/carbon": "0.0.0-beta-20260216184201",
    "@clack/prompts": "^1.0.1",
    "@discordjs/voice": "^0.19.0",
    "@grammyjs/runner": "^2.0.3",
    "@grammyjs/transformer-throttler": "^1.2.1",
    "@homebridge/ciao": "^1.3.5",
    "@larksuiteoapi/node-sdk": "^1.59.0",
    "@line/bot-sdk": "^10.6.0",
    "@lydell/node-pty": "1.2.0-beta.3",
    "@mariozechner/pi-agent-core": "0.55.1",
    "@mariozechner/pi-ai": "0.55.1",
    "@mariozechner/pi-coding-agent": "0.55.1",
    "@mariozechner/pi-tui": "0.55.1",
    "@mozilla/readability": "^0.6.0",
    "@sinclair/typebox": "0.34.48",
    "@slack/bolt": "^4.6.0",
    "@slack/web-api": "^7.14.1",
    "@snazzah/davey": "^0.1.9",
    "@whiskeysockets/baileys": "7.0.0-rc.9",
    "ajv": "^8.18.0",
    "chalk": "^5.6.2",
    "chokidar": "^5.0.0",
    "cli-highlight": "^2.1.11",
    "commander": "^14.0.3",
    "croner": "^10.0.1",
    "discord-api-types": "^0.38.40",
    "dotenv": "^17.3.1",
    "express": "^5.2.1",
    "file-type": "^21.3.0",
    "grammy": "^1.40.1",
    "https-proxy-agent": "^7.0.6",
    "ipaddr.js": "^2.3.0",
    "jiti": "^2.6.1",
    "json5": "^2.2.3",
    "jszip": "^3.10.1",
    "linkedom": "^0.18.12",
    "long": "^5.3.2",
    "markdown-it": "^14.1.1",
    "node-edge-tts": "^1.2.10",
    "opusscript": "^0.1.1",
    "osc-progress": "^0.3.0",
    "pdfjs-dist": "^5.4.624",
    "playwright-core": "1.58.2",
    "qrcode-terminal": "^0.12.0",
    "sharp": "^0.34.5",
    "sqlite-vec": "0.1.7-alpha.2",
    "tar": "7.5.9",
    "tslog": "^4.10.2",
    "undici": "^7.22.0",
    "ws": "^8.19.0",
    "yaml": "^2.8.2",
    "zod": "^4.3.6"
  },
  "devDependencies": {
    "@grammyjs/types": "^3.24.0",
    "@lit-labs/signals": "^0.2.0",
    "@lit/context": "^1.1.6",
    "@types/express": "^5.0.6",
    "@types/markdown-it": "^14.1.2",
    "@types/node": "^25.3.1",
    "@types/qrcode-terminal": "^0.12.2",
    "@types/ws": "^8.18.1",
    "@typescript/native-preview": "7.0.0-dev.20260225.1",
    "@vitest/coverage-v8": "^4.0.18",
    "lit": "^3.3.2",
    "oxfmt": "0.35.0",
    "oxlint": "^1.50.0",
    "oxlint-tsgolint": "^0.15.0",
    "signal-utils": "0.21.1",
    "tsdown": "^0.20.3",
    "tsx": "^4.21.0",
    "typescript": "^5.9.3",
    "vitest": "^4.0.18"
  },
  "peerDependencies": {
    "@napi-rs/canvas": "^0.1.89",
    "node-llama-cpp": "3.15.1"
  },
  "optionalDependencies": {
    "@discordjs/opus": "^0.10.0"
  },
  "engines": {
    "node": ">=22.12.0"
  },
  "packageManager": "pnpm@10.23.0",
  "pnpm": {
    "minimumReleaseAge": 2880,
    "overrides": {
      "hono": "4.11.10",
      "fast-xml-parser": "5.3.6",
      "request": "npm:@cypress/request@3.0.10",
      "request-promise": "npm:@cypress/request-promise@5.0.0",
      "form-data": "2.5.4",
      "minimatch": "10.2.4",
      "qs": "6.14.2",
      "@sinclair/typebox": "0.34.48",
      "tar": "7.5.9",
      "tough-cookie": "4.1.3"
    },
    "onlyBuiltDependencies": [
      "@lydell/node-pty",
      "@matrix-org/matrix-sdk-crypto-nodejs",
      "@napi-rs/canvas",
      "@whiskeysockets/baileys",
      "authenticate-pam",
      "esbuild",
      "koffi",
      "node-llama-cpp",
      "protobufjs",
      "sharp"
    ]
  }
}
