myceliumail 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/.context7 +87 -0
  2. package/.eslintrc.json +29 -0
  3. package/.github/workflows/publish.yml +108 -0
  4. package/CHANGELOG.md +85 -0
  5. package/README.md +295 -162
  6. package/desktop/README.md +102 -0
  7. package/desktop/assets/icon.icns +0 -0
  8. package/desktop/assets/icon.iconset/icon_128x128.png +0 -0
  9. package/desktop/assets/icon.iconset/icon_128x128@2x.png +0 -0
  10. package/desktop/assets/icon.iconset/icon_16x16.png +0 -0
  11. package/desktop/assets/icon.iconset/icon_16x16@2x.png +0 -0
  12. package/desktop/assets/icon.iconset/icon_256x256.png +0 -0
  13. package/desktop/assets/icon.iconset/icon_256x256@2x.png +0 -0
  14. package/desktop/assets/icon.iconset/icon_32x32.png +0 -0
  15. package/desktop/assets/icon.iconset/icon_32x32@2x.png +0 -0
  16. package/desktop/assets/icon.iconset/icon_512x512.png +0 -0
  17. package/desktop/assets/icon.iconset/icon_512x512@2x.png +0 -0
  18. package/desktop/assets/icon.png +0 -0
  19. package/desktop/assets/tray-icon.png +0 -0
  20. package/desktop/main.js +257 -0
  21. package/desktop/package-lock.json +4198 -0
  22. package/desktop/package.json +48 -0
  23. package/desktop/preload.js +11 -0
  24. package/dist/bin/myceliumail.js +2 -0
  25. package/dist/bin/myceliumail.js.map +1 -1
  26. package/dist/commands/key-announce.d.ts +6 -0
  27. package/dist/commands/key-announce.d.ts.map +1 -0
  28. package/dist/commands/key-announce.js +63 -0
  29. package/dist/commands/key-announce.js.map +1 -0
  30. package/docs/AGENT_STARTER_KIT.md +145 -0
  31. package/docs/DEPLOYMENT.md +59 -0
  32. package/docs/LESSONS_LEARNED.md +127 -0
  33. package/docs/MCP_STARTER_KIT.md +117 -0
  34. package/mcp-server/README.md +143 -0
  35. package/mcp-server/assets/icon.png +0 -0
  36. package/mcp-server/myceliumail-mcp-1.0.0.tgz +0 -0
  37. package/mcp-server/package-lock.json +1141 -0
  38. package/mcp-server/package.json +50 -0
  39. package/mcp-server/src/lib/config.ts +55 -0
  40. package/mcp-server/src/lib/crypto.ts +150 -0
  41. package/mcp-server/src/lib/storage.ts +267 -0
  42. package/mcp-server/src/server.ts +387 -0
  43. package/mcp-server/tsconfig.json +26 -0
  44. package/package.json +13 -4
  45. package/src/bin/myceliumail.ts +54 -0
  46. package/src/commands/broadcast.ts +70 -0
  47. package/src/commands/dashboard.ts +19 -0
  48. package/src/commands/inbox.ts +75 -0
  49. package/src/commands/key-announce.ts +70 -0
  50. package/src/commands/key-import.ts +35 -0
  51. package/src/commands/keygen.ts +44 -0
  52. package/src/commands/keys.ts +55 -0
  53. package/src/commands/read.ts +97 -0
  54. package/src/commands/send.ts +89 -0
  55. package/src/commands/watch.ts +101 -0
  56. package/src/dashboard/public/app.js +523 -0
  57. package/src/dashboard/public/index.html +75 -0
  58. package/src/dashboard/public/styles.css +68 -0
  59. package/src/dashboard/routes.ts +128 -0
  60. package/src/dashboard/server.ts +33 -0
  61. package/src/lib/config.ts +104 -0
  62. package/src/lib/crypto.ts +210 -0
  63. package/src/lib/realtime.ts +109 -0
  64. package/src/storage/local.ts +209 -0
  65. package/src/storage/supabase.ts +336 -0
  66. package/src/types/index.ts +53 -0
  67. package/supabase/migrations/000_myceliumail_setup.sql +93 -0
  68. package/supabase/migrations/001_enable_realtime.sql +10 -0
  69. package/tsconfig.json +28 -0
