let-them-talk 3.3.2 → 3.4.0

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.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,54 @@
1
1
  # Changelog
2
2
 
3
- ## [3.3.1] - 2026-03-14
3
+ ## [3.4.0] - 2026-03-15
4
+
5
+ ### Added — Dashboard Features
6
+ - **Stats Tab** — per-agent message counts, avg response time, peak hours, 24-hour activity chart, conversation velocity. Keyboard shortcut `6`.
7
+ - **Compact View** — toggle button in search bar. Hides avatars, inlines timestamps, reduces padding. Persists to localStorage.
8
+ - **Message Edit** — edit any message via hover action. Full edit history tracked, "edited" badge displayed.
9
+ - **Message Delete** — delete dashboard/system messages with confirmation dialog.
10
+ - **Copy Message** — clipboard button on message hover to copy raw content.
11
+ - **JSON Export** — new export format alongside HTML and Markdown.
12
+ - **Kanban Drag-and-Drop** — drag task cards between columns (pending/in_progress/done/blocked).
13
+ - **SSE Auto-Reconnect** — exponential backoff (1s→30s), yellow "Reconnecting..." indicator, polling fallback.
14
+ - **Conversation Templates** — 4 built-in multi-agent workflow templates (Code Review Pipeline, Debug Squad, Feature Development, Research & Write) in the Launch tab with copyable agent prompts.
15
+
16
+ ### Added — API Endpoints
17
+ - `PUT /api/message` — edit a message (with edit history)
18
+ - `DELETE /api/message` — delete a message (dashboard/system only)
19
+ - `GET /api/conversation-templates` — list conversation templates
20
+ - `POST /api/conversation-templates/launch` — get template agent prompts
21
+ - `GET /api/stats` — analytics data (per-agent stats, velocity, hourly distribution)
22
+ - `GET/POST /api/permissions` — agent permission management
23
+
24
+ ### Added — CLI Commands
25
+ - `npx let-them-talk msg <agent> <text>` — send a message from CLI
26
+ - `npx let-them-talk status` — show active agents and message counts
27
+
28
+ ### Changed — Premium UI Redesign
29
+ - Deeper dark palette with blue undertones (#080b12 background)
30
+ - Inter font from Google Fonts with anti-aliased rendering
31
+ - Glassmorphism header with backdrop-filter blur
32
+ - Gradient accent system (blue→purple) on buttons, active tabs, send button
33
+ - Refined shadow system (sm/md/lg) with colored glows
34
+ - Focus rings on all inputs
35
+ - Smoother transitions (0.2-0.25s) with lift effects on hover
36
+ - Glass effects on modals and popups
37
+ - Inset shadows on code blocks
38
+ - Thinner scrollbars with transparent tracks
39
+
40
+ ### Fixed
41
+ - Task notes crash when `notes` array undefined
42
+ - Message edit always rewrites messages.jsonl regardless of match
43
+ - Permissions API accepted arbitrary fields (now whitelisted)
44
+ - Task status accepted any string (now validated against whitelist)
45
+ - Reset button ignored active project in multi-project mode
46
+ - Edit modal missing error handler on network failure
47
+ - CLI msg command accepted invalid agent names
48
+ - Copy-to-clipboard double-escaped HTML entities in template prompts
49
+ - Duplicate deleteMessage function shadowing
50
+
51
+ ## [3.3.2] - 2026-03-14
4
52
 
5
53
  ### Changed
6
54
  - License changed from MIT to Business Source License 1.1 (BSL)
package/LICENSE CHANGED
@@ -6,7 +6,7 @@ License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
6
6
  Parameters
7
7
 
8
8
  Licensor: Dekelelz
9
- Licensed Work: Let Them Talk v3.3.1
9
+ Licensed Work: Let Them Talk v3.4.0
10
10
  The Licensed Work is (c) 2024-2026 Dekelelz.
11
11
  Additional Use Grant: You may make use of the Licensed Work, provided that
12
12
  you may not use the Licensed Work for a Commercial
@@ -27,7 +27,7 @@ Change Date: 2028-03-14
27
27
  Change License: Apache License, Version 2.0
28
28
 
29
29
  For information about alternative licensing arrangements for the Licensed Work,
30
- please contact: dekelelz@gmail.com
30
+ please contact: contact@talk.unrealai.studio
31
31
 
32
32
  Notice
33
33
 
package/README.md CHANGED
@@ -1,63 +1,156 @@
1
- # Let Them Talk
1
+ <p align="center">
2
+ <img src="agent-bridge/logo.png" alt="Let Them Talk" width="120">
3
+ </p>
2
4
 
3
- [![npm version](https://img.shields.io/npm/v/let-them-talk.svg)](https://www.npmjs.com/package/let-them-talk)
4
- [![License: BSL 1.1](https://img.shields.io/badge/License-BSL%201.1-orange.svg)](https://github.com/Dekelelz/let-them-talk/blob/master/LICENSE)
5
- [![Discord](https://img.shields.io/discord/1482478651000885359?color=5865F2&label=Discord&logo=discord&logoColor=white)](https://discord.gg/6Y9YgkFNJP)
5
+ <h1 align="center">Let Them Talk</h1>
6
6
 
7
- **MCP server + web dashboard that lets AI CLI agents talk to each other.**
7
+ <p align="center">
8
+ <strong>Multi-agent collaboration for AI CLI terminals.</strong><br>
9
+ Let your AI agents talk, delegate, review, and build together.
10
+ </p>
8
11
 
9
- Open two (or more) Claude Code, Gemini CLI, or Codex CLI terminals — and let them collaborate, debate, review code, or divide tasks. Watch the conversation unfold in a real-time web dashboard with a kanban board, agent monitoring, and message injection.
12
+ <p align="center">
13
+ <a href="https://www.npmjs.com/package/let-them-talk"><img src="https://img.shields.io/npm/v/let-them-talk.svg?style=flat&color=58a6ff" alt="npm"></a>
14
+ <a href="https://github.com/Dekelelz/let-them-talk/blob/master/LICENSE"><img src="https://img.shields.io/badge/License-BSL%201.1-f59e0b.svg?style=flat" alt="BSL 1.1"></a>
15
+ <a href="https://discord.gg/6Y9YgkFNJP"><img src="https://img.shields.io/discord/1482478651000885359?color=5865F2&label=Discord&logo=discord&logoColor=white&style=flat" alt="Discord"></a>
16
+ <a href="https://www.npmjs.com/package/let-them-talk"><img src="https://img.shields.io/npm/dm/let-them-talk.svg?style=flat&color=3fb950" alt="Downloads"></a>
17
+ </p>
10
18
 
11
- ## Quick Start
19
+ <p align="center">
20
+ <a href="https://talk.unrealai.studio">Website</a> ·
21
+ <a href="#quick-start">Quick Start</a> ·
22
+ <a href="VISION.md">Vision</a> ·
23
+ <a href="#agent-templates">Templates</a> ·
24
+ <a href="#web-dashboard">Dashboard</a> ·
25
+ <a href="https://discord.gg/6Y9YgkFNJP">Discord</a>
26
+ </p>
12
27
 
13
- ```bash
14
- # 1. Install in any project
15
- npx let-them-talk init
28
+ ---
16
29
 
17
- # 2. Launch the web dashboard
18
- npx let-them-talk dashboard
30
+ Let Them Talk is an MCP server that connects multiple AI CLI terminals through a shared filesystem. Open Claude Code, Gemini CLI, or Codex CLI in separate terminals — they discover each other, exchange messages, share files, assign tasks, and coordinate through workflows. A real-time web dashboard lets you watch everything unfold, inject messages, and manage the conversation.
19
31
 
20
- # 3. In Terminal 1: tell the agent to register as "A", say hello, then call listen()
21
- # 4. In Terminal 2: tell the agent to register as "B", then call listen()
22
- ```
32
+ If you want your AI agents to stop working in isolation and start collaborating like a team, this is it.
33
+
34
+ ## Quick Start
23
35
 
24
- Or use a template for guided setup:
36
+ Preferred setup: one command to install, one to launch the dashboard.
25
37
 
26
38
  ```bash
27
- npx let-them-talk init --template team # Coordinator + Researcher + Coder
28
- npx let-them-talk init --template review # Author + Reviewer
29
- npx let-them-talk init --template debate # Pro + Con
30
- npx let-them-talk templates # List all templates
39
+ npx let-them-talk init # auto-detects your CLI and configures MCP
40
+ npx let-them-talk dashboard # opens the web dashboard at localhost:3000
31
41
  ```
32
42
 
43
+ Then open two terminals and tell each agent to register:
44
+
45
+ **Terminal 1:** `Register as "A", say hello to B, then call listen()`
46
+
47
+ **Terminal 2:** `Register as "B", then call listen()`
48
+
49
+ That's it. They'll start talking. Watch it live in the dashboard.
50
+
51
+ > **Templates:** Skip the manual setup with `npx let-them-talk init --template team` — gives you ready-to-paste prompts for a Coordinator + Researcher + Coder team. [See all templates](#agent-templates).
52
+
53
+ ## Supported CLIs
54
+
55
+ | CLI | Config File | Auto-detected |
56
+ |-----|-------------|:-------------:|
57
+ | Claude Code | `.mcp.json` | Yes |
58
+ | Gemini CLI | `.gemini/settings.json` | Yes |
59
+ | Codex CLI | `.codex/config.toml` | Yes |
60
+
61
+ Run `npx let-them-talk init --all` to configure all three at once.
62
+
33
63
  ## How It Works
34
64
 
35
65
  ```
36
- Terminal 1 (Claude Code) Terminal 2 (Gemini CLI) Terminal 3 (Codex CLI)
37
- | | |
38
- v v v
39
- MCP Server MCP Server MCP Server
40
- (stdio process) (stdio process) (stdio process)
41
- | | |
42
- +------------- Shared Filesystem (.agent-bridge/) ----------------+
43
- | messages.jsonl | history.jsonl |
44
- | agents.json | tasks.json |
45
- | profiles.json | workflows.json |
46
- | workspaces/ | plugins/ |
47
- |
48
- v
49
- Web Dashboard (localhost:3000)
50
- Real-time SSE + Agent monitoring
51
- Tasks + Workspaces + Workflows + Plugins
66
+ Terminal 1 Terminal 2 Terminal 3
67
+ (Claude Code) (Gemini CLI) (Codex CLI)
68
+ | | |
69
+ v v v
70
+ MCP Server MCP Server MCP Server
71
+ (stdio) (stdio) (stdio)
72
+ | | |
73
+ +----------- .agent-bridge/ directory ----------+
74
+ messages · agents · tasks
75
+ profiles · workflows · plugins
76
+ |
77
+ v
78
+ Web Dashboard :3000
79
+ SSE real-time · Kanban
80
+ Agent monitoring · Injection
81
+ ```
82
+
83
+ Each terminal spawns its own MCP server process. All processes share a `.agent-bridge/` directory in your project root. The dashboard reads the same files via Server-Sent Events for instant updates.
84
+
85
+ ## Highlights
86
+
87
+ - **27 MCP tools** — messaging, tasks, workflows, profiles, workspaces, branching, plugins
88
+ - **Premium dashboard** — glassmorphism UI, Inter font, gradient accents, SSE real-time (~200ms)
89
+ - **Stats & analytics** — per-agent message counts, response times, hourly activity charts, velocity
90
+ - **Conversation templates** — 4 built-in multi-agent workflows (Code Review, Debug Squad, Feature Dev, Research & Write)
91
+ - **Message management** — edit, delete, copy messages with full edit history
92
+ - **Task management** — drag-and-drop kanban board between agents
93
+ - **Workflow pipelines** — multi-step automation with auto-handoff
94
+ - **Agent profiles** — display names, SVG avatars, roles, bios
95
+ - **Conversation branching** — fork at any point, isolated history per branch
96
+ - **Compact view** — dense message toggle for power users, persists to localStorage
97
+ - **Multi-format export** — HTML, Markdown, and JSON export
98
+ - **CLI tools** — send messages and check status directly from the command line
99
+ - **Plugin system** — extend with custom tools, 30s sandboxed execution
100
+ - **Zero config** — one `npx` command, auto-detects your CLI, works immediately
101
+
102
+ ## Agent Templates
103
+
104
+ Pre-built team configurations. Each template gives you ready-to-paste prompts for every terminal.
105
+
106
+ ```bash
107
+ npx let-them-talk init --template pair # A + B
108
+ npx let-them-talk init --template team # Coordinator + Researcher + Coder
109
+ npx let-them-talk init --template review # Author + Reviewer
110
+ npx let-them-talk init --template debate # Pro + Con
111
+ npx let-them-talk templates # List all available templates
52
112
  ```
53
113
 
54
- Each CLI terminal spawns its own MCP server process via stdio. All processes read/write to a shared `.agent-bridge/` directory. The dashboard monitors the same files via Server-Sent Events for real-time updates.
114
+ | Template | Agents | Best For |
115
+ |----------|--------|----------|
116
+ | **pair** | A, B | Brainstorming, Q&A, simple conversations |
117
+ | **team** | Coordinator, Researcher, Coder | Complex features needing research + implementation |
118
+ | **review** | Author, Reviewer | Code review with structured feedback loops |
119
+ | **debate** | Pro, Con | Evaluating trade-offs, architecture decisions |
120
+
121
+ ## Web Dashboard
122
+
123
+ Launch with `npx let-them-talk dashboard` — opens at `http://localhost:3000`.
124
+
125
+ **6 main tabs:**
126
+
127
+ - **Messages** — live feed with full markdown, message grouping, search, bookmarks, pins, emoji reactions, conversation replay, compact view
128
+ - **Tasks** — drag-and-drop kanban board (pending / in progress / done / blocked)
129
+ - **Workspaces** — per-agent key-value storage browser
130
+ - **Workflows** — horizontal pipeline visualization, advance or skip steps
131
+ - **Launch** — spawn new agents with templates, 4 built-in conversation templates with copyable prompts
132
+ - **Stats** — per-agent message counts, avg response times, hourly activity charts, conversation velocity
133
+
134
+ **Plus:**
55
135
 
56
- ## Features
136
+ - Agent monitoring with active / sleeping / dead / listening status
137
+ - Profile popups with avatars and role badges
138
+ - Message edit, delete, and copy actions on hover
139
+ - SSE auto-reconnect with exponential backoff and visual indicator
140
+ - Message injection and broadcast from browser
141
+ - Conversation branching with branch tabs
142
+ - Export as shareable HTML, Markdown, or JSON
143
+ - Multi-project support with auto-discover
144
+ - Premium glassmorphism UI with gradient accents
145
+ - Dark / light theme toggle
146
+ - Mobile responsive with hamburger sidebar
147
+ - Browser notifications and sound alerts
148
+ - LAN mode for phone access
57
149
 
58
- ### 27 MCP Tools + Plugins
150
+ ## MCP Tools (27 + plugins)
59
151
 
60
- **Messaging**
152
+ <details>
153
+ <summary><strong>Messaging (13 tools)</strong></summary>
61
154
 
62
155
  | Tool | Description |
63
156
  |------|-------------|
@@ -71,112 +164,54 @@ Each CLI terminal spawns its own MCP server process via stdio. All processes rea
71
164
  | `ack_message` | Confirm message was processed |
72
165
  | `get_history` | View conversation with thread/branch filter |
73
166
  | `get_summary` | Condensed conversation recap |
74
- | `handoff` | Transfer work to another agent with context |
75
- | `share_file` | Send file contents to another agent |
76
- | `reset` | Clear data (auto-archives first) |
167
+ | `handoff` | Transfer work with context |
168
+ | `share_file` | Send file contents (max 100KB) |
169
+ | `reset` | Clear all data (auto-archives first) |
77
170
 
78
- **Tasks & Workflows**
171
+ </details>
172
+
173
+ <details>
174
+ <summary><strong>Tasks & Workflows (6 tools)</strong></summary>
79
175
 
80
176
  | Tool | Description |
81
177
  |------|-------------|
82
178
  | `create_task` | Create and assign tasks |
83
- | `update_task` | Update task status (pending/in_progress/done/blocked) |
179
+ | `update_task` | Update status: pending / in_progress / done / blocked |
84
180
  | `list_tasks` | View tasks with filters |
85
181
  | `create_workflow` | Create multi-step pipeline with assignees |
86
182
  | `advance_workflow` | Complete current step, auto-handoff to next |
87
- | `workflow_status` | Get workflow progress |
183
+ | `workflow_status` | Get workflow progress percentage |
184
+
185
+ </details>
88
186
 
89
- **Profiles & Workspaces**
187
+ <details>
188
+ <summary><strong>Profiles & Workspaces (4 tools)</strong></summary>
90
189
 
91
190
  | Tool | Description |
92
191
  |------|-------------|
93
192
  | `update_profile` | Set display name, avatar, bio, role |
94
- | `workspace_write` | Write to your key-value workspace (50 keys, 100KB/value) |
95
- | `workspace_read` | Read workspace entries (yours or another agent's) |
193
+ | `workspace_write` | Write key-value data (50 keys, 100KB/value) |
194
+ | `workspace_read` | Read your workspace or another agent's |
96
195
  | `workspace_list` | List workspace keys |
97
196
 
98
- **Conversation Branching**
197
+ </details>
198
+
199
+ <details>
200
+ <summary><strong>Branching (3 tools)</strong></summary>
99
201
 
100
202
  | Tool | Description |
101
203
  |------|-------------|
102
- | `fork_conversation` | Fork conversation at any message point |
204
+ | `fork_conversation` | Fork at any message point |
103
205
  | `switch_branch` | Switch to a different branch |
104
206
  | `list_branches` | List all branches with message counts |
105
207
 
106
- ### Web Dashboard (4 tabs)
107
-
108
- - **Messages** — SSE-powered real-time feed, full markdown, message grouping, date separators, bookmarks, pins, emoji reactions, search, conversation replay
109
- - **Tasks** — Kanban board (pending/in_progress/done/blocked), status updates from dashboard
110
- - **Workspaces** — Per-agent key-value browser with collapsible accordion UI
111
- - **Workflows** — Horizontal pipeline visualization, advance/skip steps from dashboard
112
- - **Agent monitoring** — active/sleeping/dead/listening status, profile popups with avatars, provider badges, activity heatmap
113
- - **Conversation branching** — branch tabs, switch between conversation forks
114
- - **Message injection** — send messages or broadcast to agents from the browser
115
- - **Plugin management** — plugin cards with enable/disable toggles
116
- - **Export** — shareable HTML or Markdown download
117
- - **Multi-project** — monitor multiple folders + auto-discover
118
- - **Dark/light theme** — toggle with localStorage persistence
119
- - **Mobile responsive** — hamburger sidebar, works on phones and tablets
120
-
121
- ### Reliability
122
-
123
- - **Heartbeat** — 10s pings track agent liveness
124
- - **Auto-compact** — message queue cleaned when > 500 lines
125
- - **Auto-archive** — conversations saved before reset
126
- - **Context hints** — warns agents when conversation gets long
127
- - **Dead recipient warnings** — alerts when sending to offline agents
128
- - **Clean exit** — agents deregister on process exit
129
-
130
- ## Agent Templates
131
-
132
- Pre-built team configurations with ready-to-paste prompts:
133
-
134
- | Template | Agents | Best For |
135
- |----------|--------|----------|
136
- | `pair` | A, B | Simple conversations, brainstorming |
137
- | `team` | Coordinator, Researcher, Coder | Complex features, research + implementation |
138
- | `review` | Author, Reviewer | Code review with structured feedback |
139
- | `debate` | Pro, Con | Evaluating trade-offs and decisions |
140
-
141
- ## CLI Commands
142
-
143
- ```bash
144
- npx let-them-talk init # Auto-detect CLI and configure
145
- npx let-them-talk init --all # Configure for all CLIs
146
- npx let-them-talk init --template <name> # Use a team template
147
- npx let-them-talk templates # List available templates
148
- npx let-them-talk dashboard # Launch web dashboard
149
- npx let-them-talk reset # Clear conversation data
150
- npx let-them-talk plugin list # List installed plugins
151
- npx let-them-talk plugin add <file.js> # Install a plugin
152
- npx let-them-talk plugin remove <name> # Remove a plugin
153
- npx let-them-talk plugin enable <name> # Enable a plugin
154
- npx let-them-talk plugin disable <name> # Disable a plugin
155
- npx let-them-talk help # Show help
156
- ```
157
-
158
- ## Updating
159
-
160
- ```bash
161
- # If using npx (recommended) — clear cache to get latest version
162
- npx clear-npx-cache
163
- npx let-them-talk init # Re-run to update MCP config paths
164
-
165
- # If installed globally
166
- npm update -g let-them-talk
167
-
168
- # Check your version
169
- npx let-them-talk help # Shows version in header
170
- ```
171
-
172
- After updating, restart your CLI terminals to pick up the new MCP server.
208
+ </details>
173
209
 
174
210
  ## Plugins
175
211
 
176
- Extend Let Them Talk with custom tools. Plugins are `.js` files in the `.agent-bridge/plugins/` directory.
212
+ Extend Let Them Talk with custom tools. Drop a `.js` file in `.agent-bridge/plugins/`.
177
213
 
178
214
  ```javascript
179
- // plugins/my-tool.js
180
215
  module.exports = {
181
216
  name: 'my-tool',
182
217
  description: 'What this tool does',
@@ -188,21 +223,56 @@ module.exports = {
188
223
  required: ['query']
189
224
  },
190
225
  handler(args, ctx) {
191
- // ctx provides: sendMessage, getAgents, getHistory, readFile, registeredName, dataDir
226
+ // ctx: sendMessage, getAgents, getHistory, readFile, registeredName, dataDir
192
227
  return { result: 'done', query: args.query };
193
228
  }
194
229
  };
195
230
  ```
196
231
 
197
- Plugins run sandboxed with a 30-second timeout. Manage them via CLI or the dashboard.
232
+ ```bash
233
+ npx let-them-talk plugin add my-tool.js # install
234
+ npx let-them-talk plugin list # list installed
235
+ npx let-them-talk plugin remove my-tool # remove
236
+ npx let-them-talk plugin enable my-tool # enable
237
+ npx let-them-talk plugin disable my-tool # disable
238
+ ```
198
239
 
199
- ## Supported CLIs
240
+ Plugins run sandboxed with a 30-second timeout. Manage via CLI or dashboard.
200
241
 
201
- | CLI | Config | Auto-detected |
202
- |-----|--------|---------------|
203
- | Claude Code | `.mcp.json` | Yes |
204
- | Gemini CLI | `.gemini/settings.json` | Yes |
205
- | Codex CLI | `.mcp.json` | Yes |
242
+ ## CLI Reference
243
+
244
+ ```bash
245
+ npx let-them-talk init # auto-detect CLI, configure MCP
246
+ npx let-them-talk init --all # configure all CLIs
247
+ npx let-them-talk init --template <name> # use a team template
248
+ npx let-them-talk templates # list templates
249
+ npx let-them-talk dashboard # launch web dashboard
250
+ npx let-them-talk reset # clear conversation data
251
+ npx let-them-talk plugin <subcommand> # manage plugins
252
+ npx let-them-talk help # show help
253
+ ```
254
+
255
+ ## Updating
256
+
257
+ ```bash
258
+ npx clear-npx-cache # clear cached version
259
+ npx let-them-talk init # re-run to update config
260
+ npx let-them-talk help # verify version
261
+ ```
262
+
263
+ After updating, restart your CLI terminals to pick up the new MCP server.
264
+
265
+ ## Security
266
+
267
+ Let Them Talk is a **local message broker**. It passes text messages between CLI terminals via shared files on your machine. It does **not** give agents any capabilities beyond what they already have.
268
+
269
+ **Does not:** access the internet, store API keys, run cloud services, or grant new filesystem access.
270
+
271
+ **Built-in protections:** CORS restriction, XSS prevention, path traversal protection, symlink validation, origin enforcement, SSE connection limits, input validation, message size limits (1MB), plugin sandboxing (30s timeout).
272
+
273
+ **LAN mode:** Optional phone access exposes the dashboard to your local WiFi only. Requires explicit activation.
274
+
275
+ Full details: [SECURITY.md](SECURITY.md)
206
276
 
207
277
  ## Environment Variables
208
278
 
@@ -210,34 +280,27 @@ Plugins run sandboxed with a 30-second timeout. Manage them via CLI or the dashb
210
280
  |----------|---------|-------------|
211
281
  | `AGENT_BRIDGE_DATA_DIR` | `{cwd}/.agent-bridge/` | Data directory path |
212
282
  | `AGENT_BRIDGE_PORT` | `3000` | Dashboard port |
283
+ | `AGENT_BRIDGE_LAN` | `false` | Enable LAN mode |
213
284
  | `NODE_ENV` | — | Set to `development` for hot-reload |
214
285
 
215
- ## Security
286
+ ## Contributing
216
287
 
217
- Let Them Talk is a **local message broker** — it passes text messages between CLI terminals via shared files. It does **not** give agents any new capabilities beyond what they already have.
288
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
218
289
 
219
- ### What it does NOT do
220
- - Does not give agents filesystem access (they already have it via their CLI)
221
- - Does not expose anything to the internet (dashboard binds to localhost only)
222
- - Does not store or transmit API keys
223
- - Does not run any cloud services
290
+ ## Contact
224
291
 
225
- ### Built-in protections
226
- - **CSRF protection** — external websites cannot send requests to the dashboard
227
- - **XSS prevention** — all inputs are escaped before rendering
228
- - **Path traversal protection** — agents cannot read files outside the project directory
229
- - **Symlink protection** — follows symlinks and validates the real path
230
- - **Origin enforcement** — POST/DELETE requests require valid localhost/LAN origin
231
- - **SSE connection limits** — prevents connection exhaustion DoS
232
- - **Forced sender identity** — dashboard messages are always marked as "Dashboard"
233
- - **Input validation** — branch names, agent names, and paths are validated
234
-
235
- ### LAN mode
236
- LAN mode (phone access) only exposes the dashboard to your local WiFi network, not the internet. It requires explicit activation and a firewall rule. A warning is shown when enabled.
237
-
238
- ### Plugins
239
- Plugins run with full Node.js access. Only install plugins you trust. This is the same trust model as npm packages.
292
+ For business inquiries, licensing, and partnerships: **contact@talk.unrealai.studio**
240
293
 
241
294
  ## License
242
295
 
243
296
  [Business Source License 1.1](LICENSE) — Free to use, self-host, and modify. Cannot be offered as a competing commercial hosted service. Converts to Apache 2.0 on March 14, 2028.
297
+
298
+ ---
299
+
300
+ <p align="center">
301
+ Built by <a href="https://github.com/Dekelelz">Dekelelz</a> ·
302
+ <a href="https://talk.unrealai.studio">Website</a> ·
303
+ <a href="https://discord.gg/6Y9YgkFNJP">Discord</a> ·
304
+ <a href="https://www.npmjs.com/package/let-them-talk">npm</a> ·
305
+ <a href="mailto:contact@talk.unrealai.studio">Contact</a>
306
+ </p>
package/SECURITY.md CHANGED
@@ -14,7 +14,7 @@ If you discover a security vulnerability in Let Them Talk, please report it resp
14
14
 
15
15
  **Do NOT open a public GitHub issue for security vulnerabilities.**
16
16
 
17
- Instead, please email **security@dos-technology.com** or use [GitHub's private vulnerability reporting](https://github.com/Dekelelz/let-them-talk/security/advisories/new).
17
+ Instead, please email **contact@talk.unrealai.studio** or use [GitHub's private vulnerability reporting](https://github.com/Dekelelz/let-them-talk/security/advisories/new).
18
18
 
19
19
  ### What to include
20
20
 
package/cli.js CHANGED
@@ -8,7 +8,7 @@ const command = process.argv[2];
8
8
 
9
9
  function printUsage() {
10
10
  console.log(`
11
- Let Them Talk — Agent Bridge v3.3.1
11
+ Let Them Talk — Agent Bridge v3.4.0
12
12
  MCP message broker for inter-agent communication
13
13
  Supports: Claude Code, Gemini CLI, Codex CLI
14
14
 
@@ -28,7 +28,9 @@ function printUsage() {
28
28
  npx let-them-talk plugin remove <n> Remove a plugin by name
29
29
  npx let-them-talk plugin enable <n> Enable a plugin
30
30
  npx let-them-talk plugin disable <n> Disable a plugin
31
- npx let-them-talk help Show this help message
31
+ npx let-them-talk msg <agent> <text> Send a message to an agent
32
+ npx let-them-talk status Show active agents and message count
33
+ npx let-them-talk help Show this help message
32
34
  `);
33
35
  }
34
36
 
@@ -416,6 +418,97 @@ function dashboard() {
416
418
  require('./dashboard.js');
417
419
  }
418
420
 
421
+ function resolveDataDirCli() {
422
+ return process.env.AGENT_BRIDGE_DATA_DIR || path.join(process.cwd(), '.agent-bridge');
423
+ }
424
+
425
+ function readJsonl(filePath) {
426
+ if (!fs.existsSync(filePath)) return [];
427
+ return fs.readFileSync(filePath, 'utf8')
428
+ .split('\n')
429
+ .filter(l => l.trim())
430
+ .map(l => { try { return JSON.parse(l); } catch { return null; } })
431
+ .filter(Boolean);
432
+ }
433
+
434
+ function readJson(filePath) {
435
+ if (!fs.existsSync(filePath)) return {};
436
+ try { return JSON.parse(fs.readFileSync(filePath, 'utf8')); } catch { return {}; }
437
+ }
438
+
439
+ function isPidAlive(pid) {
440
+ if (!pid) return false;
441
+ try { process.kill(pid, 0); return true; } catch { return false; }
442
+ }
443
+
444
+ function cliMsg() {
445
+ const recipient = process.argv[3];
446
+ const textParts = process.argv.slice(4);
447
+ if (!recipient || !textParts.length) {
448
+ console.error(' Usage: npx let-them-talk msg <agent> <text>');
449
+ process.exit(1);
450
+ }
451
+ if (!/^[a-zA-Z0-9_-]{1,20}$/.test(recipient)) {
452
+ console.error(' Agent name must be 1-20 alphanumeric characters (with _ or -).');
453
+ process.exit(1);
454
+ }
455
+ const text = textParts.join(' ');
456
+ const dir = resolveDataDirCli();
457
+ if (!fs.existsSync(dir)) {
458
+ console.error(' No .agent-bridge/ directory found. Run "npx let-them-talk init" first.');
459
+ process.exit(1);
460
+ }
461
+
462
+ const msgId = 'm' + Date.now().toString(36) + Math.random().toString(36).slice(2, 6);
463
+ const msg = {
464
+ id: msgId,
465
+ from: 'CLI',
466
+ to: recipient,
467
+ content: text,
468
+ timestamp: new Date().toISOString(),
469
+ };
470
+
471
+ const messagesFile = path.join(dir, 'messages.jsonl');
472
+ const historyFile = path.join(dir, 'history.jsonl');
473
+ fs.appendFileSync(messagesFile, JSON.stringify(msg) + '\n');
474
+ fs.appendFileSync(historyFile, JSON.stringify(msg) + '\n');
475
+
476
+ console.log(' Message sent to ' + recipient + ': ' + text);
477
+ }
478
+
479
+ function cliStatus() {
480
+ const dir = resolveDataDirCli();
481
+ if (!fs.existsSync(dir)) {
482
+ console.error(' No .agent-bridge/ directory found. Run "npx let-them-talk init" first.');
483
+ process.exit(1);
484
+ }
485
+
486
+ const agents = readJson(path.join(dir, 'agents.json'));
487
+ const history = readJsonl(path.join(dir, 'history.jsonl'));
488
+
489
+ console.log('');
490
+ console.log(' Agent Bridge Status');
491
+ console.log(' ===================');
492
+ console.log(' Messages: ' + history.length);
493
+ console.log('');
494
+
495
+ const names = Object.keys(agents);
496
+ if (!names.length) {
497
+ console.log(' No agents registered.');
498
+ } else {
499
+ console.log(' Agents:');
500
+ for (const name of names) {
501
+ const info = agents[name];
502
+ const alive = isPidAlive(info.pid);
503
+ const status = alive ? '\x1b[32monline\x1b[0m' : '\x1b[31moffline\x1b[0m';
504
+ const lastActivity = info.last_activity || info.timestamp || '';
505
+ const msgCount = history.filter(m => m.from === name).length;
506
+ console.log(' ' + name.padEnd(16) + ' ' + status + ' msgs: ' + msgCount + ' last: ' + (lastActivity ? new Date(lastActivity).toLocaleTimeString() : '-'));
507
+ }
508
+ }
509
+ console.log('');
510
+ }
511
+
419
512
  switch (command) {
420
513
  case 'init':
421
514
  init();
@@ -429,6 +522,14 @@ switch (command) {
429
522
  case 'reset':
430
523
  reset();
431
524
  break;
525
+ case 'msg':
526
+ case 'message':
527
+ case 'send':
528
+ cliMsg();
529
+ break;
530
+ case 'status':
531
+ cliStatus();
532
+ break;
432
533
  case 'plugin':
433
534
  case 'plugins':
434
535
  pluginCmd();