MIT License

项目介绍

openclaw/imsg 是一个托管在 GitHub 上的开源项目,主要使用 Swift 编写,采用 MIT License 许可证,目前获得 1.4k 个 Star、195 次 Fork。

仓库全名
openclaw/imsg
开源许可证
MIT License
Star 数
1.4k
Fork 数
195
未关闭 Issue
9

README 摘要

imsg 💬 — Messages, piped. imsg is a Swift CLI for reading, watching, and sending iMessage and SMS from macOS. It reads the local Messages database, sends through Messages.app automation, and exposes NDJSON and JSON-RPC for scripts and agents. That's the whole pitch: read directly, stream updates, and ask Messages.app to send. Install Homebrew is the smallest path on macOS: imsg requires macOS 14 or newer. Signed…

完整内容见 GitHub 原始 README 或本页 。

常见问题

imsg 用什么语言开发?

主要使用 Swift 编写,采用 MIT License 许可证,目前有 1.4k 个 Star。

imsg 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 imsg 的源码?

可以直接克隆仓库:git clone https://github.com/openclaw/imsg.git,默认分支为 main;安装与运行步骤见仓库 README。

imsg 最近还在维护吗?

仓库最近一次更新为 1 天前,当前有 9 个未关闭 Issue;Star 数为 1.4k,可作为社区活跃度的参考。

简要分析

热度分
1805
价值分
902
活跃状态
活跃

语言占比

C
C++
JavaScript
Makefile
Objective-C
Pawn
Shell
Swift

Release

README

imsg 💬 — Messages, piped.

CI GitHub release macOS 14+ Swift 6.1+ License Homebrew Docs

imsg banner

imsg is a Swift CLI for reading, watching, and sending iMessage and SMS from macOS. It reads the local Messages database, sends through Messages.app automation, and exposes NDJSON and JSON-RPC for scripts and agents.

imsg chats --limit 10 --json | jq -s
imsg history --chat-id 42 --limit 20 --attachments --json | jq -s
imsg watch --chat-id 42 --reactions --json
imsg send --to "+14155551212" --text "on my way"

That’s the whole pitch: read directly, stream updates, and ask Messages.app to send.

Install

Homebrew is the smallest path on macOS:

brew install steipete/tap/imsg
imsg --version

imsg requires macOS 14 or newer. Signed macOS builds and Linux x86_64 read-only builds are also available from GitHub Releases. Linux reads a chat.db copied from macOS; it does not connect to iMessage or send messages. See the Linux guide.

Quick start

Grant your terminal Full Disk Access in System Settings → Privacy & Security, then reopen it. imsg needs that permission to read ~/Library/Messages/chat.db.

# Find a chat and note its id.
imsg chats --limit 3

# Read its ten most recent messages.
imsg history --chat-id 42 --limit 10

Use an id from the first command in place of 42. The five-minute quickstart continues with live watching and sending.

Core workflows

Goal Start here
List chats and inspect their identifiers Chats and groups
Read or search local history History
Stream new messages, edits, unsends, and tapbacks Watch
Send text, files, and standard tapbacks Send and attachments
Count messages and media Statistics
Consume stable NDJSON or a long-running stdio API JSON schema and JSON-RPC
Generate shell completions or model-ready CLI help Completions

Read commands open the database in SQLite read-only mode. watch follows database and WAL filesystem events, with a polling fallback when macOS drops an event or rotates a sidecar file.

Permissions

Full Disk Access is required for local database reads. Sending and standard tapbacks also require Automation → Messages; Contacts access is optional and only adds resolved names. The permissions guide covers parent-process grants and stale TCC entries, while troubleshooting maps common failures to their likely gate.

SSH sessions can also resolve contact names through the Mac’s read-only AddressBook database when the SSH service has Full Disk Access and Contacts.framework is unavailable. See Contacts over SSH.

For SMS, enable Text Message Forwarding on the paired iPhone. imsg send uses Messages.app’s AppleScript surface and cannot force a particular outgoing number when several numbers share one Apple ID.

JSON and automation

--json emits one JSON object per line. Human progress and warnings stay on stderr, so stdout remains safe to stream. Pipe finite commands through jq -s when you want one array.

Numeric selectors are validated before work starts: chat IDs, limits, and poll option indices must be positive integers; message-part indices can also be zero. Malformed or overflowing values produce an error instead of selecting a default target. Defaults apply only when an option is omitted.

imsg chats --json | jq -s
imsg rpc
imsg completions llm

The JSON schema documents chats, messages, attachments, reactions, polls, scheduled messages, and statistics. The JSON-RPC reference covers the long-running stdio transport used by agents and gateways.

Advanced IMCore

Normal chats, history, watch, send, react, and read-only RPC workflows do not use private frameworks or process injection.

Read receipts, typing indicators, rich sends, message mutation, stickers, polls, and chat management use an injected helper inside Messages.app. They require SIP to be disabled and may be blocked by library validation or private-entitlement checks on current macOS releases. Start with Advanced IMCore, then use the bridge command reference for the full CLI surface and IPC layout.

imsg chat-create accepts phone numbers and email addresses you have never contacted. It creates missing handles through the active iMessage account and checks every recipient with IDS before creating the chat. You do not need to type recipients into Messages first.

Documentation

The complete guide lives at imsg.sh. Useful entry points include install, permissions, history, watch, send, attachments, Linux, and troubleshooting.

Development

make lint
make test
make build

IMsgCore contains the reusable Swift core, imsg contains the CLI, and IMsgHelper contains the optional injected helper. The package requires Swift 6.1 or newer and targets macOS 14 or newer.

macOS CI uses the Apple Silicon xcode-27 runner and its default Xcode 27, preserving the macOS 14 deployment target and verifying Intel binaries under Rosetta. CI pins Swift 6.4.0 on Linux, Node 26.12.1 for docs tests, and SwiftLint 0.65.1. make lint treats formatting and lint findings as errors. scripts/check-linux.sh runs Linux tests and builds in the pinned Swift container, checks the standalone release archive in Ubuntu without Swift, and runs docs tests with the host’s Node installation. Crabbox hydration installs the pinned Node version.

License

MIT. See LICENSE. Not affiliated with Apple; iMessage and SMS are trademarks of their respective owners.

评论

暂无评论