package/README.md CHANGED
@@ -1,229 +1,362 @@
1
1
  # 🍄 Myceliumail
2
2
 
3
- > End-to-End Encrypted Messaging for AI Agents
3
+ **Encrypted messaging for AI agents.**
4
4
 
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ When Claude Code discovers something Cursor needs to know, there's no way to tell it. Myceliumail fixes that—async, encrypted, agent-to-agent communication that works whether agents are online simultaneously or not.
6
6
 
7
- Myceliumail is the nervous system of the Treebird ecosystem - enabling AI coding agents to communicate securely across tools and repositories. Named after the underground fungal network that connects forest trees, it creates the **"agent wide web."**
7
+ ---
8
+
9
+ ## Why This Exists
10
+
11
+ AI coding agents have evolved from autocomplete to autonomous. Claude Code, Cursor, Windsurf, GitHub Copilot—they're writing features, fixing bugs, refactoring code. But when multiple agents work on the same codebase, chaos follows. Merge conflicts, duplicated work, stepping on each other's changes.
12
+
13
+ The missing piece isn't more intelligence—it's coordination. We built decades of tooling for humans to collaborate (Slack, email, Git). We never built tools for AI agents to collaborate.
14
+
15
+ Myceliumail is named after mycelium—the underground fungal network that lets trees share resources and warnings across a forest. It's the communication layer for the emerging model of development where humans set goals and multiple AI agents coordinate to achieve them.
16
+
17
+ ---
18
+
19
+ ## Current Status
20
+
21
+ **This is early-stage software.** Built in public, improving weekly.
8
22
 
9
- ## Features
23
+ | Component | Status |
24
+ |-----------|--------|
25
+ | CLI messaging | ✅ Functional (`send`, `inbox`, `read`, `broadcast`, `watch`) |
26
+ | MCP Server | ✅ 8 tools for Claude Desktop |
27
+ | E2E encryption | ✅ NaCl (TweetNaCl.js) |
28
+ | Supabase cloud sync | ✅ With automatic local fallback |
29
+ | Web dashboard | ✅ Live updates at localhost:3737 |
30
+ | Real-time notifications | ✅ Desktop alerts via watch command |
31
+ | Channels | 📋 Schema exists, CLI not yet implemented |
32
+ | Agent discovery | 📋 Planned |
10
33
 
11
- - **🔐 End-to-End Encryption** - NaCl-based encryption keeps messages private
12
- - **📬 Async Messaging** - Send/receive messages across agent boundaries
13
- - **📢 Channels** - Group messaging for multi-agent coordination
14
- - **🌐 Presence** - Know which agents are online and active
15
- - **⚡ CLI-First** - Designed for terminal-based AI agents
34
+ ---
16
35
 
17
- ## 🚀 Quick Start
36
+ ## Quick Start
18
37
 
19
- ### Installation
38
+ ### CLI Installation
20
39
 
21
40
  ```bash
41
+ # From npm
22
42
  npm install -g myceliumail
43
+
44
+ # From source
45
+ git clone https://github.com/treebird7/Myceliumail
46
+ cd Myceliumail && npm install && npm run build && npm link
23
47
  ```
24
48
 
25
- ### Setup
49
+ ### MCP Server (Claude Desktop)
26
50
 
27
- ```bash
28
- # Generate your encryption keypair
29
- mycmail keygen
51
+ The MCP server gives Claude direct access to messaging tools.
30
52
 
31
- # Configure your agent identity
32
- export MYCELIUMAIL_AGENT_ID="my-agent"
33
- export SUPABASE_URL="https://your-project.supabase.co"
34
- export SUPABASE_ANON_KEY="your-anon-key"
35
-
36
- # Or create a .env file
37
- cat > .env << EOF
38
- MYCELIUMAIL_AGENT_ID=my-agent
39
- SUPABASE_URL=https://your-project.supabase.co
40
- SUPABASE_ANON_KEY=your-anon-key
41
- EOF
53
+ ```bash
54
+ npm install -g myceliumail-mcp
42
55
  ```
43
56
 
44
- **Note:** The CLI automatically loads `.env` files using `dotenv`. Environment variables take precedence over `.env` file values.
57
+ Add to Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
58
+
59
+ ```json
60
+ {
61
+ "mcpServers": {
62
+ "myceliumail": {
63
+ "command": "node",
64
+ "args": ["/path/to/mcp-server/dist/server.js"],
65
+ "env": {
66
+ "MYCELIUMAIL_AGENT_ID": "claude-desktop",
67
+ "SUPABASE_URL": "https://your-project.supabase.co",
68
+ "SUPABASE_ANON_KEY": "your-anon-key"
69
+ }
70
+ }
71
+ }
72
+ }
73
+ ```
45
74
 
46
- ### Basic Usage
75
+ **Important:** Restart Claude Desktop fully (not just close window) after config changes.
47
76
 
48
- ```bash
49
- # Check your inbox
50
- mycmail inbox
77
+ ---
51
78
 
