Skip to content

feat(gateway): add BlueBubbles iMessage platform adapter#6437

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-5df3920d
Apr 9, 2026
Merged

feat(gateway): add BlueBubbles iMessage platform adapter#6437
teknium1 merged 1 commit into
mainfrom
hermes/hermes-5df3920d

Conversation

@teknium1

@teknium1 teknium1 commented Apr 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds Apple iMessage as a first-class gateway platform via BlueBubbles macOS server. Consolidates the best of PRs #5869 and #4588 into a clean implementation.

Architecture

  • Webhook-based inbound — event-driven via local aiohttp listener (no polling, no dedup needed)
  • Email/phone → GUID resolution — users address by user@icloud.com or +155****4567, not raw BlueBubbles GUIDs
  • Private API safety — checks helper_connected before tapback/typing/read receipt calls (avoids 500s)
  • Inbound attachment downloading — images, audio, documents fetched from BB and cached locally for agent processing
  • Markdown stripping — clean plain-text delivery for iMessage
  • Smart progress suppression — detects platforms without edit_message and silently skips tool progress (benefits any future non-editable platform too)

Attribution

Based on PR #5869 by @benjaminsehl (webhook architecture, GUID resolution, Private API safety, progress suppression, setup wizard) with inbound attachment downloading from PR #4588 by @1960697431.

Integration points (14 files)

File What
gateway/platforms/bluebubbles.py Core adapter (~620 lines)
gateway/config.py Platform enum + env config loading
gateway/run.py Adapter factory, auth maps, progress suppression
toolsets.py hermes-bluebubbles toolset + gateway composite
tools/send_message_tool.py Platform routing + standalone send
cron/scheduler.py Cron delivery support
gateway/channel_directory.py Session-based discovery
agent/prompt_builder.py iMessage platform hint
hermes_cli/gateway.py Setup wizard entry
hermes_cli/status.py Status display
hermes_cli/tools_config.py Platform display config
hermes_cli/config.py Env var registry
tools/cronjob_tools.py Delivery description
tests/gateway/test_bluebubbles.py 27 tests

Environment variables

BLUEBUBBLES_SERVER_URL=http://192.168.1.10:1234
BLUEBUBBLES_PASSWORD=***
BLUEBUBBLES_WEBHOOK_HOST=127.0.0.1      # default
BLUEBUBBLES_WEBHOOK_PORT=8645            # default
BLUEBUBBLES_HOME_CHANNEL=user@example.com
BLUEBUBBLES_ALLOWED_USERS=user@example.com,+155****4567

Test plan

  • pytest tests/gateway/test_bluebubbles.py — 27 tests pass
  • pytest tests/test_toolsets.py — 20 tests pass (consistency checks)
  • pytest tests/gateway/test_config.py — 17 tests pass (config loading)
  • E2E verification with real imports (config overrides, adapter init, GUID resolution, cron delivery, toolsets)

Closes #3892. Supersedes #5869, #4588, #3687, #4907, #5432.

Adds Apple iMessage as a gateway platform via BlueBubbles macOS server.

Architecture:
- Webhook-based inbound (event-driven, no polling/dedup needed)
- Email/phone → chat GUID resolution for user-friendly addressing
- Private API safety (checks helper_connected before tapback/typing)
- Inbound attachment downloading (images, audio, documents cached locally)
- Markdown stripping for clean iMessage delivery
- Smart progress suppression for platforms without message editing

Based on PR #5869 by @benjaminsehl (webhook architecture, GUID resolution,
Private API safety, progress suppression) with inbound attachment downloading
from PR #4588 by @1960697431 (attachment cache routing).

Integration points: Platform enum, env config, adapter factory, auth maps,
cron delivery, send_message routing, channel directory, platform hints,
toolset definition, setup wizard, status display.

27 tests covering config, adapter, webhook parsing, GUID resolution,
attachment download routing, toolset consistency, and prompt hints.
@teknium1 teknium1 merged commit d97f6ce into main Apr 9, 2026
4 of 6 checks passed
Tommyeds pushed a commit to Tommyeds/hermes-agent that referenced this pull request Apr 12, 2026
…h#6437)

Adds Apple iMessage as a gateway platform via BlueBubbles macOS server.

Architecture:
- Webhook-based inbound (event-driven, no polling/dedup needed)
- Email/phone → chat GUID resolution for user-friendly addressing
- Private API safety (checks helper_connected before tapback/typing)
- Inbound attachment downloading (images, audio, documents cached locally)
- Markdown stripping for clean iMessage delivery
- Smart progress suppression for platforms without message editing

Based on PR NousResearch#5869 by @benjaminsehl (webhook architecture, GUID resolution,
Private API safety, progress suppression) with inbound attachment downloading
from PR NousResearch#4588 by @1960697431 (attachment cache routing).

Integration points: Platform enum, env config, adapter factory, auth maps,
cron delivery, send_message routing, channel directory, platform hints,
toolset definition, setup wizard, status display.

27 tests covering config, adapter, webhook parsing, GUID resolution,
attachment download routing, toolset consistency, and prompt hints.
angelburgosrosado pushed a commit to angelburgosrosado/hermes-agent that referenced this pull request Apr 27, 2026
…h#6437)

Adds Apple iMessage as a gateway platform via BlueBubbles macOS server.

