← Back to PRs

#9594: feat: add SimpleX messaging channel

by dangoldbj open 2026-02-05 12:07 View on GitHub →
docs app: web-ui size: XL
## Summary This PR adds a **SimpleX messaging channel** backed by the local `simplex-chat` CLI. It supports send/receive (text and media), pairing with allowlist enforcement, message actions, invite link and QR generation, onboarding status, and Control UI configuration parity. The integration is implemented as an in-repo channel plugin and is fully opt-in. ## Why This Matters - Expands the channel set with a privacy-preserving, end-to-end encrypted option - Runs locally via the official `simplex-chat` CLI (no hosted bot service) - Addresses gaps in the current channel mix: - no phone number requirement - no third-party bot API dependency - avoids reliance on unofficial CLIs - Low risk to existing channels, as the implementation is isolated and only active when configured ## Implementation Details - SimpleX channel implementation with CLI lifecycle management (managed and external modes) - Gateway method for invite/address links with QR generation - Control UI card and config schema (DM policy, history limit, streaming block + coalesce) - Onboarding adapter so the setup wizard reflects configured / not-configured state - Unit tests covering allowlist enforcement, WebSocket client behavior, invite flow, and account config ## Documentation - Added `docs/channels/simplex.md` with setup and configuration instructions - Linked from `docs/channels/index.md` ## Testing - `pnpm vitest run --config vitest.extensions.config.ts` ## Notes for Reviewers - SimpleX is optional and only runs when explicitly enabled and configured - Uses existing routing and channel abstractions; no changes to core routing - I’m happy to help maintain this integration and address follow-up issues as SimpleX evolves <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> - Adds a new opt-in **SimpleX** channel plugin backed by the local `simplex-chat` CLI + WebSocket API, including routing, pairing/allowlist policy, media, and message actions. - Introduces a SimpleX Control UI card + config schema wiring so the channel can be configured alongside existing channels. - Implements a SimpleX monitor that consumes WS events, enforces DM/group policy, downloads media within limits, and dispatches inbound messages into the existing reply/session pipeline. - Adds docs and tests to cover onboarding, allowlist enforcement, WS client behavior, and invite/pairing flows. <h3>Confidence Score: 5/5</h3> - This PR looks safe to merge based on the reviewed changes, with prior critical issues appearing addressed in the head SHA. - In the head commit, the WebSocket client’s connect lifecycle now properly settles on close-before-open and rejects/clears pending commands on disconnect; outbound and pairing approval now enforce enabled/configured guards; and the monitor path correctly skips over-limit downloads and maps blockStreaming semantics as expected. I did not find additional, definite pre-merge bugs beyond the previously-threaded items (which appear resolved in this SHA). - extensions/simplex/src/simplex-monitor.ts (policy + routing/identity normalization), extensions/simplex/src/simplex-ws-client.ts (connection/pending lifecycle) <!-- greptile_other_comments_section --> <!-- /greptile_comment -->

Most Similar PRs