Skip to content

Commit 459cb5d

Browse files
committed
docs: document stable development install workflow
1 parent 547bbb0 commit 459cb5d

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

108135
The 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

swift/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,33 @@ swift build -c release
99
# Binary: .build/release/imessage-max
1010
```
1111

12+
## Dev Install Workflow
13+
14+
Use the `Makefile` for normal development updates:
15+
16+
```bash
17+
make setup-signing # one-time: create persistent signing identity
18+
make install # build, sign, restart launchd service, verify health
19+
```
20+
21+
This workflow exists to avoid the usual macOS development pain:
22+
- the release binary path stays stable
23+
- the binary is signed with a persistent local identity
24+
- Full Disk Access can persist across rebuilds
25+
- the launchd-managed HTTP service is restarted automatically
26+
27+
Useful targets:
28+
29+
```bash
30+
make status
31+
make restart
32+
make logs
33+
make clean
34+
```
35+
36+
The launchd label used by this workflow is `local.imessage-max`, and the
37+
default HTTP port is `8080`.
38+
1239
## Requirements
1340

1441
- macOS 13+ (Ventura)

0 commit comments

Comments
 (0)