AI Executive Assistant for macOS via iMessage
Runs entirely on your Mac — no cloud, no API keys, no subscriptions.
Download · Features · Setup · Development · Architecture
All builds are code-signed with Developer ID. Right-click → Open on first launch.
| Chip | Installer | Zip |
|---|---|---|
| Apple Silicon (M1–M4) | TextMyAgent-2.4.0-arm64.dmg | zip |
| Intel | TextMyAgent-2.4.0.dmg | zip |
- Native iMessage — Reads and responds to messages directly from Messages.app
- On-Device AI — Powered by Google's Gemma 4 E4B model via
node-llama-cpp. Zero cloud dependency. - Privacy First — All data stays on your Mac in a local SQLite database
- Dashboard — Beautiful Next.js control panel for monitoring and configuration
- Real-time — 2-second polling for near-instant responses
- Memory — Remembers user facts and preferences across conversations with auto-expiration
- Reminders & Triggers — Schedule reminders and create automation triggers via natural language
- Contact Resolution — Resolves phone numbers to real names via macOS Contacts
- GPU Accelerated — Configurable GPU layer offloading for fast inference on Apple Silicon
- Auto-Update — Built-in update checking with user-controlled downloads
| Requirement | Minimum |
|---|---|
| macOS | 12.0 (Monterey) |
| RAM | 8 GB (16 GB recommended) |
| Disk | ~4 GB (model download) |
| Architecture | Apple Silicon or Intel |
| Permission | Purpose |
|---|---|
| Full Disk Access | Read iMessage database (~/Library/Messages/chat.db) |
| Automation | Send messages via Messages.app |
| Contacts (optional) | Display contact names instead of phone numbers |
- Download & install — Drag TextMyAgent to Applications, right-click → Open
- Grant permissions — The setup wizard walks you through Full Disk Access, Automation, and Contacts
- Download the model — Gemma 4 E4B downloads automatically (~3.4 GB, one-time)
- Launch — The agent starts responding to your iMessages
No API keys or accounts needed.
| Page | Description |
|---|---|
| Overview | System status, agent state, quick stats |
| Messages | Conversation history |
| Users | Contact management |
| Tools | AI tools, reminders, automation triggers |
| Memory | User facts, summaries, knowledge base |
| Logs | Real-time application logs |
| Usage | Token usage statistics |
| Security | Rate limiting, budget controls, security events |
| Settings | Model config, persona, tools, memory, security |
git clone https://github.com/ever-just/textmyagent-desktop.git
cd textmyagent-desktop
npm install
cd dashboard && npm install && cd ..
npm run dev # development mode
npm test # run 155 tests
npm run dist:mac # build signed DMGs| Command | Description |
|---|---|
npm run dev |
Dev mode (dashboard + electron) |
npm test |
Run test suite |
npm run build |
Build dashboard + electron |
npm run dist:mac |
Package signed macOS DMGs |
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ iMessage DB │────▶│ iMessageService │────▶│ AgentService │
│ (chat.db) │ │ (polling) │ │ (processing) │
└─────────────────┘ └──────────────────┘ └────────┬────────┘
│
▼
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Messages.app │◀────│ AppleScript │◀────│ LocalLLMService│
│ (send) │ │ (osascript) │ │ (Gemma 4 E4B) │
└─────────────────┘ └──────────────────┘ └─────────────────┘
| Layer | Technology |
|---|---|
| Desktop | Electron 39 |
| Dashboard | Next.js 15, React 19, Tailwind CSS |
| AI | Gemma 4 E4B via node-llama-cpp |
| Database | better-sqlite3 |
| Contacts | node-mac-contacts |
Builds are signed with Developer ID Application certificate. Identity configured in electron-builder.yml.
# One-time: store credentials in Keychain
xcrun notarytool store-credentials "textmyagent-notarize" \
--key ~/.appstoreconnect/private_keys/AuthKey_YOURKEYID.p8 \
--key-id YOURKEYID \
--issuer YOUR-ISSUER-UUID
# Build with notarization
npm run dist:mac
# Skip notarization (dev builds)
SKIP_NOTARIZATION=true npm run dist:mac| Issue | Fix |
|---|---|
| Agent not starting | Check Full Disk Access is enabled in System Settings |
| Messages not sending | Check Automation permission for Messages.app |
| Model won't load | Ensure ~4 GB free disk space; try Re-download in Settings |
| Slow inference | Increase GPU Layers in Settings (requires model reload) |
MIT License
Created by Weldon Makori