@@ -52,6 +52,33 @@ swift build -c release
5252# Binary is at .build/release/imessage-max
5353```
5454
55+ ### Stable Dev Install Workflow
56+
57+ For local development, use the built-in ` make ` workflow in ` swift/ ` instead of
58+ manually rebuilding and re-granting permissions:
59+
60+ ``` bash
61+ cd swift
62+ make setup-signing # one-time: create persistent signing identity
63+ make install # build, sign, restart launchd service, verify health
64+ ```
65+
66+ Why this matters:
67+ - it signs the binary with a persistent local identity so Full Disk Access can persist across rebuilds
68+ - it replaces the release binary in place
69+ - it restarts the launchd-managed ` local.imessage-max ` service on port ` 8080 `
70+ - it verifies the service is healthy after install
71+
72+ Useful commands:
73+
74+ ``` bash
75+ cd swift
76+ make status # show process, signature, version, health
77+ make restart # restart the launchd service
78+ make logs # tail the stderr log
79+ make clean # remove debug artifacts and clear logs
80+ ```
81+
5582## Setup
5683
5784### 1. Grant Full Disk Access
@@ -107,6 +134,20 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
107134
108135The MCP should now appear in Claude's tools. You can verify with the ` diagnose ` tool.
109136
137+ ### Launchd Service
138+
139+ If you are running iMessage Max as a background HTTP service, the intended
140+ development path is the launchd-managed binary at:
141+
142+ ` ~/Library/LaunchAgents/local.imessage-max.plist `
143+
144+ That plist should point at:
145+
146+ ` /Users/YOU/.../imessage-max/swift/.build/release/imessage-max --http --port 8080 `
147+
148+ The ` make install ` workflow updates that binary in place and restarts the
149+ service cleanly.
150+
110151## Tools
111152
112153### find_chat
0 commit comments