52
- # Send a message
53
- mycmail send other-agent "Hello from the mycelium!"
79
+ ## Configuration
54
80
 
55
- # Send an encrypted message
56
- mycmail send other-agent --encrypt "Secret coordination details"
81
+ Myceliumail checks configuration in this order: environment variables → config file → defaults.
57
82
 
58
- # Reply to a message
59
- mycmail reply <message-id> "Got it, working on it now"
60
- ```
83
+ ### Environment Variables
61
84
 
62
- ## 📖 Commands
85
+ | Variable | Required | Default | Description |
86
+ |----------|----------|---------|-------------|
87
+ | `MYCELIUMAIL_AGENT_ID` | Yes | `anonymous` | Your agent's identity |
88
+ | `SUPABASE_URL` | No | — | Cloud storage URL |
89
+ | `SUPABASE_ANON_KEY` | No | — | Supabase API key |
90
+ | `MYCELIUMAIL_STORAGE` | No | `auto` | Storage mode: `auto`, `supabase`, or `local` |
63
91
 
64
- ### Messaging
92
+ ### Config File
65
93
 
66
- | Command | Description |
67
- |---------|-------------|
68
- | `mycmail send <agent> "<msg>"` | Send a message |
69
- | `mycmail inbox` | View incoming messages |
70
- | `mycmail read <id>` | Read a specific message |
71
- | `mycmail reply <id> "<msg>"` | Reply to a message |
72
- | `mycmail archive <id>` | Archive a message |
94
+ Create `~/.myceliumail/config.json`:
73
95
 
74
- ### Encryption
96
+ ```json
97
+ {
98
+ "agent_id": "my-agent",
99
+ "supabase_url": "https://xxx.supabase.co",
100
+ "supabase_key": "eyJ..."
101
+ }
102
+ ```
75
103
 
76
- | Command | Description |
77
- |---------|-------------|
78
- | `mycmail keygen` | Generate your keypair |
79
- | `mycmail keys` | List known public keys |
80
- | `mycmail key-import <agent> <key>` | Import an agent's public key |
104
+ ### Storage Modes
81
105
 
82
- ### Channels
106
+ | Mode | Backend | Use Case |
107
+ |------|---------|----------|
108
+ | `auto` (default) | Supabase with local fallback | General use |
109
+ | `supabase` | Supabase only | Team/cloud deployments |
110
+ | `local` | Local JSON files | Offline/testing |
83
111
 
84
- | Command | Description |
85
- |---------|-------------|
86
- | `mycmail channel create <name>` | Create a new channel |
87
- | `mycmail channel join <name>` | Join an existing channel |
88
- | `mycmail channel post <name> "<msg>"` | Post to a channel |
112
+ Local data paths:
113
+ - Messages: `~/.myceliumail/data/messages.json`
114
+ - Keys: `~/.myceliumail/keys/`
115
+ - Config: `~/.myceliumail/config.json`
89
116
 
90
- ### Network
117
+ ---
91
118
 
92
- | Command | Description |
93
- |---------|-------------|
94
- | `mycmail agents` | List connected agents |
95
- | `mycmail ping <agent>` | Ping an agent |
96
- | `mycmail status --set <status>` | Update your status |
97
- | `mycmail broadcast "<msg>"` | Message all agents |
119
+ ## Usage
98
120
 
99
- ## 🔐 Encryption
121
+ ### CLI Commands
100
122
 
101
- Myceliumail uses **TweetNaCl** for end-to-end encryption:
123
+ ```bash
124
+ # Check your inbox
125
+ mycmail inbox
126
+ 📬 Inbox (3 messages)
127
+ ● 🔐 [a1b2c3d4] From: ssan | Secret Plans | 2025-12-18
128
+ [e5f6g7h8] From: watson | Hello | 2025-12-17
129
+
130
+ # Read a message (partial ID works)
131
+ mycmail read a1b2
132
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
133
+ From: ssan
134
+ Subject: Secret Plans
135
+ 🔐 Encrypted: Yes
136
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
137
+ Here are the project details...
138
+
139
+ # Send encrypted message (encryption is default)
140
+ mycmail send alice "Project Update" -b "The feature is ready"
141
+ ✅ Message sent to alice (🔐 encrypted)
142
+
143
+ # Send plaintext (explicitly)
144
+ mycmail send alice "Quick note" -b "No secrets here" --plaintext
145
+
146
+ # Broadcast to all agents
147
+ mycmail broadcast "API schema changed" -b "Check the new endpoints"
148
+
149
+ # Watch for new messages (real-time)
150
+ mycmail watch
151
+
152
+ # Open web dashboard
153
+ mycmail dashboard
154
+ 🌐 Dashboard: http://localhost:3737
155
+ ```
102
156
 
103
- 1. Each agent generates a keypair with `mycmail keygen`
104
- 2. Agents exchange public keys with `mycmail key-import`
105
- 3. Messages sent with `--encrypt` are encrypted client-side
106
- 4. Only the recipient can decrypt with their private key
157
+ ### Encryption Commands
107
158
 
108
159
  ```bash
109
- # Generate your keys
160
+ # Generate your keypair
110
161
  mycmail keygen
111
- # Output: Your public key: abc123...
162
+ 🔐 Keypair generated for my-agent
163
+
164
+ 📧 Your public key (share with other agents):
165
+ PKbSbbHJY3DstxsqjWjgfi9tP5jjM9fSqEd7BLciex8=
166
+
167
+ # List known keys
168
+ mycmail keys
112
169
 
113
170
  # Import another agent's key
114
- mycmail key-import spidersan-agent def456...
171
+ mycmail key-import spidersan PKbSbbHJY3DstxsqjWjgfi9tP5jjM9fSqEd7BLciex8=
115
172
 
116
- # Send encrypted
117
- mycmail send spidersan-agent --encrypt "Top secret plans"
173
+ # Announce your key (sends to known agents)
174
+ mycmail key-announce
118
175
  ```
119
176
 
120
- ## 🏗️ Architecture
177
+ ### MCP Tools (via Claude)
178
+
179
+ Once configured, Claude can use 8 messaging tools:
180
+
181
+ | Tool | Description |
182
+ |------|-------------|
183
+ | `check_inbox` | List messages (supports `unread_only`, `limit`) |
184
+ | `read_message` | Read & decrypt a message |
185
+ | `send_message` | Send a message (auto-encrypts if keys available) |
186
+ | `reply_message` | Reply to a message |
187
+ | `generate_keys` | Create encryption keypair |
188
+ | `list_keys` | Show all known public keys |
189
+ | `import_key` | Import another agent's public key |
190
+ | `archive_message` | Archive a message |
191
+
192
+ **Example conversations:**
193
+
194
+ > "What messages do I have in my myceliumail inbox?"
195
+ > "Send a message to ssan with subject 'Help needed'"
196
+ > "Generate my encryption keys"
197
+ > "Import spidersan's key: PKbSbbHJY3DstxsqjWjgfi9tP5jjM9fSqEd7BLciex8="
198
+
199
+ ---
200
+
201
+ ## Encryption
202
+
203
+ Myceliumail uses NaCl for end-to-end encryption. The server never sees plaintext—encryption and decryption happen client-side.
204
+
205
+ **Technical details:**
206
+ - Key Exchange: X25519 (Curve25519 ECDH)
207
+ - Symmetric Cipher: XSalsa20 (stream cipher)
208
+ - Authentication: Poly1305 (MAC)
209
+ - Key Sizes: 32 bytes (256-bit) for public/secret keys, 24-byte random nonce per message
210
+
211
+ **How it works:**
212
+ 1. Messages are encrypted by default (use `--plaintext` to disable)
213
+ 2. Sender's public key is included for reply verification
214
+ 3. Automatic decryption on read if your keypair exists
215
+ 4. Private keys stored with `0o600` permissions
216
+
217
+ **Important:** You must generate your keypair (`mycmail keygen`) before sending encrypted messages, and import the recipient's public key before encrypting to them.
218
+
219
+ ---
220
+
221
+ ## Architecture
121
222
 
122
223
  ```
123
- ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
124
- Agent A │ Supabase │ │ Agent B │
125
- │ (mycmail) │────▶│ Database │◀────│ (mycmail) │
126
- └─────────────┘ └─────────────┘ └─────────────┘
127
-
128
- └───────────────────┴───────────────────┘
129
- Encrypted Messages & Channels
224
+ ┌──────────────────────────────────────────────────────────────────┐
225
+ USER INTERFACES
226
+ ├──────────────┬──────────────────┬─────────────────────────────────┤
227
+ │ CLI │ MCP Server │ Web Dashboard │
228
+ │ (mycmail) │ (Claude) (localhost:3737)
229
+ └──────┬───────┴────────┬─────────┴───────────────┬─────────────────┘
230
+ │ │ │
231
+ ▼ ▼ ▼
232
+ ┌──────────────────────────────────────────────────────────────────┐
233
+ │ CORE LIBRARIES │
234
+ ├───────────────────────┬──────────────────────────────────────────┤
235
+ │ lib/crypto.ts │ lib/config.ts │
236
+ │ (NaCl encryption) │ (env + file config) │
237
+ └───────────────────────┴────────────────┬─────────────────────────┘
238
+
239
+
240
+ ┌──────────────────────────────────────────────────────────────────┐
241
+ │ STORAGE ADAPTERS │
242
+ ├───────────────────────┬──────────────────────────────────────────┤
243
+ │ storage/supabase.ts │ storage/local.ts │
244
+ │ (PostgreSQL REST) │ (~/.myceliumail/data/) │
245
+ └───────────────────────┴──────────────────────────────────────────┘
130
246
  ```
131
247
 
132
- **Tech Stack:**
133
- - **CLI**: Node.js + Commander.js
134
- - **Database**: Supabase (PostgreSQL + Realtime)
135
- - **Encryption**: TweetNaCl (NaCl port)
136
- - **Language**: TypeScript
248
+ **Key dependencies:**
249
+ - `commander` CLI framework
250
+ - `tweetnacl` NaCl crypto (audited, no native deps)
251
+ - `@supabase/supabase-js` Realtime subscriptions
252
+ - `fastify` — Web dashboard server
253
+ - `@modelcontextprotocol/sdk` — Official MCP SDK
254
+ - `node-notifier` — Desktop notifications
255
+
256
+ ---
257
+
258
+ ## Supabase Setup
259
+
260
+ For cloud sync and multi-machine messaging:
261
+
262
+ 1. Create a project at [supabase.com](https://supabase.com)
263
+ 2. Run `supabase/migrations/000_myceliumail_setup.sql` in the SQL Editor
264
+ 3. Enable Realtime on the `agent_messages` table
265
+ 4. Copy your project URL and anon key to config
266
+
267
+ ---
268
+
269
+ ## Known Limitations
270
+
271
+ **By design:**
272
+ - No key server — Keys exchanged manually out-of-band (prevents MITM via server)
273
+ - No deletion — Messages can only be archived
274
+ - Case-sensitive agent IDs — `alice` ≠ `Alice`
275
+
276
+ **Current limitations:**
277
+ - Channels exist in schema but not yet in CLI
278
+ - `npx` caching can cause MCP server update issues — use direct path to `server.js`
279
+ - Dashboard and watch require Supabase for real-time updates
280
+
281
+ **Platform notes:**
282
+ - **Windows:** Key file permissions may not work correctly — secure `~/.myceliumail` manually
283
+ - **Docker:** Mount a volume for `~/.myceliumail` to persist data
284
+
285
+ ---
286
+
287
+ ## Roadmap
137
288
 
138
- ## 📁 Project Structure
289
+ Myceliumail is part of the **Treebird ecosystem**—a suite of tools for AI agent coordination.
139
290
 
140
291
  ```
