Files
wehub-resource-sync 426e9eeabd
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Waiting to run
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Waiting to run
Build Agent Image / build-and-push (push) Waiting to run
Chat shell gestures / Chat shell gesture + parity e2e (push) Waiting to run
Cloud Gateway Discord / Test (push) Waiting to run
Cloud Gateway Webhook / Test (push) Waiting to run
Cloud Tests / lint-and-types (push) Waiting to run
Cloud Tests / unit-tests (push) Waiting to run
Cloud Tests / integration-tests (push) Waiting to run
Cloud Tests / e2e-tests (push) Blocked by required conditions
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Deploy Apps Worker (Product 2) / Determine environment (push) Waiting to run
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Blocked by required conditions
Deploy Eliza Provisioning Worker / Determine environment (push) Waiting to run
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Blocked by required conditions
Dev Smoke / Classify changed paths (push) Waiting to run
Dev Smoke / bun run dev onboarding chat (push) Blocked by required conditions
Dev Smoke / Vite HMR dependency-level smoke (push) Blocked by required conditions
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Waiting to run
Publish @elizaos/example-code / check_npm (push) Waiting to run
Publish @elizaos/example-code / publish_npm (push) Blocked by required conditions
Publish @elizaos/plugin-elizacloud / verify_version (push) Waiting to run
Publish @elizaos/plugin-elizacloud / publish_npm (push) Blocked by required conditions
Sandbox Live Smoke / Sandbox live smoke (push) Waiting to run
Snap Build & Test / Build Snap (amd64) (push) Waiting to run
Snap Build & Test / Build Snap (arm64) (push) Waiting to run
supply-chain / sbom (push) Waiting to run
supply-chain / vulnerability-scan (push) Waiting to run
Build, Push & Deploy to Phala Cloud / build-and-push (push) Waiting to run
Test Packaging / Validate Packaging Configs (push) Waiting to run
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Waiting to run
Test Packaging / Pack & Test JS Tarballs (push) Waiting to run
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Waiting to run
UI Fixture E2E / ui-fixture-e2e (push) Waiting to run
UI Fixture E2E / fixture-e2e (push) Waiting to run
UI Story Gate / story-gate (push) Waiting to run
vault-ci / test (macos-latest) (push) Waiting to run
vault-ci / test (ubuntu-latest) (push) Waiting to run
vault-ci / test (windows-latest) (push) Waiting to run
vault-ci / app-core wiring tests (push) Waiting to run
verify-patches / verify patches/CHECKSUMS.sha256 (push) Waiting to run
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Waiting to run
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Waiting to run
Voice Benchmark Smoke / voice bench smoke summary (push) Blocked by required conditions
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Waiting to run
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Waiting to run
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Waiting to run
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Waiting to run
Test Packaging / Build & Test PyPI Package (push) Waiting to run
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00
..

@elizaos/plugin-bluebubbles

iMessage and SMS integration for elizaOS agents via the BlueBubbles macOS server.

What it does

This plugin bridges an Eliza agent to iMessage and SMS by connecting to a BlueBubbles server running on a macOS host. Once configured, the agent can:

  • Receive iMessages and SMS via an inbound webhook from BlueBubbles
  • Send text messages to iMessage handles, phone numbers, or group chats
  • React to messages with emoji reactions
  • Reply in-thread to specific messages
  • Fetch and search chat history
  • Edit and unsend messages (requires BlueBubbles Private API)
  • Automatically launch the BlueBubbles app if it is not running (macOS only)

Prerequisites

  1. A Mac running the BlueBubbles server app.
  2. The BlueBubbles server must be reachable from the host running the agent.
  3. A webhook URL configured in the BlueBubbles server pointing at POST <agent-base-url>/webhooks/bluebubbles.

Installation

The plugin is included in the elizaOS monorepo at @elizaos/plugin-bluebubbles. Add it to your agent's plugin list:

import blueBubblesPlugin from "@elizaos/plugin-bluebubbles";

// In your character config or runtime setup:
plugins: [blueBubblesPlugin],

The plugin auto-enables when config.connectors.bluebubbles is present and not explicitly disabled — no manual loading is required in a standard elizaOS agent setup.

Configuration

Set the following environment variables (or character settings):

Variable Required Description
BLUEBUBBLES_SERVER_URL yes Base URL of the BlueBubbles server (e.g. http://192.168.1.10:1234)
BLUEBUBBLES_PASSWORD yes BlueBubbles server password
BLUEBUBBLES_WEBHOOK_SECRET recommended Shared secret to authenticate inbound webhook POSTs (X-BlueBubbles-Webhook-Secret header). Webhook requests are rejected without this.
BLUEBUBBLES_WEBHOOK_PATH no Override the default webhook path (/webhooks/bluebubbles)
BLUEBUBBLES_DM_POLICY no open | pairing (default) | allowlist | disabled
BLUEBUBBLES_GROUP_POLICY no open | allowlist (default) | disabled
BLUEBUBBLES_ALLOW_FROM no Comma-separated handles allowed to DM the agent
BLUEBUBBLES_GROUP_ALLOW_FROM no Comma-separated handles allowed in group chats
BLUEBUBBLES_SEND_READ_RECEIPTS no Send read receipts; default true
BLUEBUBBLES_ENABLED no Set to false to disable without removing config
BLUEBUBBLES_AUTOSTART_COMMAND no Command to launch BlueBubbles before connecting (defaults to open -a BlueBubbles on macOS)

Character settings alternative

Config can also live under character.settings.bluebubbles:

{
  "settings": {
    "bluebubbles": {
      "serverUrl": "http://192.168.1.10:1234",
      "password": "your-password",
      "dmPolicy": "allowlist",
      "allowFrom": ["+15551234567", "user@example.com"]
    }
  }
}

Webhook setup

In the BlueBubbles server app → Webhooks, add an entry:

  • URL: http://<your-agent-host>:<port>/webhooks/bluebubbles
  • Events: new-message, updated-message, chat-updated
  • Secret: the value you set in BLUEBUBBLES_WEBHOOK_SECRET

DM and group policies

Policy Behavior
open Accept messages from any sender
pairing (default for DMs) Accept messages only from handles in BLUEBUBBLES_ALLOW_FROM; if the list is empty, accept all
allowlist (default for groups) Accept only from handles in the allow list
disabled Reject all messages of this type

API routes

The plugin registers the following HTTP endpoints on the agent:

Method Path Description
GET /api/setup/bluebubbles/status Service health and webhook path
POST /api/setup/bluebubbles/start Persist server URL and password, activate connection
POST /api/setup/bluebubbles/cancel Clear stored credentials
GET /api/bluebubbles/chats List BlueBubbles chats (?limit=&offset=)
GET /api/bluebubbles/messages List messages for a chat (?chatGuid=&limit=&offset=)
POST /webhooks/bluebubbles Inbound webhook receiver

Notes

  • macOS only for iMessage. The BlueBubbles server runs on macOS. The agent itself can run anywhere as long as it can reach the BlueBubbles server URL.
  • Private API. Message editing and unsend require the BlueBubbles Private API to be enabled on the macOS host.
  • Accounts. Multiple BlueBubbles server records can be configured via character.settings.bluebubbles.accounts.<accountId> and listed through the connector-account provider. One service instance connects to the resolved default account; run separate agent instances for simultaneous independent BlueBubbles servers.