# Signal Channel Adapter Checklist Date: 2026-02-16 Status: completed ## Scope - Add a first-class Signal channel adapter using `signal-cli`. - Support direct-message and group routing with existing channel policy semantics. ## Completed - Added `SignalAdapter` in `src/channels/signal/adapter.ts`: - process-backed integration via `signal-cli` - outbound send for direct peers and groups (`group:` convention) - inbound polling loop with JSON parsing for `receive` output - allowlist gating for DMs/groups + optional DM pairing flow - group mention gating with configurable `mention_name` - Registered channel exports: - `src/channels/signal/index.ts` - `src/channels/index.ts` - Added config schema support in `src/config/schema.ts`: - `signal.account` - `signal.signal_cli_path` - `signal.allowed_numbers` - `signal.allowed_group_ids` - `signal.require_mention` - `signal.mention_name` - `signal.poll_interval_ms` - `signal.send_timeout_ms` - Wired daemon registration in `src/daemon/channels.ts`. - Extended gateway service discovery in `src/gateway/handlers/services.ts`. - Updated docs: - `README.md` channel/config docs - `config/default.yaml` template block for Signal - Added tests: - `src/channels/signal/adapter.test.ts` - `src/config/schema.test.ts` signal coverage - `src/gateway/handlers/services.test.ts` signal service coverage ## Verification - `pnpm test:run src/channels/signal/adapter.test.ts src/config/schema.test.ts src/gateway/handlers/services.test.ts` - `pnpm typecheck`