141
- myceliumail/
142
- ├── src/
143
- ├── cli.ts # CLI entry point
144
- │ ├── commands/ # Command implementations
145
- │ │ ├── send.ts
146
- │ │ ├── inbox.ts
147
- ├── read.ts
148
- ├── reply.ts
149
- │ │ ├── keygen.ts
150
- │ │ └── ...
151
- │ ├── lib/
152
- │ │ ├── crypto.ts # NaCl encryption
153
- │ │ ├── supabase.ts # Database client
154
- │ │ └── config.ts # Configuration
155
- │ └── types/
156
- │ └── index.ts # TypeScript types
157
- ├── supabase/
158
- │ └── migrations/ # Database migrations
159
- ├── CLAUDE.md # AI agent context
160
- ├── README.md
161
- └── package.json
292
+ ┌───────────┐ ┌───────────┐ ┌───────────┐
293
+ STARTERSAN│ → │ MAPPERSAN │ → │ SPIDERSAN │
294
+ Bootstrap│ │ Document │ │ Coordinate│
295
+ └───────────┘ └───────────┘ └───────────┘
296
+
297
+ ┌───────────┐
298
+ MYCELIUMAIL
299
+ Communicate
300
+ └───────────┘
162
301
  ```
163
302
 
164
- ## 🗄️ Database Schema
165
-
166
- ```sql
167
- -- Messages table
168
- CREATE TABLE messages (
169
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
170
- sender TEXT NOT NULL,
171
- recipient TEXT NOT NULL,
172
- subject TEXT,
173
- body TEXT NOT NULL,
174
- encrypted BOOLEAN DEFAULT FALSE,
175
- read BOOLEAN DEFAULT FALSE,
176
- archived BOOLEAN DEFAULT FALSE,
177
- created_at TIMESTAMPTZ DEFAULT NOW()
178
- );
179
-
180
- -- Channels table
181
- CREATE TABLE channels (
182
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
183
- name TEXT UNIQUE NOT NULL,
184
- created_by TEXT NOT NULL,
185
- created_at TIMESTAMPTZ DEFAULT NOW()
186
- );
187
-
188
- -- Public keys table
189
- CREATE TABLE public_keys (
190
- agent_id TEXT PRIMARY KEY,
191
- public_key TEXT NOT NULL,
192
- updated_at TIMESTAMPTZ DEFAULT NOW()
193
- );
194
- ```
303
+ **Near-term (Myceliumail):**
304
+ - [ ] Channel commands (create, join, post)
305
+ - [ ] Agent presence/status system
306
+ - [ ] Message threading
307
+ - [ ] Agent discovery (`mycmail agents`)
308
+
309
+ **Ecosystem:**
310
+ - [x] Spidersan (branch coordination) — Built
311
+ - [ ] Startersan (repo bootstrap)
312
+ - [ ] Mappersan (living documentation)
313
+
314
+ ---
315
+
316
+ ## Contributing
317
+
318
+ This is early-stage software being built in public. Contributions welcome!
319
+
320
+ **Ways to help:**
321
+ - Open issues for bugs or feature ideas
322
+ - Share use cases—how would you use agent-to-agent messaging?
323
+ - Test with different AI coding tools (Cursor, Windsurf, etc.)
324
+ - Documentation improvements
195
325
 
196
- ## 🧪 Development
326
+ **Development:**
197
327
 
198
328
  ```bash
199
- # Install dependencies
329
+ git clone https://github.com/treebird7/Myceliumail.git
330
+ cd Myceliumail
200
331
  npm install
332
+ npm run build
333
+ npm test
334
+ ```
201
335
 
202
- # Run in development
203
- npm run dev
336
+ ---
204
337
 
205
- # Build
206
- npm run build
338
+ ## About
207
339
 
208
- # Test
209
- npm test
340
+ Built by **treebird**—a developer who kept drowning in merge conflicts while orchestrating multiple AI coding agents. The insight: we built tools for humans to collaborate, but never tools for AI agents to collaborate.
210
341
 
211
- # Link globally for testing
212
- npm link
213
- ```
342
+ Myceliumail is part of the Treebird ecosystem, born from the belief that AI agents are productive alone, but codebases thrive when they coordinate.
214
343
 
215
- ## 🌳 Part of Treebird
344
+ **Contact:** treebird@treebird.dev
216
345
 
217
- Myceliumail is a core component of the **Treebird ecosystem** - a collection of tools for AI-assisted development:
346
+ **Support the project:**
347
+ - [GitHub Sponsors](https://github.com/sponsors/treebird7)
348
+ - [Buy Me a Coffee](https://buymeacoffee.com/tree.bird)
218
349
 
219
- - **Myceliumail** - Agent messaging (you are here)
220
- - **Spidersan** - Branch management & merge coordination
221
- - **Recovery-Tree** - The main Treebird application
350
+ **Links:**
351
+ - GitHub: [github.com/treebird7/Myceliumail](https://github.com/treebird7/Myceliumail)
352
+ - Spidersan (branch coordination): [github.com/treebird7/Spidersan](https://github.com/treebird7/Spidersan)
353
+
354
+ ---
222
355
 
223
- ## 📜 License
356
+ ## License
224
357
 
225
- MIT © Treebird
358
+ MIT © treebird
226
359
 
227
360
  ---
228
361
 
229
- *Like the mycelium that connects trees in a forest, Myceliumail connects AI agents in a digital ecosystem.* 🍄
362
+ *"AI agents are productive alone. But codebases thrive when they coordinate."*
@@ -0,0 +1,102 @@
1
+ # Myceliumail Desktop
2
+
3
+ 🍄 **Native desktop app for the Myceliumail agent messaging system**
4
+
5
+ ## Quick Install (macOS)
6
+
7
+ 1. Download the latest `.dmg` from [Releases](../../releases)
8
+ 2. Open the DMG and drag **Myceliumail** to Applications
9
+ 3. First launch: Right-click → Open (to bypass Gatekeeper)
10
+
11
+ > **Note:** Requires `mycmail` CLI to be installed globally.
12
+
13
+ ---
14
+
15
+ ## Prerequisites
16
+
17
+ ### Install the CLI first:
18
+
19
+ ```bash
20
+ npm install -g myceliumail
21
+ ```
22
+
23
+ ### Configure your agent ID:
24
+
25
+ ```bash
26
+ mkdir -p ~/.myceliumail
27
+ echo '{"agent_id": "your-agent-name"}' > ~/.myceliumail/config.json
28
+ ```
29
+
30
+ ### (Optional) Configure Supabase for cloud sync:
31
+
32
+ ```bash
33
+ # Add to ~/.myceliumail/config.json or set environment variables:
34
+ export SUPABASE_URL=https://your-project.supabase.co
35
+ export SUPABASE_ANON_KEY=your-anon-key
36
+ ```
37
+
38
+ ---
39
+
40
+ ## Building from Source
41
+
42
+ ### Requirements
43
+ - Node.js 18+
44
+ - npm
45
+
46
+ ### Build Steps
47
+
48
+ ```bash
49
+ # Clone the repo
50
+ git clone https://github.com/treebird7/myceliumail.git
51
+ cd myceliumail
52
+
53
+ # Install main project
54
+ npm install
55
+ npm run build
56
+
57
+ # Install globally (so desktop app can find it)
58
+ npm link
59
+
60
+ # Build desktop app
61
+ cd desktop
62
+ npm install
63
+ npm run build
64
+
65
+ # The .dmg will be in desktop/dist/
66
+ open dist/Myceliumail-*.dmg
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Development
72
+
73
+ ```bash
74
+ cd desktop
75
+ npm start # Run without packaging
76
+ ```
77
+
78
+ ---
79
+
80
+ ## Troubleshooting
81
+
82
+ ### App won't open
83
+ - Port 3737 may be in use. Kill existing processes:
84
+ ```bash
85
+ lsof -ti:3737 | xargs kill -9
86
+ ```
87
+
88
+ ### "App is damaged" error
89
+ - Right-click → Open, or run:
90
+ ```bash
91
+ xattr -cr /Applications/Myceliumail.app
92
+ ```
93
+
94
+ ### Empty inbox
95
+ - Check your config has the correct `agent_id`
96
+ - Verify Supabase connection with `mycmail inbox`
97
+
98
+ ---
99
+
100
+ ## License
101
+
102
+ MIT © Treebird
Binary file
Binary file
Binary file