Architecture:
- Webhook-based inbound (event-driven, no polling/dedup needed)
- Email/phone → chat GUID resolution for user-friendly addressing
- Private API safety (checks helper_connected before tapback/typing)
- Inbound attachment downloading (images, audio, documents cached locally)
- Markdown stripping for clean iMessage delivery
- Smart progress suppression for platforms without message editing

Based on PR NousResearch#5869 by @benjaminsehl (webhook architecture, GUID resolution,
Private API safety, progress suppression) with inbound attachment downloading
from PR NousResearch#4588 by @1960697431 (attachment cache routing).

Integration points: Platform enum, env config, adapter factory, auth maps,
cron delivery, send_message routing, channel directory, platform hints,
toolset definition, setup wizard, status display.

27 tests covering config, adapter, webhook parsing, GUID resolution,
attachment download routing, toolset consistency, and prompt hints.
02356abc pushed a commit to 02356abc/hermes-agent that referenced this pull request May 14, 2026
…h#6437)

Adds Apple iMessage as a gateway platform via BlueBubbles macOS server.

Architecture:
- Webhook-based inbound (event-driven, no polling/dedup needed)
- Email/phone → chat GUID resolution for user-friendly addressing
- Private API safety (checks helper_connected before tapback/typing)
- Inbound attachment downloading (images, audio, documents cached locally)
- Markdown stripping for clean iMessage delivery
- Smart progress suppression for platforms without message editing

Based on PR NousResearch#5869 by @benjaminsehl (webhook architecture, GUID resolution,
Private API safety, progress suppression) with inbound attachment downloading
from PR NousResearch#4588 by @1960697431 (attachment cache routing).

Integration points: Platform enum, env config, adapter factory, auth maps,
cron delivery, send_message routing, channel directory, platform hints,
toolset definition, setup wizard, status display.

27 tests covering config, adapter, webhook parsing, GUID resolution,
attachment download routing, toolset consistency, and prompt hints.
olympus-terminal pushed a commit to olympus-terminal/hermes-agent that referenced this pull request May 16, 2026
…h#6437)

Adds Apple iMessage as a gateway platform via BlueBubbles macOS server.

Architecture:
- Webhook-based inbound (event-driven, no polling/dedup needed)
- Email/phone → chat GUID resolution for user-friendly addressing
- Private API safety (checks helper_connected before tapback/typing)
- Inbound attachment downloading (images, audio, documents cached locally)
- Markdown stripping for clean iMessage delivery
- Smart progress suppression for platforms without message editing

Based on PR NousResearch#5869 by @benjaminsehl (webhook architecture, GUID resolution,
Private API safety, progress suppression) with inbound attachment downloading
from PR NousResearch#4588 by @1960697431 (attachment cache routing).

Integration points: Platform enum, env config, adapter factory, auth maps,
cron delivery, send_message routing, channel directory, platform hints,
toolset definition, setup wizard, status display.

27 tests covering config, adapter, webhook parsing, GUID resolution,
attachment download routing, toolset consistency, and prompt hints.
gweeteve pushed a commit to gweeteve/hermes-agent that referenced this pull request Jun 2, 2026
…h#6437)

Adds Apple iMessage as a gateway platform via BlueBubbles macOS server.

Architecture:
- Webhook-based inbound (event-driven, no polling/dedup needed)
- Email/phone → chat GUID resolution for user-friendly addressing
- Private API safety (checks helper_connected before tapback/typing)
- Inbound attachment downloading (images, audio, documents cached locally)
- Markdown stripping for clean iMessage delivery
- Smart progress suppression for platforms without message editing

Based on PR NousResearch#5869 by @benjaminsehl (webhook architecture, GUID resolution,
Private API safety, progress suppression) with inbound attachment downloading
from PR NousResearch#4588 by @1960697431 (attachment cache routing).

Integration points: Platform enum, env config, adapter factory, auth maps,
cron delivery, send_message routing, channel directory, platform hints,
toolset definition, setup wizard, status display.

27 tests covering config, adapter, webhook parsing, GUID resolution,
attachment download routing, toolset consistency, and prompt hints.
Egavasyug pushed a commit to Egavasyug/hermes-agent that referenced this pull request Jun 10, 2026
…h#6437)

Adds Apple iMessage as a gateway platform via BlueBubbles macOS server.

Architecture:
- Webhook-based inbound (event-driven, no polling/dedup needed)
- Email/phone → chat GUID resolution for user-friendly addressing
- Private API safety (checks helper_connected before tapback/typing)
- Inbound attachment downloading (images, audio, documents cached locally)
- Markdown stripping for clean iMessage delivery
- Smart progress suppression for platforms without message editing

Based on PR NousResearch#5869 by @benjaminsehl (webhook architecture, GUID resolution,
Private API safety, progress suppression) with inbound attachment downloading
from PR NousResearch#4588 by @1960697431 (attachment cache routing).

Integration points: Platform enum, env config, adapter factory, auth maps,
cron delivery, send_message routing, channel directory, platform hints,
toolset definition, setup wizard, status display.

27 tests covering config, adapter, webhook parsing, GUID resolution,
attachment download routing, toolset consistency, and prompt hints.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

mcp_bluebubbles_send_imessage failing with empty error message

1 participant