v0.2.0 — automatic push mode
·
4 commits
to main
since this release
Highlights
Inbound iMessages now auto-inject into your LLM session. Install the MCP server, register it with Claude Code or the codex fork, and texts from allowlisted handles land in the session as channel events — no list_messages poll loop, no bridge, no tmux watcher.
What changed
- New watch mode, ON by default. The MCP server tails
~/Library/Messages/chat.dbin the background and emits anotifications/claude/channelJSON-RPC notification for every new allowlisted inbound iMessage. Claude Code and the codex fork both consume this method. - Codex filesystem channel support. If
CODEX_CHANNEL_DIRis set, the same event is also written as a JSON envelope under<dir>/inbox/<name>.jsonin the fork's expected shape (hardlink-atomic,kind = "brief", spec filename). --watch/--no-watchCLI flags.DKDC_IO_WATCH=0disables.DKDC_IO_WATCH_INTERVAL_MStunes the poll cadence (default 750 ms, min 100 ms).- End-to-end integration tests at
crates/imessage-mcp/tests/watch_push.rsexercise both emission paths and the allowlist gate. - Repo renamed from
dkdc-io/imessage-mcptodkdc-io/imessage. Crate and binary names staydkdc-io-imessage.
Full details: CHANGELOG.md.
Install
cargo install dkdc-io-imessageThen grant Full Disk Access, populate ~/.config/dkdc-io/imessage/access.toml, and point your LLM CLI at dkdc-io-imessage --stdio. Full setup in the crate README.
Security
Allowlist is the only access surface. Non-allowlisted senders are never pushed. Groups and SMS are dropped for now — only service = 'iMessage' and chat.style = 45 (DM) rows flow through. Empty allowlist still fails closed.