Skip to content

Add Linq channel for cross-platform iMessage/RCS/SMS#836

Merged
chumyin merged 2 commits into
zeroclaw-labs:mainfrom
ghsmc:feat/linq-channel
Feb 19, 2026
Merged

Add Linq channel for cross-platform iMessage/RCS/SMS#836
chumyin merged 2 commits into
zeroclaw-labs:mainfrom
ghsmc:feat/linq-channel

Conversation

@ghsmc
Copy link
Copy Markdown
Contributor

@ghsmc ghsmc commented Feb 18, 2026

Why this matters

ZeroClaw's iMessage channel currently depends on AppleScript, which locks it to macOS. Linq (linqapp.com) exposes iMessage, RCS, and SMS over a REST API — so with this channel, ZeroClaw gets native iMessage support on any platform through webhooks. No Mac required.

What's in here

  • src/channels/linq.rsLinqChannel implementing the Channel trait, following the same patterns as WhatsAppChannel
    • Send/receive via Linq V3 Partner API
    • HMAC-SHA256 webhook signature verification with timestamp staleness check
    • Sender allowlist (exact match or wildcard)
    • Typing indicators
    • Health check via GET /v3/phonenumbers
    • 18 unit tests
  • src/gateway/mod.rsPOST /linq webhook endpoint with signature verification
  • src/channels/mod.rs — Module registration, doctor check, channel startup
  • src/config/schema.rsLinqConfig struct
  • src/onboard/wizard.rs — Setup wizard step with live connection test

Config

[channels_config.linq]
api_token = "your-linq-partner-api-token"
from_phone = "+12223334444"
signing_secret = "your-webhook-signing-secret"
allowed_senders = ["+15551234567"]  # or ["*"] for all

Note on #656

Issue #656 was closed with a comment claiming this was implemented, but no PR was ever created or merged. This is the actual implementation.

Test plan

  • cargo build --release compiles cleanly
  • cargo test — all 1867 tests pass (including 18 new Linq tests)
  • cargo clippy -- -D warnings — zero warnings
  • cargo fmt --check — formatted
  • Manual webhook test with Linq sandbox (pending API credentials in staging)

@github-actions github-actions Bot added channel Auto scope: src/channels/** changed. config Auto scope: src/config/** changed. gateway Auto scope: src/gateway/** changed. onboard Auto scope: src/onboard/** changed. labels Feb 18, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Feb 18, 2026

PR intake checks found warnings (non-blocking)

Fast safe checks found advisory issues. CI lint/test/build gates still enforce merge quality.

  • Missing required PR template sections: ## Summary, ## Validation Evidence (required), ## Security Impact (required), ## Privacy and Data Hygiene (required), ## Rollback Plan (required)
  • Incomplete required PR template fields: summary problem, summary why it matters, summary what changed, validation commands, security risk/mitigation, privacy status, rollback plan

Action items:

  1. Complete required PR template sections/fields.
  2. Remove tabs, trailing whitespace, and merge conflict markers from added lines.
  3. Re-run local checks before pushing:
    • ./scripts/ci/rust_quality_gate.sh
    • ./scripts/ci/rust_strict_delta_gate.sh
    • ./scripts/ci/docs_quality_gate.sh

Run logs: https://github.com/zeroclaw-labs/zeroclaw/actions/runs/22171599443

Detected blocking line issues (sample):

  • none

Detected advisory line issues (sample):

  • none

@github-actions github-actions Bot added size: XL Auto size: >1000 non-doc changed lines. risk: high Auto risk: security/runtime/gateway/tools/workflows. config: core Auto module: config core files changed. gateway: core Auto module: gateway core files changed. onboard: wizard Auto module: onboard/wizard changed. and removed config Auto scope: src/config/** changed. gateway Auto scope: src/gateway/** changed. onboard Auto scope: src/onboard/** changed. labels Feb 18, 2026
@chumyin chumyin self-assigned this Feb 19, 2026
@github-actions github-actions Bot added config Auto scope: src/config/** changed. gateway Auto scope: src/gateway/** changed. onboard Auto scope: src/onboard/** changed. and removed config Auto scope: src/config/** changed. gateway Auto scope: src/gateway/** changed. onboard Auto scope: src/onboard/** changed. labels Feb 19, 2026
ghsmc and others added 2 commits February 19, 2026 14:38
The existing iMessage channel relies on AppleScript and only works on macOS.
Linq provides a REST API for iMessage, RCS, and SMS — this gives ZeroClaw
native iMessage support on any platform via webhooks.

Implements LinqChannel following the same patterns as WhatsAppChannel:
- Channel trait impl (send, listen, health_check, typing indicators)
- Webhook handler with HMAC-SHA256 signature verification
- Sender allowlist filtering
- Onboarding wizard step with connection testing
- 18 unit tests covering parsing, auth, and signature verification

Resolves zeroclaw-labs#656 — the prior issue was closed without a merged PR, so this
is the actual implementation.
@github-actions github-actions Bot added config Auto scope: src/config/** changed. gateway Auto scope: src/gateway/** changed. onboard Auto scope: src/onboard/** changed. and removed config Auto scope: src/config/** changed. gateway Auto scope: src/gateway/** changed. onboard Auto scope: src/onboard/** changed. labels Feb 19, 2026
@chumyin
Copy link
Copy Markdown
Contributor

chumyin commented Feb 19, 2026

Thanks for the thoughtful Linq integration, and congratulations on getting this cross-platform channel landed. I rebased the branch onto latest main, resolved conflicts, and added a small signature-verification compatibility hardening (accepts both raw hex and sha256=... format, including uppercase hex) with tests. Full test suite and strict delta checks are green on the updated branch.

@chumyin chumyin merged commit bc0be9a into zeroclaw-labs:main Feb 19, 2026
2 checks passed
@ghsmc
Copy link
Copy Markdown
Contributor Author

ghsmc commented Feb 20, 2026

@chumyin thanks for the verification fix, appreciate the quick response to my PR. Zeroclaw looking great. Keep grinding. Also if you want to add Yale to the "Built by students and members of the Harvard, MIT, and Sundai.Club communities," for pure credibility, it works that I'm CS at Yale.

Been doing some cool stuff with my ZeroClaw, Kalshi trading, also wired it up to Resy so that it can make reservations for me. Pretty amazing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

channel Auto scope: src/channels/** changed. config: core Auto module: config core files changed. gateway: core Auto module: gateway core files changed. onboard: wizard Auto module: onboard/wizard changed. risk: high Auto risk: security/runtime/gateway/tools/workflows. size: XL Auto size: >1000 non-doc changed lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants