neohive 6.4.0 → 6.4.2

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/README.md CHANGED
@@ -41,6 +41,14 @@
41
41
 
42
42
  <br />
43
43
 
44
+ <p align="center">
45
+ <img src="https://raw.githubusercontent.com/fakiho/neohive/master/assets/screenshots/hero-animation.gif" alt="Neohive — Terminal + IDE working together" width="100%" />
46
+ </p>
47
+
48
+ ---
49
+
50
+ <br />
51
+
44
52
  You open Claude Code in one terminal and Gemini CLI in another. Both are powerful — but they can't see each other. You copy context between windows, manually coordinate who does what.
45
53
 
46
54
  **Neohive removes that bottleneck.** Install once, and your AI agents discover each other, send messages, delegate tasks, review work, and execute multi-step workflows — automatically.
@@ -53,10 +61,12 @@ You open Claude Code in one terminal and Gemini CLI in another. Both are powerfu
53
61
 
54
62
  - [Quick Start](#-quick-start)
55
63
  - [Features](#-features)
64
+ - [Recommended Setup](#-recommended-setup)
56
65
  - [How It Works](#-how-it-works)
57
66
  - [Supported IDEs & CLIs](#-supported-ides--clis)
58
67
  - [Team Templates](#-team-templates)
59
68
  - [Dashboard](#-dashboard)
69
+ - [VS Code Extension](#-vs-code-extension)
60
70
  - [MCP Tools](#-mcp-tools)
61
71
  - [CLI Reference](#%EF%B8%8F-cli-reference)
62
72
  - [Configuration](#%EF%B8%8F-configuration)
@@ -77,14 +87,14 @@ That's it. Neohive auto-detects your CLI, writes the MCP config, and creates a `
77
87
 
78
88
  **MCP config:** `npx neohive init` writes the **absolute path** to the same Node binary that ran the command (so Volta, nvm, or custom installs work even when your IDE’s MCP subprocess has a minimal `PATH`). For **Claude Code**, the project file is `.mcp.json` in the repo root; you can merge the same `neohive` entry into `~/.claude/mcp.json` if you prefer a user-wide setup. Restart the IDE or reload MCP tools after init.
79
89
 
80
- Now open two terminals in the same project:
90
+ Now open two terminals in the same project and paste each prompt into a Claude Code session:
81
91
 
82
92
  ```
83
93
  # Terminal 1
84
- Register as "Alice" and send a greeting to Bob, then call listen()
94
+ Register as Alice. Send a greeting to Bob, then call listen().
85
95
 
86
96
  # Terminal 2
87
- Register as "Bob" and call listen()
97
+ Register as Bob, then call listen().
88
98
  ```
89
99
 
90
100
  Watch them communicate in real time:
@@ -120,6 +130,75 @@ npx neohive dashboard # opens http://localhost:3000
120
130
 
121
131
  <br />
122
132
 
133
+ ## ✅ Recommended Setup
134
+
135
+ Getting the most out of Neohive takes one extra minute after `init`. Here's what we recommend per tool.
136
+
137
+ ---
138
+
139
+ ### Claude Code
140
+
141
+ ```bash
142
+ npx neohive init --claude
143
+ ```
144
+
145
+ `init` handles MCP config, hooks, and skills in one step. For the smoothest experience:
146
+
147
+ - **VS Code Extension** — Install the [Neohive extension](https://marketplace.visualstudio.com/items?itemName=alionix.neohive) for automatic MCP setup, in-editor agent status, task board, workflow viewer, and `@neohive` chat participant. The extension configures hooks automatically on activation. Also available on [Open VSX](https://open-vsx.org/extension/alionix/neohive).
148
+ - **Without the extension** — Run `npx neohive hooks` to install listen-enforcement hooks into `.claude/settings.json`. This keeps agents in the listen loop and prevents them from stopping mid-session. Safe to re-run — your existing hooks are preserved.
149
+ - **Skills** — `init` installs neohive skills and the coordinator agent into `.claude/skills/neohive/`. These teach Claude how to use the MCP tools correctly.
150
+
151
+ ---
152
+
153
+ <img src="https://raw.githubusercontent.com/fakiho/neohive/master/vscode-extension/assets/screenshots/vscode-extension-overview.png" alt="Neohive VS Code Extension — Team Chat, Agent Sidebar, Task Board, and Workflows" width="100%" />
154
+
155
+ <br />
156
+
157
+ ### Cursor
158
+
159
+ ```bash
160
+ npx neohive init --cursor
161
+ ```
162
+
163
+ Installs MCP config, skills, commands, and agents into your project's `.cursor/` directory. After init:
164
+
165
+ - Open Cursor Settings → MCP and **verify that `neohive` is enabled**. Cursor sometimes disables newly added MCP servers by default — toggle it on if needed, then reload.
166
+ - Skills are available as slash commands (e.g. `/neohive-launch-team`, `/neohive-status`).
167
+
168
+ ---
169
+
170
+ ### Antigravity
171
+
172
+ ```bash
173
+ npx neohive init --antigravity
174
+ ```
175
+
176
+ Installs MCP config globally (`~/.gemini/antigravity/mcp_config.json`) and skills into `.agent/skills/neohive/`. After init:
177
+
178
+ - Open Antigravity Settings → MCP and **verify that `neohive` is enabled**. Like Cursor, Antigravity may disable new MCP servers by default.
179
+
180
+ ---
181
+
182
+ ### Everything at once
183
+
184
+ ```bash
185
+ npx neohive init --all
186
+ ```
187
+
188
+ Configures MCP, hooks, skills, agents, and commands for every detected CLI and IDE in one command.
189
+
190
+ ---
191
+
192
+ ### Troubleshooting
193
+
194
+ **Agent can't register / MCP tools not found**
195
+ The IDE has likely disabled the neohive MCP server. Restart the IDE first, then go to Settings → MCP (or Tools), find `neohive`, and enable it. After enabling, start a new agent thread — existing sessions won't pick up the newly registered tools.
196
+
197
+ **Agent stopped listening mid-session**
198
+ Due to a current IDE limitation, agents can occasionally drop out of the listen loop. Simply ask the agent: *"Call listen()"* to resume. We are actively working on a permanent fix.
199
+
200
+ ---
201
+
123
202
  ## 🏗 How It Works
124
203
 
125
204
  ```
@@ -225,8 +304,8 @@ The MCP server exposes **70+ built-in tools** in one registration list (no separ
225
304
  | Category | Tools |
226
305
  |----------|-------|
227
306
  | **Identity & briefing** | `register` · `list_agents` · `update_profile` · `get_briefing` · `get_guide` |
228
- | **Messaging** | `send_message` · `broadcast` · `listen` · `listen_group` · `listen_codex` · `wait_for_reply` · `check_messages` · `consume_messages` · `get_notifications` · `ack_message` |
229
- | **History & search** | `get_history` · `get_summary` · `search_messages` · `get_compressed_history` |
307
+ | **Messaging** | `send_message` · `broadcast` · `listen` · `wait_for_reply` · `messages` |
308
+ | **History & search** | `get_summary` · `get_compressed_history` · `messages` |
230
309
  | **Collaboration** | `handoff` · `share_file` · `lock_file` · `unlock_file` |
231
310
  | **Tasks** | `create_task` · `update_task` · `list_tasks` |
232
311
  | **Workflows** | `create_workflow` · `advance_workflow` · `workflow_status` |
@@ -257,11 +336,12 @@ neohive msg <agent> <text> # send message from CLI
257
336
  neohive doctor # diagnostic health check
258
337
  neohive templates # list available templates
259
338
  neohive hooks # install listen-enforcement hooks into .claude/settings.json
339
+ neohive skills # install neohive skills & agents for all detected IDEs
260
340
  neohive reset --force # clear data (auto-archives first)
261
341
  neohive uninstall # remove from all CLI configs
262
342
  ```
263
343
 
264
- > **Claude Code users:** Run `npx neohive hooks` after `init` to install listen-enforcement hooks into `.claude/settings.json`. This keeps agents in the listen loop automatically and prevents them from stopping mid-session. Safe to re-run your existing hooks are preserved.
344
+ > `init` runs `hooks` and `skills` automatically. Run them standalone at any time to update or repair your setup.
265
345
 
266
346
  <br />
267
347
 
@@ -276,6 +356,26 @@ neohive uninstall # remove from all CLI configs
276
356
 
277
357
  <br />
278
358
 
359
+ ## 🧩 VS Code Extension
360
+
361
+ The [Neohive extension](https://marketplace.visualstudio.com/items?itemName=alionix.neohive) brings agent monitoring and team coordination directly into your editor.
362
+
363
+ | Feature | Description |
364
+ |---------|-------------|
365
+ | **Agent Sidebar** | See all registered agents, their status (online/stale/offline), and provider in the activity bar |
366
+ | **Task Board** | In-editor kanban board — view and track tasks without opening the dashboard |
367
+ | **Workflow Viewer** | Monitor active workflows and step progress in real time |
368
+ | **`@neohive` Chat** | Query agent status, tasks, and messages directly from Copilot Chat |
369
+ | **Auto MCP Setup** | Configures MCP and hooks automatically on activation — no manual config needed |
370
+
371
+ **Install:** [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=alionix.neohive) · [Open VSX](https://open-vsx.org/extension/alionix/neohive) — or search "Neohive" in the Extensions panel.
372
+
373
+ <br />
374
+
375
+ <img src="https://raw.githubusercontent.com/fakiho/neohive/master/vscode-extension/assets/screenshots/vscode-extension-overview.png" alt="Neohive VS Code Extension — Team Chat, Agent Sidebar, Task Board, and Workflows" width="100%" />
376
+
377
+ <br />
378
+
279
379
  ## 🔐 Security
280
380
 
281
381
  Neohive is a **local message broker**. It passes text between CLI terminals via shared files. It does not access the internet, store API keys, or run cloud services.
@@ -307,8 +407,7 @@ Full details: [SECURITY.md](SECURITY.md)
307
407
  | MCP tools (full) | [docs/reference/tools.md](../docs/reference/tools.md) |
308
408
  | AI onboarding (repo map) | [docs/ai-onboarding.md](../docs/ai-onboarding.md) |
309
409
  | MCP tools (high-level tour) | [docs/mcp-tools-documentation.md](../docs/mcp-tools-documentation.md) |
310
- | Documentation audit / doc debt | [docs/documentation-audit.md](../docs/documentation-audit.md) |
311
- | Vision & Roadmap | [VISION.md](../VISION.md) |
410
+ | Roadmap | [ROADMAP.md](../ROADMAP.md) |
312
411
  | Security Policy | [SECURITY.md](SECURITY.md) |
313
412
  | Contributing Guide | [CONTRIBUTING.md](../CONTRIBUTING.md) |
314
413
  | Changelog | [CHANGELOG.md](CHANGELOG.md) · [root CHANGELOG](../CHANGELOG.md) |
@@ -341,8 +440,9 @@ node dashboard.js # run the dashboard
341
440
  </p>
342
441
 
343
442
  <p align="center">
443
+ <a href="https://neohive.alionix.com">Website</a> &middot;
344
444
  <a href="https://github.com/fakiho/neohive">GitHub</a> &middot;
345
445
  <a href="https://www.npmjs.com/package/neohive">npm</a> &middot;
346
- <a href="docs/documentation.md">Docs</a> &middot;
446
+ <a href="../docs/documentation.md">Docs</a> &middot;
347
447
  <a href="mailto:contact@alionix.com">Contact</a>
348
448
  </p>
package/SECURITY.md CHANGED
@@ -1,60 +1,15 @@
1
- # Security Policy
1
+ # Neohive Security Policy (npm package)
2
2
 
3
- ## Supported Versions
3
+ The **complete, canonical** security policy — supported versions, data model, full protections table, LAN access details — is in the repository:
4
4
 
5
- | Version | Supported |
6
- | ------- | --------- |
7
- | **6.x.x** | Yes — current major line |
8
- | **5.x.x** | Best-effort security fixes only |
9
- | **< 5.0** | No |
5
+ **[github.com/fakiho/neohive SECURITY.md](https://github.com/fakiho/neohive/blob/master/SECURITY.md)**
10
6
 
11
- Older **3.x / 2.x** lines are **not** supported; upgrade via `npx neohive init` and npm.
7
+ ---
12
8
 
13
- ## Reporting a Vulnerability
9
+ ## Reporting a vulnerability
14
10
 
15
- If you discover a security vulnerability in Neohive, please report it responsibly.
11
+ **Do not open a public GitHub issue.**
16
12
 
17
- **Do NOT open a public GitHub issue for security vulnerabilities.**
13
+ Email **contact@alionix.com** or use [GitHub private vulnerability reporting](https://github.com/fakiho/neohive/security/advisories/new).
18
14
 
19
- Instead, please email **contact@alionix.com** or use [GitHub's private vulnerability reporting](https://github.com/fakiho/neohive/security/advisories/new).
20
-
21
- ### What to include
22
-
23
- - Description of the vulnerability
24
- - Steps to reproduce
25
- - Potential impact
26
- - Suggested fix (if any)
27
-
28
- ### Response timeline
29
-
30
- - **Acknowledgment**: Within 48 hours
31
- - **Initial assessment**: Within 1 week
32
- - **Fix release**: As soon as possible, typically within 2 weeks
33
-
34
- ## Security Model
35
-
36
- Neohive is a **local message broker** — it passes text messages between CLI terminals via shared files on your local machine.
37
-
38
- ### What it does NOT do
39
-
40
- - Does not give agents filesystem access (they already have it via their CLI)
41
- - Does not expose anything to the internet by default (dashboard binds to `127.0.0.1`; **`dashboard --lan` / `NEOHIVE_LAN`** binds more broadly — use the generated LAN token)
42
- - Does not store or transmit API keys
43
- - Does not run any cloud services
44
- - Does not execute remote code
45
-
46
- ### Built-in protections
47
-
48
- - **CORS restriction** — dashboard only accepts requests from localhost
49
- - **XSS prevention** — all user inputs are escaped before rendering
50
- - **Path traversal protection** — agents cannot read files outside the project directory
51
- - **Symlink protection** — follows symlinks and validates the real path
52
- - **Origin enforcement** — POST/DELETE requests require valid localhost origin
53
- - **SSE connection limits** — prevents connection exhaustion
54
- - **Input validation** — agent names, branch names, and file paths are validated
55
- - **Message size limits** — 1MB max per message
56
- - **Plugin sandboxing** — plugins run with a 30-second timeout
57
-
58
- ### LAN mode
59
-
60
- When using `--lan` mode, the dashboard is exposed to your local network only. It is never accessible from the internet.
15
+ Include a description, reproduction steps, impact, and a suggested fix if you have one. We acknowledge within 48 hours and aim to release a fix within 2 weeks.
package/cli.js CHANGED
@@ -47,6 +47,7 @@ function printUsage() {
47
47
  npx neohive templates List available team templates
48
48
  npx neohive reset --force Clear all data (auto-archives first)
49
49
  npx neohive hooks Install listen-enforcement hooks into .claude/settings.json
50
+ npx neohive skills Install neohive skills & agents for all detected IDEs
50
51
  npx neohive uninstall Remove from all CLI configs
51
52
  npx neohive help Show this help
52
53
 
@@ -134,6 +135,117 @@ function setupClaude(serverPath, cwd) {
134
135
 
135
136
  fs.writeFileSync(mcpConfigPath, JSON.stringify(mcpConfig, null, 2) + '\n');
136
137
  console.log(' [ok] Claude Code: .mcp.json updated');
138
+ installSkillsForClaude(cwd);
139
+ }
140
+
141
+ // ─── installSkills ────────────────────────────────────────────────────────────
142
+ // Installs neohive skills, agents, and commands into the appropriate IDE dirs.
143
+ // Safe to re-run: only writes files, never deletes user files outside neohive/.
144
+
145
+ const SKILLS_SRC = path.join(__dirname, 'neohive-plugin', 'skills');
146
+ const AGENTS_SRC = path.join(__dirname, 'neohive-plugin', 'agents');
147
+
148
+ function copySkillFile(src, dest, label) {
149
+ if (!fs.existsSync(src)) return;
150
+ const existing = fs.existsSync(dest) ? fs.readFileSync(dest, 'utf8') : null;
151
+ const incoming = fs.readFileSync(src, 'utf8');
152
+ if (existing === incoming) {
153
+ console.log(` [skip] ${label} (unchanged)`);
154
+ } else {
155
+ fs.mkdirSync(path.dirname(dest), { recursive: true });
156
+ fs.writeFileSync(dest, incoming);
157
+ console.log(` [ok] ${label}`);
158
+ }
159
+ }
160
+
161
+ function installSkillsForClaude(cwd) {
162
+ // Project-level skills: .claude/skills/neohive/<skill>/SKILL.md
163
+ const skillsDir = path.join(cwd, '.claude', 'skills', 'neohive');
164
+ const agentsDir = path.join(cwd, '.claude', 'skills', 'neohive', 'agents');
165
+
166
+ if (!fs.existsSync(SKILLS_SRC)) {
167
+ console.log(' [skip] Claude skills: source not found (neohive-plugin/skills)');
168
+ return;
169
+ }
170
+
171
+ for (const skill of fs.readdirSync(SKILLS_SRC)) {
172
+ const src = path.join(SKILLS_SRC, skill, 'SKILL.md');
173
+ const dest = path.join(skillsDir, skill, 'SKILL.md');
174
+ copySkillFile(src, dest, `Claude skill: ${skill}`);
175
+ }
176
+
177
+ if (fs.existsSync(AGENTS_SRC)) {
178
+ for (const agent of fs.readdirSync(AGENTS_SRC)) {
179
+ const src = path.join(AGENTS_SRC, agent);
180
+ const dest = path.join(agentsDir, agent);
181
+ copySkillFile(src, dest, `Claude agent: ${agent}`);
182
+ }
183
+ }
184
+ }
185
+
186
+ function installSkillsForCursor(cwd) {
187
+ // .cursor/skills/neohive/<skill>/SKILL.md
188
+ // .cursor/agents/<agent>.md
189
+ // .cursor/commands/<command>.md (derived from skills)
190
+ if (!fs.existsSync(SKILLS_SRC)) {
191
+ console.log(' [skip] Cursor skills: source not found (neohive-plugin/skills)');
192
+ return;
193
+ }
194
+
195
+ for (const skill of fs.readdirSync(SKILLS_SRC)) {
196
+ const src = path.join(SKILLS_SRC, skill, 'SKILL.md');
197
+ const dest = path.join(cwd, '.cursor', 'skills', 'neohive', skill, 'SKILL.md');
198
+ copySkillFile(src, dest, `Cursor skill: ${skill}`);
199
+
200
+ // Also install as a command (slash-command style) for user-invocable skills
201
+ const content = fs.existsSync(src) ? fs.readFileSync(src, 'utf8') : '';
202
+ if (content.includes('user-invocable: true') || !content.includes('user-invocable: false')) {
203
+ const cmdDest = path.join(cwd, '.cursor', 'commands', `neohive-${skill}.md`);
204
+ copySkillFile(src, cmdDest, `Cursor command: neohive-${skill}`);
205
+ }
206
+ }
207
+
208
+ if (fs.existsSync(AGENTS_SRC)) {
209
+ for (const agent of fs.readdirSync(AGENTS_SRC)) {
210
+ const src = path.join(AGENTS_SRC, agent);
211
+ const dest = path.join(cwd, '.cursor', 'agents', `neohive-${agent}`);
212
+ copySkillFile(src, dest, `Cursor agent: neohive-${agent}`);
213
+ }
214
+ }
215
+ }
216
+
217
+ function installSkillsForAntigravity(cwd) {
218
+ // .agent/skills/neohive/<skill>/SKILL.md (already partially done in setupAntigravity)
219
+ if (!fs.existsSync(SKILLS_SRC)) {
220
+ console.log(' [skip] Antigravity skills: source not found (neohive-plugin/skills)');
221
+ return;
222
+ }
223
+
224
+ for (const skill of fs.readdirSync(SKILLS_SRC)) {
225
+ const src = path.join(SKILLS_SRC, skill, 'SKILL.md');
226
+ const dest = path.join(cwd, '.agent', 'skills', 'neohive', skill, 'SKILL.md');
227
+ copySkillFile(src, dest, `Antigravity skill: ${skill}`);
228
+ }
229
+
230
+ if (fs.existsSync(AGENTS_SRC)) {
231
+ for (const agent of fs.readdirSync(AGENTS_SRC)) {
232
+ const src = path.join(AGENTS_SRC, agent);
233
+ const dest = path.join(cwd, '.agent', 'agents', `neohive-${agent}`);
234
+ copySkillFile(src, dest, `Antigravity agent: neohive-${agent}`);
235
+ }
236
+ }
237
+ }
238
+
239
+ function installSkills(targets, cwd) {
240
+ console.log('');
241
+ console.log(' Installing Neohive skills & agents...');
242
+ for (const target of targets) {
243
+ switch (target) {
244
+ case 'claude': installSkillsForClaude(cwd); break;
245
+ case 'cursor': installSkillsForCursor(cwd); break;
246
+ case 'antigravity': installSkillsForAntigravity(cwd); break;
247
+ }
248
+ }
137
249
  }
138
250
 
139
251
  function setupGemini(serverPath, cwd) {
@@ -447,15 +559,7 @@ function setupAntigravity(cwd) {
447
559
 
448
560
  fs.writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n');
449
561
  console.log(' [ok] Antigravity: ~/.gemini/antigravity/mcp_config.json updated');
450
-
451
- // Write skill
452
- const skillDir = path.join(cwd, '.agent', 'skills', 'neohive');
453
- if (!fs.existsSync(skillDir)) fs.mkdirSync(skillDir, { recursive: true });
454
- const skillPath = path.join(skillDir, 'SKILL.md');
455
- if (!fs.existsSync(skillPath)) {
456
- fs.writeFileSync(skillPath, neohiveAgentRules('Gemini'));
457
- console.log(' [ok] Antigravity: .agent/skills/neohive/SKILL.md created');
458
- }
562
+ installSkillsForAntigravity(cwd);
459
563
  }
460
564
 
461
565
  function neohiveAgentRules(defaultName) {
@@ -563,6 +667,7 @@ function setupCursor(serverPath, cwd) {
563
667
 
564
668
  fs.writeFileSync(mcpConfigPath, JSON.stringify(mcpConfig, null, 2) + '\n');
565
669
  console.log(' [ok] Cursor IDE: .cursor/mcp.json updated');
670
+ installSkillsForCursor(cwd);
566
671
  }
567
672
 
568
673
  // Setup Ollama agent bridge script
@@ -765,6 +870,9 @@ function init() {
765
870
  }
766
871
  }
767
872
 
873
+ // Auto-install hooks for Claude targets
874
+ if (targets.includes('claude')) installHooks();
875
+
768
876
  // Add .neohive/ and MCP config files to .gitignore
769
877
  const gitignoreEntries = ['.neohive/', '.mcp.json', '.cursor/mcp.json', '.codex/', '.gemini/'];
770
878
  if (fs.existsSync(gitignorePath)) {
@@ -818,12 +926,6 @@ function init() {
818
926
  console.log(' npx neohive status');
819
927
  console.log(' npx neohive doctor');
820
928
  console.log('');
821
- if (targets.includes('claude')) {
822
- console.log(' \x1b[33m Tip (Claude Code):\x1b[0m Run `npx neohive hooks` to install listen-enforcement');
823
- console.log(' hooks into .claude/settings.json. Keeps agents in the listen loop automatically.');
824
- console.log(' Your existing hooks will not be removed.');
825
- console.log('');
826
- }
827
929
  }
828
930
  }
829
931
 
@@ -1504,6 +1606,9 @@ switch (command) {
1504
1606
  case 'hooks':
1505
1607
  installHooks();
1506
1608
  break;
1609
+ case 'skills':
1610
+ installSkills(detectCLIs().length ? detectCLIs() : ['claude', 'cursor', 'antigravity'], process.cwd());
1611
+ break;
1507
1612
  case 'uninstall':
1508
1613
  case 'remove':
1509
1614
  uninstall();
package/dashboard.html CHANGED
@@ -4,18 +4,6 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Neohive | Multi-Agent Coordination Dashboard</title>
7
- <meta name="description" content="Neohive — The ultimate multi-agent coordination and management dashboard. Orchestrate, monitor, and scale your AI workforce in real-time.">
8
- <meta name="keywords" content="AI, multi-agent systems, orchestration, dashboard, neohive, agents, automation">
9
- <meta name="author" content="Neohive Team">
10
- <meta property="og:title" content="Neohive | Multi-Agent Coordination Dashboard">
11
- <meta property="og:description" content="Orchestrate and scale your autonomous agent workforce with a stunning, high-performance real-time dashboard.">
12
- <meta property="og:type" content="website">
13
- <meta property="og:image" content="https://neohive.ai/og-image.png">
14
- <meta name="twitter:card" content="summary_large_image">
15
- <meta name="twitter:title" content="Neohive | Multi-Agent Coordination Dashboard">
16
- <meta name="twitter:description" content="The command center for your AI agent workforce. Real-time monitoring and scalable orchestration.">
17
- <meta name="twitter:image" content="https://neohive.ai/og-image.png">
18
- <meta name="robots" content="index, follow">
19
7
  <link rel="icon" href="favicon.png" type="image/png" sizes="16x16">
20
8
  <link rel="icon" href="logo.svg" type="image/svg+xml">
21
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
@@ -4603,7 +4591,7 @@
4603
4591
  </div>
4604
4592
  </div>
4605
4593
  <div class="app-footer">
4606
- <span>Neohive v6.0.0</span>
4594
+ <span>Neohive v6.4.2</span>
4607
4595
  </div>
4608
4596
  <div class="profile-popup" id="profile-popup" onclick="event.stopPropagation()">
4609
4597
  <div class="profile-popup-header">
@@ -5294,10 +5282,10 @@ function respawnAgent(agentName) {
5294
5282
  }
5295
5283
 
5296
5284
  function generateFallbackRespawnPrompt(agentName) {
5297
- return 'Register as \'' + agentName + '\', then call get_briefing() and listen_group() to rejoin the conversation. ' +
5285
+ return 'Register as \'' + agentName + '\', then call get_briefing() and listen() to rejoin the conversation. ' +
5298
5286
  'You are resuming a previous session — call get_compressed_history() to catch up on what you missed. ' +
5299
5287
  'Check your workspace with workspace_read() for any saved state. ' +
5300
- 'Then call listen_group() and respond to any pending messages.';
5288
+ 'Then call listen() and respond to any pending messages.';
5301
5289
  }
5302
5290
 
5303
5291
  function showRespawnModal(agentName, prompt) {
@@ -5503,7 +5491,7 @@ function renderMessages(messages) {
5503
5491
  } else {
5504
5492
  el.innerHTML = '<div class="empty-state">' +
5505
5493
  '<div class="empty-icon" style="font-size:40px;opacity:0.2">--</div>' +
5506
- '<div class="empty-text">Neohive v6.0</div>' +
5494
+ '<div class="empty-text">Neohive v6.4</div>' +
5507
5495
  '<div class="empty-sub">Autonomous AI agent teams — one command, zero babysitting</div>' +
5508
5496
  '<div class="onboard-steps">' +
5509
5497
  '<div class="onboard-step" style="margin-bottom:12px"><span class="onboard-num" style="background:var(--accent)"></span><span style="font-weight:600">Quickest start — one command:</span></div>' +
@@ -10313,7 +10301,7 @@ function doLaunch() {
10313
10301
  }
10314
10302
 
10315
10303
  // Use generated prompt if available, otherwise build a default
10316
- var launchPrompt = window._generatedLaunchPrompt || 'You are agent "' + agentName + '". Use the register tool to register as "' + agentName + '", then use listen_group() to join the conversation.';
10304
+ var launchPrompt = window._generatedLaunchPrompt || 'You are agent "' + agentName + '". Use the register tool to register as "' + agentName + '", then use listen() to join the conversation.';
10317
10305
  navigator.clipboard.writeText(launchPrompt).catch(function() {});
10318
10306
  selectedCli = cli;
10319
10307
 
@@ -10404,7 +10392,7 @@ function doLaunchAll() {
10404
10392
  w.state = 'launching';
10405
10393
  renderLaunchStatusTracker();
10406
10394
 
10407
- var agentPrompt = w.prompt || 'You are agent "' + w.name + '". Use the register tool to register as "' + w.name + '", then use listen_group() to join the conversation.';
10395
+ var agentPrompt = w.prompt || 'You are agent "' + w.name + '". Use the register tool to register as "' + w.name + '", then use listen() to join the conversation.';
10408
10396
 
10409
10397
  lttFetch('/api/launch', {
10410
10398
  method: 'POST',
@@ -10533,7 +10521,7 @@ function renderDocs() {
10533
10521
  el.innerHTML =
10534
10522
  '<div class="docs-container">' +
10535
10523
 
10536
- '<h2>Neohive v6.0</h2>' +
10524
+ '<h2>Neohive v6.4</h2>' +
10537
10525
  '<p class="docs-subtitle">True Autonomy Engine \u2014 AI agents that self-organize, self-verify, and never stop working. Works with Claude Code, Gemini CLI, Codex CLI, and Cursor IDE.</p>' +
10538
10526
 
10539
10527
  // Quick Start — One Command
@@ -10571,7 +10559,7 @@ function renderDocs() {
10571
10559
  '<p>Opens this web dashboard at <code>http://localhost:3777</code>. You can watch agents chat in real-time, send them messages, and manage your team.</p>' +
10572
10560
  '<h4>3. Start Your Agents</h4>' +
10573
10561
  '<p>Open two or more terminal windows in your project folder. In each one, start your AI CLI (e.g. type <code>claude</code>) and tell it to register:</p>' +
10574
- '<pre><code># Terminal 1\nRegister as "Alice" and use listen_group() to join the conversation.\n\n# Terminal 2\nRegister as "Bob" and use listen_group() to join the conversation.</code></pre>' +
10562
+ '<pre><code># Terminal 1\nRegister as "Alice" and use listen() to join the conversation.\n\n# Terminal 2\nRegister as "Bob" and use listen() to join the conversation.</code></pre>' +
10575
10563
  '<p>That\'s it! Your agents can now talk to each other. Or use the <strong>Launch</strong> tab to do this with one click.</p>' +
10576
10564
  '</div>' +
10577
10565
 
@@ -10655,7 +10643,7 @@ function renderDocs() {
10655
10643
  '<h4>Can I run multiple projects?</h4>' +
10656
10644
  '<p>Yes. Each project has its own <code>.neohive/</code> directory. The dashboard supports multiple projects \u2014 click the project selector in the header to switch between them.</p>' +
10657
10645
  '<h4>How do I send a message to agents from the dashboard?</h4>' +
10658
- '<p>Click any agent\'s avatar in the Messages tab. A dialog lets you type and send a message that agents will receive on their next <code>listen_group()</code> call.</p>' +
10646
+ '<p>Click any agent\'s avatar in the Messages tab. A dialog lets you type and send a message that agents will receive on their next <code>listen()</code> call.</p>' +
10659
10647
  '</div>' +
10660
10648
 
10661
10649
  '</div>';
@@ -10674,8 +10662,8 @@ function copyLaunchPrompt() {
10674
10662
  if (!prompt) {
10675
10663
  var agentName = document.getElementById('launch-name').value.trim();
10676
10664
  prompt = agentName
10677
- ? 'You are agent "' + agentName + '". Use the register tool to register as "' + agentName + '", then use listen_group() to join the conversation.'
10678
- : 'Register with the neohive MCP tools and use listen_group() to join the conversation.';
10665
+ ? 'You are agent "' + agentName + '". Use the register tool to register as "' + agentName + '", then use listen() to join the conversation.'
10666
+ : 'Register with the neohive MCP tools and use listen() to join the conversation.';
10679
10667
  }
10680
10668
  navigator.clipboard.writeText(prompt).then(function() {
10681
10669
  var resultEl = document.getElementById('launch-result');
package/dashboard.js CHANGED
@@ -2662,9 +2662,9 @@ const server = http.createServer(async (req, res) => {
2662
2662
  prompt += `**Instructions:**\n`;
2663
2663
  prompt += `1. Register as "${agentName}" using the register tool\n`;
2664
2664
  prompt += `2. Call get_briefing() for full project context\n`;
2665
- prompt += `3. Call listen_group() to rejoin the conversation\n`;
2665
+ prompt += `3. Call listen() to rejoin the conversation\n`;
2666
2666
  prompt += `4. Announce you're back and pick up your active tasks\n`;
2667
- prompt += `5. Stay in listen_group() loop — never stop listening\n`;
2667
+ prompt += `5. Stay in listen() loop — never stop listening\n`;
2668
2668
 
2669
2669
  res.writeHead(200, { 'Content-Type': 'application/json' });
2670
2670
  res.end(JSON.stringify({
@@ -2717,7 +2717,7 @@ const server = http.createServer(async (req, res) => {
2717
2717
  try {
2718
2718
  const messagesFile = filePath('messages.jsonl', projectPath);
2719
2719
  const historyFile = filePath('history.jsonl', projectPath);
2720
- const modeText = newMode === 'responsive' ? 'Coordinator stays with human, uses consume_messages().' : 'Coordinator runs autonomously in listen() loop.';
2720
+ const modeText = newMode === 'responsive' ? 'Coordinator stays with human, uses messages(action="check").' : 'Coordinator runs autonomously in listen() loop.';
2721
2721
  const sysMsg = { id: Date.now().toString(36) + Math.random().toString(36).slice(2, 8), from: '__system__', to: '__group__', content: `[MODE] Coordinator mode changed to "${newMode}". ${modeText} Coordinator: call get_guide() to update your instructions.`, timestamp: new Date().toISOString(), system: true };
2722
2722
  fs.appendFileSync(messagesFile, JSON.stringify(sysMsg) + '\n');
2723
2723
  fs.appendFileSync(historyFile, JSON.stringify(sysMsg) + '\n');
package/lib/audit.js CHANGED
@@ -10,8 +10,8 @@ const crypto = require('crypto');
10
10
  // Configuration
11
11
  const AUDIT_MAX_SIZE = parseInt(process.env.NEOHIVE_AUDIT_MAX_SIZE) || 10485760; // 10MB
12
12
  const AUDIT_RETENTION_DAYS = parseInt(process.env.NEOHIVE_AUDIT_RETENTION_DAYS) || 30;
13
- const AUDIT_ARGS_MAX_LENGTH = parseInt(process.env.NEOHIVE_AUDIT_ARGS_MAX_LENGTH) || 500;
14
- const AUDIT_RESULT_MAX_LENGTH = parseInt(process.env.NEOHIVE_AUDIT_RESULT_MAX_LENGTH) || 1000;
13
+ const AUDIT_ARGS_MAX_LENGTH = parseInt(process.env.NEOHIVE_AUDIT_ARGS_MAX_LENGTH) || 50000;
14
+ const AUDIT_RESULT_MAX_LENGTH = parseInt(process.env.NEOHIVE_AUDIT_RESULT_MAX_LENGTH) || 10000;
15
15
  const AUDIT_LEVEL = process.env.NEOHIVE_AUDIT_LEVEL || 'standard';
16
16
 
17
17
  // Tool categories for classification
@@ -201,12 +201,14 @@ function logToolCall(agent, toolName, args, result, durationMs, context = {}) {
201
201
  }
202
202
  };
203
203
 
204
- // Truncate large args/results
205
- if (entry.args) {
206
- entry.args = JSON.parse(truncateContent(JSON.stringify(entry.args), AUDIT_ARGS_MAX_LENGTH));
204
+ // Truncate large args/results only when serializing (never parse truncated JSON)
205
+ const argsStr = JSON.stringify(entry.args);
206
+ if (argsStr && argsStr.length > AUDIT_ARGS_MAX_LENGTH) {
207
+ entry.args = { _truncated: true, preview: argsStr.substring(0, AUDIT_ARGS_MAX_LENGTH) };
207
208
  }
208
- if (entry.result) {
209
- entry.result = JSON.parse(truncateContent(JSON.stringify(entry.result), AUDIT_RESULT_MAX_LENGTH));
209
+ const resultStr = JSON.stringify(entry.result);
210
+ if (resultStr && resultStr.length > AUDIT_RESULT_MAX_LENGTH) {
211
+ entry.result = { _truncated: true, preview: resultStr.substring(0, AUDIT_RESULT_MAX_LENGTH) };
210
212
  }
211
213
 
212
214
  // Add to pending writes for batch processing
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "neohive",
3
+ "version": "6.0.2",
4
+ "description": "Multi-agent collaboration layer. Turn Claude Code into a team — agents communicate, delegate tasks, and build together. Adds /neohive:launch-team, /neohive:status, /neohive:send, /neohive:plan commands.",
5
+ "author": {
6
+ "name": "Alionix",
7
+ "url": "https://github.com/fakiho"
8
+ },
9
+ "homepage": "https://github.com/fakiho/neohive",
10
+ "repository": "https://github.com/fakiho/neohive",
11
+ "license": "SEE LICENSE IN LICENSE",
12
+ "keywords": [
13
+ "multi-agent",
14
+ "collaboration",
15
+ "team",
16
+ "communication",
17
+ "mcp",
18
+ "neohive"
19
+ ],
20
+ "skills": "./skills/",
21
+ "agents": "./agents/",
22
+ "hooks": "./hooks/hooks.json",
23
+ "mcpServers": "./.mcp.json"
24
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "mcpServers": {
3
+ "neohive": {
4
+ "command": "npx",
5
+ "args": ["-y", "neohive"],
6
+ "env": {
7
+ "NEOHIVE_DATA_DIR": "${CLAUDE_PROJECT_DIR}/.neohive"
8
+ }
9
+ }
10
+ }
11
+ }