gossipcat 0.6.5 → 0.6.7
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 +243 -753
- package/dist-dashboard/assets/index-BrM1EvA1.css +1 -0
- package/dist-dashboard/assets/index-CqSX6axm.js +81 -0
- package/dist-dashboard/index.html +2 -2
- package/dist-mcp/mcp-server.js +1874 -763
- package/docs/CURSOR_RULES.md +72 -0
- package/docs/HANDBOOK.md +11 -3
- package/package.json +2 -1
- package/dist-dashboard/assets/index-BEKs0u32.js +0 -81
- package/dist-dashboard/assets/index-CxBsFpD6.css +0 -1
package/README.md
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<
|
|
6
|
+
<strong>Multi-agent consensus code review.</strong> 3+ AI agents review your code independently, cross-check each other's findings against your actual source, and only surface what survives — and the system learns which agent to trust for what.
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<a href="https://www.npmjs.com/package/gossipcat"><img src="https://img.shields.io/npm/v/gossipcat?color=0ea5e9&v=
|
|
10
|
+
<a href="https://www.npmjs.com/package/gossipcat"><img src="https://img.shields.io/npm/v/gossipcat?color=0ea5e9&v=0650" alt="npm version" /></a>
|
|
11
11
|
<a href="https://www.npmjs.com/package/gossipcat"><img src="https://img.shields.io/npm/dw/gossipcat?color=0ea5e9" alt="npm weekly downloads" /></a>
|
|
12
12
|
<a href="https://github.com/gossipcat-ai/gossipcat-ai/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License" /></a>
|
|
13
13
|
<a href="#quickstart"><img src="https://img.shields.io/badge/node-22%2B-green" alt="Node 22+" /></a>
|
|
@@ -19,12 +19,13 @@
|
|
|
19
19
|
|
|
20
20
|
<p align="center">
|
|
21
21
|
<a href="#quickstart"><strong>Install</strong></a> ·
|
|
22
|
-
<a href="#first-run
|
|
23
|
-
<a href="#
|
|
22
|
+
<a href="#first-run"><strong>First Run</strong></a> ·
|
|
23
|
+
<a href="#daily-use"><strong>Daily Use</strong></a> ·
|
|
24
24
|
<a href="#reading-the-dashboard"><strong>Dashboard</strong></a> ·
|
|
25
|
+
<a href="#drive-it-from-your-browser"><strong>Chat Bridge</strong></a> ·
|
|
25
26
|
<a href="#troubleshooting"><strong>Troubleshooting</strong></a> ·
|
|
26
27
|
<a href="#configuration"><strong>Config</strong></a> ·
|
|
27
|
-
<a href="#
|
|
28
|
+
<a href="#mcp-tools"><strong>Tools</strong></a>
|
|
28
29
|
</p>
|
|
29
30
|
|
|
30
31
|
<br/>
|
|
@@ -34,39 +35,32 @@
|
|
|
34
35
|
<img src="https://raw.githubusercontent.com/gossipcat-ai/gossipcat-ai/master/packages/dashboard-v2/public/assets/dashboard-overview.png" alt="Gossipcat dashboard — live fleet view with per-agent vortexes, accuracy rings, signal volume, and recent hallucination catches" width="900" />
|
|
35
36
|
</p>
|
|
36
37
|
<p align="center">
|
|
37
|
-
<em>Live dashboard at <code>http://localhost
|
|
38
|
-
</p>
|
|
39
|
-
</p>
|
|
40
|
-
|
|
41
|
-
<p align="center">
|
|
42
|
-
<a href="#reading-the-dashboard">
|
|
43
|
-
<img src="https://raw.githubusercontent.com/gossipcat-ai/gossipcat-ai/master/packages/dashboard-v2/public/assets/dashboard-team.png" alt="Gossipcat Team page — per-agent accuracy, weight, signals, hallucinations, and last task" width="900" />
|
|
44
|
-
</p>
|
|
45
|
-
<p align="center">
|
|
46
|
-
<em>Per-agent leaderboard — accuracy, uniqueness, impact, hallucinations caught, and dispatch weight. Updated after every consensus round.</em>
|
|
38
|
+
<em>Live dashboard at <code>http://localhost:<port>/dashboard</code> — fleet view, signal stream, skill-graduation grid, and consensus flow, all in real time.</em>
|
|
47
39
|
</p>
|
|
48
40
|
</p>
|
|
49
41
|
|
|
50
42
|
<br/>
|
|
51
43
|
|
|
52
|
-
|
|
53
|
-
<!-- TODO: link public benchmark -->
|
|
44
|
+
## Why
|
|
54
45
|
|
|
55
|
-
|
|
46
|
+
A single AI reviewer will, with total confidence, report bugs that aren't there. You read the finding, you go look, you waste twenty minutes — the code was fine. There's no second opinion and no track record, so you can't tell a real catch from a hallucination until you've already spent the time.
|
|
56
47
|
|
|
57
|
-
|
|
48
|
+
Gossipcat runs **several agents in parallel**, has them **cross-check each other's findings against your actual `file:line`**, and only surfaces what survives. When an agent invents a finding, a peer catches it and the agent's accuracy score drops — so over time the system routes each kind of work to whoever is actually reliable at it. Cross-review catches hallucinations a solo reviewer would have shipped to you; that delta is the whole point.
|
|
58
49
|
|
|
59
|
-
|
|
50
|
+
It runs as an MCP server inside **[Claude Code](https://claude.com/claude-code)** and **[Cursor](https://cursor.com)**, ships a [live operator dashboard](#reading-the-dashboard), and lets you [drive the orchestrator straight from the browser](#drive-it-from-your-browser).
|
|
60
51
|
|
|
61
|
-
|
|
52
|
+
**The consensus tags you'll see** (this is your whole job — read these, ignore the rest):
|
|
62
53
|
|
|
63
|
-
|
|
54
|
+
| Tag | Means | What you do |
|
|
55
|
+
|-----|-------|-------------|
|
|
56
|
+
| **CONFIRMED** | Multiple agents found it and verified it against the code | Fix it |
|
|
57
|
+
| **UNIQUE** | One agent found it, cross-checked and held up | Fix it — high signal |
|
|
58
|
+
| **DISPUTED** | Agents disagreed; gossipcat re-checked the code | Trust the verdict |
|
|
59
|
+
| **UNVERIFIED** | Looks real but wasn't cross-checked yet | Glance, then verify |
|
|
64
60
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
> Most RL pipelines update model weights. **Gossipcat doesn't touch weights** — it learns by updating the prompt layer.
|
|
61
|
+
<br/>
|
|
68
62
|
|
|
69
|
-
|
|
63
|
+
## How it works
|
|
70
64
|
|
|
71
65
|
```mermaid
|
|
72
66
|
flowchart LR
|
|
@@ -86,422 +80,196 @@ flowchart LR
|
|
|
86
80
|
style E fill:#ef4444,stroke:#b91c1c,color:#fff
|
|
87
81
|
```
|
|
88
82
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
83
|
+
| Step | What happens |
|
|
84
|
+
|------|-------------|
|
|
85
|
+
| **Dispatch** | Tasks routed to agents by *dispatch weight* — each agent's measured accuracy in that category |
|
|
86
|
+
| **Parallel review** | Agents work independently, each producing findings with cited `file:line` |
|
|
87
|
+
| **Cross-review** | Each agent checks peers' findings against the real code: agree, disagree, unverified, or new |
|
|
88
|
+
| **Consensus** | Findings deduplicated and tagged CONFIRMED / DISPUTED / UNVERIFIED / UNIQUE |
|
|
89
|
+
| **Signals** | Verified findings (and caught hallucinations) become *reward signals* that update accuracy scores |
|
|
90
|
+
| **Skill development** | An agent that repeats a category of mistake gets a *skill file* — targeted instructions auto-generated from its own failure history — injected into future prompts |
|
|
94
91
|
|
|
95
|
-
|
|
96
|
-
|---|---|---|---|
|
|
97
|
-
| **Gossipcat** | 3+ agents cross-review each other's findings; confirmed bugs only | Yes — peers catch and penalize hallucinations mechanically | Yes — accuracy signals steer dispatch; skill files fix repeat failures |
|
|
98
|
-
| **Single-agent review** (Claude Code built-in, Cursor review) | One model reviews your diff | No — hallucinations ship as findings | No — no feedback loop |
|
|
99
|
-
| **LLM-as-judge cross-review** (most multi-agent frameworks) | One model grades another model's output | Partial — judge can hallucinate too; no ground truth | No — judge scores aren't wired to dispatch |
|
|
100
|
-
| **Traditional review tools** (CodeRabbit, PR-Agent) | Pattern-match + one LLM pass | No | No |
|
|
92
|
+
The reward signal is **grounded in your source code, not a judge model's opinion.** Every finding cites a real `file:line`; peers verify the citation mechanically. That ground truth is what makes the loop trustworthy enough to automate. The "policy update" is a markdown file under `.gossip/agents/<id>/skills/` — no weights touched, no fine-tuning, no RLHF. (It's effectively in-context reinforcement learning at the prompt layer; the framing is deliberate, the mechanism is exactly the table above.)
|
|
101
93
|
|
|
102
|
-
|
|
94
|
+
> A small synthesis model (`consensus_judge`, configurable) merges and deduplicates the cross-review results — it does **not** grade quality. Verdicts come from citation checks against your code, never from one model judging another.
|
|
103
95
|
|
|
104
96
|
<br/>
|
|
105
97
|
|
|
106
|
-
##
|
|
98
|
+
## Native vs Relay agents
|
|
107
99
|
|
|
108
|
-
|
|
100
|
+
Every agent has a **type** (where it runs) and a **preset** (what skills it starts with — `reviewer`, `implementer`, `researcher`, …). You mix them freely; a team of native reviewers and relay researchers is perfectly normal.
|
|
109
101
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
102
|
+
| | Native | Relay |
|
|
103
|
+
|---|---|---|
|
|
104
|
+
| **Runs as** | A host subagent — Claude Code `Agent()` / Cursor `Task()` | A WebSocket worker on the relay server |
|
|
105
|
+
| **Providers** | Your Claude Code / Cursor subscription — **no API key** | Google (Gemini), OpenAI, xAI (Grok), DeepSeek, OpenClaw, Ollama, any OpenAI-compatible endpoint |
|
|
106
|
+
| **API key** | None | Required per provider |
|
|
107
|
+
| **Defined in** | `.claude/agents/<id>.md` | `.gossip/config.json` |
|
|
108
|
+
| **Consensus, memory, skills** | Yes | Yes |
|
|
114
109
|
|
|
115
|
-
|
|
110
|
+
Both participate equally in consensus and skill development. Relay workers get `file_read` + `file_grep` during cross-review so their verification parity matches natives.
|
|
116
111
|
|
|
117
112
|
<br/>
|
|
118
113
|
|
|
119
|
-
##
|
|
120
|
-
|
|
121
|
-
| Without gossipcat | With gossipcat |
|
|
122
|
-
|---|---|
|
|
123
|
-
| One AI reviews your code — and hallucinates a finding you waste 20 minutes on | Multiple agents cross-check each other — hallucinations get caught before you see them |
|
|
124
|
-
| Every agent gets the same tasks regardless of track record | Dispatch weights route tasks to the agent with the best accuracy in that category |
|
|
125
|
-
| An agent keeps making the same class of mistake | Skill files are auto-generated from failure data and injected into future prompts |
|
|
126
|
-
| You don't know which agent to trust | Accuracy, uniqueness, and reliability scores are tracked per agent, per category |
|
|
127
|
-
|
|
128
|
-
<br/>
|
|
114
|
+
## How Gossipcat compares
|
|
129
115
|
|
|
130
|
-
|
|
116
|
+
| | What you get | Filters hallucinations | Improves over time |
|
|
117
|
+
|---|---|---|---|
|
|
118
|
+
| **Gossipcat** | 3+ agents cross-review each other's findings; confirmed bugs only | **Yes** — peers catch and penalize hallucinations mechanically | **Yes** — accuracy signals steer dispatch; skill files fix repeat failures |
|
|
119
|
+
| **Single-agent review** (Claude Code / Cursor built-in) | One model reviews your diff | No — hallucinations ship as findings | No feedback loop |
|
|
120
|
+
| **Model-grades-model review** | One model scores another's output | Partial — the judge can hallucinate too; no ground truth | Scores aren't wired to dispatch |
|
|
121
|
+
| **Pattern-match tools** (lint-style PR bots) | Rules + one LLM pass | No | No |
|
|
131
122
|
|
|
132
|
-
|
|
133
|
-
- You don't trust a single agent to catch everything
|
|
134
|
-
- You want agents to **cross-check each other's findings** before you act on them
|
|
135
|
-
- You want to know which agents are **actually accurate** vs. hallucinating
|
|
136
|
-
- You want agents that **get better over time** based on their track record
|
|
137
|
-
|
|
138
|
-
<br/>
|
|
139
|
-
|
|
140
|
-
## Features
|
|
141
|
-
|
|
142
|
-
<table>
|
|
143
|
-
<tr>
|
|
144
|
-
<td align="center" width="33%">
|
|
145
|
-
<h3>Consensus Review</h3>
|
|
146
|
-
3+ agents review independently, then cross-review each other. Findings tagged as CONFIRMED, DISPUTED, or UNIQUE.
|
|
147
|
-
</td>
|
|
148
|
-
<td align="center" width="33%">
|
|
149
|
-
<h3>Adaptive Dispatch</h3>
|
|
150
|
-
Agent accuracy is tracked per-category. Dispatch weights adjust automatically — the best agent for the job gets picked.
|
|
151
|
-
</td>
|
|
152
|
-
<td align="center" width="33%">
|
|
153
|
-
<h3>Skill Development</h3>
|
|
154
|
-
When an agent keeps failing in a category, targeted skills are generated from failure data and injected into future prompts. Effectiveness is measured with a z-test on post-bind signals — passed, failed, or inconclusive.
|
|
155
|
-
</td>
|
|
156
|
-
</tr>
|
|
157
|
-
<tr>
|
|
158
|
-
<td align="center">
|
|
159
|
-
<h3>Multi-Provider</h3>
|
|
160
|
-
Mix Anthropic, Google, OpenAI, and OpenClaw agents in one team. Each brings different strengths. Native agents need no API key. 🦞 Lobster friendly.
|
|
161
|
-
</td>
|
|
162
|
-
<td align="center">
|
|
163
|
-
<h3>Live Dashboard</h3>
|
|
164
|
-
Real-time view of tasks, consensus reports, agent scores, and activity feed. Terminal Amber theme. WebSocket updates.
|
|
165
|
-
</td>
|
|
166
|
-
<td align="center">
|
|
167
|
-
<h3>Agent Memory</h3>
|
|
168
|
-
Per-agent cognitive memory persists across sessions. Agents remember past findings, patterns, and project context.
|
|
169
|
-
</td>
|
|
170
|
-
</tr>
|
|
171
|
-
<tr>
|
|
172
|
-
<td align="center" colspan="3">
|
|
173
|
-
<h3>Auto-Verify (v0.4.30)</h3>
|
|
174
|
-
Opt-in. Every UNVERIFIED finding gets <code>file_read</code>-checked by a verifier agent before the report is returned. <code>tag</code> stays <code>'unverified'</code> — auto-verify is metadata, not state transition. Flag: <code>GOSSIP_CONSENSUS_AUTO_VERIFY_UNVERIFIED=1</code>.
|
|
175
|
-
</td>
|
|
176
|
-
</tr>
|
|
177
|
-
</table>
|
|
123
|
+
The difference: gossipcat verifies findings against actual `file:line` citations in *your* codebase. That ground truth is what makes the reward signal trustworthy enough to automate.
|
|
178
124
|
|
|
179
125
|
<br/>
|
|
180
126
|
|
|
181
127
|
<div align="center">
|
|
182
128
|
<table>
|
|
183
129
|
<tr>
|
|
184
|
-
<td align="center"><strong>
|
|
185
|
-
<td align="center">
|
|
186
|
-
|
|
187
|
-
</td>
|
|
188
|
-
<td align="center"><strong>
|
|
189
|
-
<td align="center"><strong>Windsurf</strong><br/><sub>Not yet</sub></td>
|
|
190
|
-
<td align="center"><strong>VS Code</strong><br/><sub>Not yet</sub></td>
|
|
191
|
-
</tr>
|
|
192
|
-
</table>
|
|
193
|
-
|
|
194
|
-
<br/>
|
|
195
|
-
|
|
196
|
-
<table>
|
|
197
|
-
<tr>
|
|
198
|
-
<td align="center"><strong>Provider<br/>gateways</strong></td>
|
|
199
|
-
<td align="center">
|
|
200
|
-
<img src="https://img.shields.io/badge/OpenClaw-gateway-4A90D9?style=flat" alt="OpenClaw" /><br/><sub>HTTP gateway ✅</sub>
|
|
201
|
-
</td>
|
|
202
|
-
<td align="center">
|
|
203
|
-
<img src="https://img.shields.io/badge/Ollama-local-gray?style=flat" alt="Ollama" /><br/><sub>Local models ✅</sub>
|
|
204
|
-
</td>
|
|
205
|
-
<td align="center">
|
|
206
|
-
<img src="https://img.shields.io/badge/OpenAI--compatible-any-green?style=flat" alt="OpenAI-compatible" /><br/><sub>Any base_url ✅</sub>
|
|
207
|
-
</td>
|
|
130
|
+
<td align="center"><strong>Runs in</strong></td>
|
|
131
|
+
<td align="center"><img src="https://img.shields.io/badge/Claude%20Code-supported-orange?style=flat&logo=anthropic&logoColor=white" alt="Claude Code" /><br/><sub>Full support</sub></td>
|
|
132
|
+
<td align="center"><img src="https://img.shields.io/badge/Cursor-supported-0ea5e9?style=flat&logoColor=white" alt="Cursor" /><br/><sub>Full support</sub></td>
|
|
133
|
+
<td align="center"><strong>Windsurf</strong><br/><sub>Planned</sub></td>
|
|
134
|
+
<td align="center"><strong>VS Code</strong><br/><sub>Planned</sub></td>
|
|
208
135
|
</tr>
|
|
209
136
|
</table>
|
|
137
|
+
<sub>Native agents run on Claude Code <code>Agent()</code> and Cursor <code>Task()</code>. Other MCP hosts work in relay-only mode (no native subagents).</sub>
|
|
210
138
|
</div>
|
|
211
139
|
|
|
212
140
|
<br/>
|
|
213
141
|
|
|
214
|
-
## How it works
|
|
215
|
-
|
|
216
|
-
The Mermaid diagram above shows the loop end-to-end. Here's the per-step definition:
|
|
217
|
-
|
|
218
|
-
| Step | What happens |
|
|
219
|
-
|------|-------------|
|
|
220
|
-
| **Dispatch** | Tasks routed to agents based on dispatch weights (accuracy history per category) |
|
|
221
|
-
| **Parallel review** | Agents work independently, each producing findings with confidence scores |
|
|
222
|
-
| **Cross-review** | Each agent reviews peers' findings: agree, disagree, unverified, or new finding |
|
|
223
|
-
| **Consensus** | Findings deduplicated and tagged: CONFIRMED, DISPUTED, UNVERIFIED, UNIQUE |
|
|
224
|
-
| **Signals** | You verify findings against code and record accuracy signals |
|
|
225
|
-
| **Skill development** | Agents with repeated failures get targeted skill files injected into future prompts |
|
|
226
|
-
|
|
227
|
-
<br/>
|
|
228
|
-
|
|
229
|
-
## Two types of agents
|
|
230
|
-
|
|
231
|
-
| | Native | Relay |
|
|
232
|
-
|---|---|---|
|
|
233
|
-
| **Runs as** | Claude Code subagent (`Agent()` tool) | WebSocket worker on relay server |
|
|
234
|
-
| **Providers** | Anthropic (Claude) | Google (Gemini), OpenAI, any provider |
|
|
235
|
-
| **API key** | None — uses your Claude Code subscription | Required per provider |
|
|
236
|
-
| **Defined in** | `.claude/agents/*.md` | `.gossip/config.json` |
|
|
237
|
-
| **Consensus** | Yes | Yes |
|
|
238
|
-
| **Memory & Skills** | Yes | Yes |
|
|
239
|
-
|
|
240
|
-
Both types participate equally in consensus, cross-review, and skill development. Native subagents get skill files injected into their system prompts and can call `gossip_remember` for memory recall. Relay workers call the equivalent `memory_query` tool and get `file_read` + `file_grep` during cross-review so their verification parity matches natives.
|
|
241
|
-
|
|
242
|
-
<br/>
|
|
243
|
-
|
|
244
142
|
## Quickstart
|
|
245
143
|
|
|
246
|
-
**Requirements:** Node.js 22+ and
|
|
144
|
+
**Requirements:** Node.js 22+ and either host below. Claude Code and Cursor are co-equal first-class hosts — pick the one you use; gossipcat auto-detects it and runs native agents either way.
|
|
247
145
|
|
|
248
|
-
|
|
146
|
+
**Fastest path (skills CLI):** one command installs the server and walks you through setup:
|
|
249
147
|
|
|
250
148
|
```bash
|
|
251
|
-
|
|
149
|
+
npx skills add gossipcat-ai/gossipcat-ai
|
|
252
150
|
```
|
|
253
151
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
> "Set up a gossipcat team for this project"
|
|
257
|
-
|
|
258
|
-
<details>
|
|
259
|
-
<summary><strong>Manual MCP config</strong> (if <code>claude mcp add</code> doesn't work for your setup)</summary>
|
|
260
|
-
|
|
261
|
-
Add to `~/.claude/mcp_settings.json`:
|
|
152
|
+
This drops an installer skill into `.claude/skills/`; your agent runs the install and then hands off to `gossip_status()` for the live rules. Prefer it over the manual steps below if you use the [skills](https://github.com/vercel-labs/skills) CLI. The manual npm install is documented next.
|
|
262
153
|
|
|
263
|
-
|
|
264
|
-
{
|
|
265
|
-
"mcpServers": {
|
|
266
|
-
"gossipcat": {
|
|
267
|
-
"command": "gossipcat"
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
Or project-local in `.mcp.json`:
|
|
274
|
-
|
|
275
|
-
```json
|
|
276
|
-
{
|
|
277
|
-
"mcpServers": {
|
|
278
|
-
"gossipcat": {
|
|
279
|
-
"command": "npx",
|
|
280
|
-
"args": ["gossipcat"]
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
</details>
|
|
287
|
-
|
|
288
|
-
Claude Code will call `gossip_setup()` to scaffold `.gossip/config.json` and your agent team. First-run bootstrap also writes the dispatch rules and tool catalog so Claude Code knows how to use gossipcat — no manual config needed.
|
|
289
|
-
|
|
290
|
-
Gossipcat is on **[npm](https://www.npmjs.com/package/gossipcat)** and **[GitHub Releases](https://github.com/gossipcat-ai/gossipcat-ai/releases)** — both carry the same bundle. `npm install -g gossipcat` pulls from the registry and is the shortest path; the GitHub release URL is useful when you want to pin to a specific tarball (see [Alternative install paths](#alternative-install-paths) below). Either way, npm drops a `gossipcat` binary on your `PATH`.
|
|
291
|
-
|
|
292
|
-
### What the install ships
|
|
293
|
-
|
|
294
|
-
| | What you get |
|
|
295
|
-
|---|---|
|
|
296
|
-
| **MCP server** | Bundled binary at `dist-mcp/mcp-server.js`, wired as the `gossipcat` command on `PATH` |
|
|
297
|
-
| **Dashboard** | Prebuilt static assets in `dist-dashboard/` — launches automatically on a dynamic port (ask Claude Code *"what's my gossipcat dashboard URL?"*). Override with `GOSSIPCAT_PORT=24420` if you want a stable port. |
|
|
298
|
-
| **Default skills + rules + archetypes** | 16 bundled skill templates, operational rules, and project archetypes copied into the install |
|
|
299
|
-
| **Postinstall wizard** | Writes `.mcp.json` with correct absolute paths for your machine |
|
|
300
|
-
|
|
301
|
-
### Alternative install paths
|
|
302
|
-
|
|
303
|
-
**Pin to a specific npm version:**
|
|
154
|
+
Install the package once:
|
|
304
155
|
```bash
|
|
305
|
-
npm install -g gossipcat
|
|
156
|
+
npm install -g gossipcat
|
|
306
157
|
```
|
|
307
158
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
**Project-local install** (each project gets its own gossipcat):
|
|
314
|
-
```bash
|
|
315
|
-
cd your-project
|
|
316
|
-
npm install --save-dev gossipcat
|
|
317
|
-
```
|
|
318
|
-
The postinstall writes `.mcp.json` to your project root. Open Claude Code in that directory and gossipcat connects automatically — no `claude mcp add` needed.
|
|
159
|
+
<table>
|
|
160
|
+
<tr><th><a href="https://claude.com/claude-code">Claude Code</a></th><th><a href="https://cursor.com">Cursor</a></th></tr>
|
|
161
|
+
<tr valign="top">
|
|
162
|
+
<td>
|
|
319
163
|
|
|
320
|
-
|
|
164
|
+
Register the MCP server:
|
|
321
165
|
```bash
|
|
322
|
-
|
|
323
|
-
cd gossipcat-ai
|
|
324
|
-
npm install
|
|
325
|
-
npm run build:mcp
|
|
326
|
-
claude mcp add gossipcat -s user -- node "$PWD/dist-mcp/mcp-server.js"
|
|
166
|
+
claude mcp add gossipcat -s user -- gossipcat
|
|
327
167
|
```
|
|
168
|
+
Restart Claude Code. Native agents dispatch via `Agent()`.
|
|
328
169
|
|
|
329
|
-
|
|
170
|
+
</td>
|
|
171
|
+
<td>
|
|
330
172
|
|
|
331
|
-
|
|
332
|
-
```
|
|
333
|
-
|
|
173
|
+
Add to `.cursor/mcp.json`:
|
|
174
|
+
```jsonc
|
|
175
|
+
{ "mcpServers": {
|
|
176
|
+
"gossipcat": { "command": "gossipcat" }
|
|
177
|
+
} }
|
|
334
178
|
```
|
|
335
|
-
|
|
179
|
+
Reload Cursor. Native agents dispatch via `Task()`.
|
|
336
180
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
| Provider | Env var | Notes |
|
|
342
|
-
|----------|---------|-------|
|
|
343
|
-
| Native (Claude Code) | — | Dispatches through your active Claude Code subscription. No key needed. |
|
|
344
|
-
| Anthropic API | `ANTHROPIC_API_KEY` | Direct API access if you don't want to go through Claude Code. |
|
|
345
|
-
| Google Gemini | `GOOGLE_API_KEY` | Gemini Pro / Flash relay agents. |
|
|
346
|
-
| OpenAI | `OPENAI_API_KEY` (+ optional `OPENAI_BASE_URL`) | GPT-4 / GPT-4o relay agents. `OPENAI_BASE_URL` lets you point at OpenAI-compatible gateways (Azure, Together, Groq, etc.). |
|
|
347
|
-
| OpenClaw | — (local gateway) | OpenAI-compatible, defaults to `http://127.0.0.1:18789/v1`. No API key — auth handled by your local OpenClaw daemon. |
|
|
348
|
-
| Ollama (local) | — | Runs locally via `http://localhost:11434`. No key. Pull your model first with `ollama pull llama3.1:8b`. |
|
|
349
|
-
|
|
350
|
-
#### Examples — registering gossipcat with each provider
|
|
181
|
+
</td>
|
|
182
|
+
</tr>
|
|
183
|
+
</table>
|
|
351
184
|
|
|
352
|
-
|
|
353
|
-
```bash
|
|
354
|
-
claude mcp add gossipcat -s user -- gossipcat
|
|
355
|
-
```
|
|
356
|
-
Then in session ask for a team built from `sonnet-reviewer` / `haiku-researcher` / `opus-implementer`. Native agents dispatch through `Agent()` and relay back. Good zero-config starting point.
|
|
185
|
+
Then in any project, ask the orchestrator: *"Set up a gossipcat team for this project."*
|
|
357
186
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
claude mcp add gossipcat -s user \
|
|
361
|
-
-e ANTHROPIC_API_KEY=sk-ant-... \
|
|
362
|
-
-- gossipcat
|
|
363
|
-
```
|
|
364
|
-
Use this if you want relay agents running Claude models without going through the Claude Code subscription path — e.g. for parallelism beyond Claude Code's concurrency cap, or for running long background reviews while you keep working.
|
|
187
|
+
<details>
|
|
188
|
+
<summary><strong>Manual MCP config / alternative install paths</strong></summary>
|
|
365
189
|
|
|
366
|
-
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
-e GOOGLE_API_KEY=AIza... \
|
|
370
|
-
-- gossipcat
|
|
190
|
+
Add to `~/.claude/mcp_settings.json` (Claude Code) or project-local `.mcp.json`:
|
|
191
|
+
```json
|
|
192
|
+
{ "mcpServers": { "gossipcat": { "command": "npx", "args": ["gossipcat"] } } }
|
|
371
193
|
```
|
|
372
|
-
Enables `gemini-reviewer`, `gemini-tester`, `gemini-implementer` on the relay. Watch the quota — gossipcat has a built-in 429 watcher that falls back to native agents when Gemini is cooling down.
|
|
373
194
|
|
|
374
|
-
**OpenAI** (and OpenAI-compatible gateways):
|
|
375
195
|
```bash
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
-- gossipcat
|
|
379
|
-
```
|
|
380
|
-
For Azure / Together / Groq / OpenRouter, add `OPENAI_BASE_URL`:
|
|
381
|
-
```bash
|
|
382
|
-
claude mcp add gossipcat -s user \
|
|
383
|
-
-e OPENAI_API_KEY=your-key \
|
|
384
|
-
-e OPENAI_BASE_URL=https://api.groq.com/openai/v1 \
|
|
385
|
-
-- gossipcat
|
|
386
|
-
```
|
|
196
|
+
# Pin to a version
|
|
197
|
+
npm install -g gossipcat@0.6.5
|
|
387
198
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
# Start the OpenClaw daemon first (see openclaw docs), default port 18789
|
|
391
|
-
claude mcp add gossipcat -s user -- gossipcat
|
|
392
|
-
```
|
|
393
|
-
No env vars. Configure an agent with `provider: "openclaw"` in `.gossip/config.json` and gossipcat talks to the local gateway automatically. Override the port with `base_url` in the agent config if your daemon runs elsewhere.
|
|
199
|
+
# Pin to a GitHub release tarball (bypasses the npm registry)
|
|
200
|
+
npm install -g https://github.com/gossipcat-ai/gossipcat-ai/releases/download/v0.6.5/gossipcat-0.6.5.tgz
|
|
394
201
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
# Pull a model once
|
|
398
|
-
ollama pull llama3.1:8b
|
|
399
|
-
# Then register gossipcat
|
|
400
|
-
claude mcp add gossipcat -s user -- gossipcat
|
|
401
|
-
```
|
|
402
|
-
Configure the agent with `provider: "local"` and `model: "llama3.1:8b"` in `.gossip/config.json`. Good for airgapped dev, offline work, and burning-down-test-debt sessions where you don't want to spend API credits.
|
|
202
|
+
# Project-local (postinstall writes .mcp.json — open the IDE there, no `mcp add` needed)
|
|
203
|
+
cd your-project && npm install --save-dev gossipcat
|
|
403
204
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
-e ANTHROPIC_API_KEY=sk-ant-... \
|
|
409
|
-
-- gossipcat
|
|
205
|
+
# From source (contributors)
|
|
206
|
+
git clone https://github.com/gossipcat-ai/gossipcat-ai.git && cd gossipcat-ai
|
|
207
|
+
npm install && npm run build:mcp
|
|
208
|
+
claude mcp add gossipcat -s user -- node "$PWD/dist-mcp/mcp-server.js"
|
|
410
209
|
```
|
|
411
|
-
Then set up a team with `gemini-reviewer` + `haiku-researcher` (native) + `opus-implementer` (native) + `sonnet-reviewer` (native). Gossipcat dispatches by category strength from the signal pipeline.
|
|
412
210
|
|
|
413
|
-
|
|
414
|
-
- **macOS** — OS Keychain
|
|
415
|
-
- **Linux** — Secret Service (`secret-tool`)
|
|
416
|
-
- **Windows / other** — AES-256-GCM encrypted file
|
|
211
|
+
The install ships the MCP server binary, the prebuilt dashboard (`dist-dashboard/`, launches on a dynamic port), bundled skill templates + rules + project archetypes, and a postinstall wizard that writes `.mcp.json` with correct absolute paths.
|
|
417
212
|
|
|
418
|
-
|
|
213
|
+
**Upgrade:** `npm install -g gossipcat@latest`, or ask in-session *"check for gossipcat updates"* (the `gossip_update` tool applies it with your confirmation).
|
|
214
|
+
</details>
|
|
419
215
|
|
|
420
|
-
|
|
216
|
+
### API keys (relay agents only)
|
|
421
217
|
|
|
422
|
-
|
|
423
|
-
"Set up a gossipcat team with a Gemini reviewer and a Sonnet implementer"
|
|
424
|
-
```
|
|
218
|
+
Native agents need **no key**. For relay agents, pass provider keys with `-e` at registration or set them in your shell:
|
|
425
219
|
|
|
426
|
-
|
|
220
|
+
| Provider | How | Notes |
|
|
221
|
+
|----------|-----|-------|
|
|
222
|
+
| Native (Claude Code / Cursor) | — | Runs through your subscription. No key. |
|
|
223
|
+
| Anthropic API | `ANTHROPIC_API_KEY` | Direct API access without the subscription path |
|
|
224
|
+
| Google Gemini | `GOOGLE_API_KEY` | Built-in 429 watcher falls back to native on cooldown |
|
|
225
|
+
| OpenAI / compatible | `OPENAI_API_KEY` (+ `OPENAI_BASE_URL`) | Point `BASE_URL` at Azure / Together / Groq / OpenRouter |
|
|
226
|
+
| xAI (Grok) | OS keychain via `key_ref` | No env var — store in keychain, set `key_ref` (default service `grok`) |
|
|
227
|
+
| DeepSeek | OS keychain via `key_ref` | No env var — keychain, `key_ref` default service `deepseek` |
|
|
228
|
+
| OpenClaw 🦞 | — (local gateway) | OpenAI-compatible at `http://127.0.0.1:18789/v1`, auth via the local daemon |
|
|
229
|
+
| Ollama (local) | — | `http://localhost:11434`. `ollama pull llama3.1:8b` first |
|
|
427
230
|
|
|
428
|
-
|
|
231
|
+
Keys are stored persistently and cross-platform — macOS Keychain, Linux Secret Service (`secret-tool`), or an AES-256-GCM encrypted file on Windows. Mixing providers is the common production shape: cheap Gemini reviewers + native heavy implementers, dispatched by category strength.
|
|
429
232
|
|
|
430
233
|
<br/>
|
|
431
234
|
|
|
432
|
-
## First Run
|
|
433
|
-
|
|
434
|
-
The fastest path from "just installed" to "first useful review". If you skip this section you'll probably get stuck on the same things everyone else gets stuck on.
|
|
435
|
-
|
|
436
|
-
### Step 1 — Open Claude Code in any project
|
|
437
|
-
|
|
438
|
-
```bash
|
|
439
|
-
cd ~/your-project
|
|
440
|
-
claude
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
Gossipcat is registered globally now, so it boots automatically. You'll see it in the MCP server list.
|
|
235
|
+
## First Run
|
|
444
236
|
|
|
445
|
-
|
|
237
|
+
The fastest path from "just installed" to "first useful review."
|
|
446
238
|
|
|
447
|
-
In Claude Code,
|
|
239
|
+
**1 · Open your IDE in a project and bootstrap once.** In Claude Code or Cursor, run:
|
|
448
240
|
|
|
449
241
|
> **Run gossip_status**
|
|
450
242
|
|
|
451
|
-
This loads gossipcat's operating rules into the
|
|
243
|
+
This loads gossipcat's operating rules into the session, creates `.gossip/` on first run, and prints the dashboard URL + auth key:
|
|
452
244
|
|
|
453
|
-
You'll see something like:
|
|
454
245
|
```
|
|
455
246
|
Status:
|
|
456
|
-
Host: claude-code (native agents supported)
|
|
457
|
-
Relay: running :49664
|
|
458
|
-
Workers: 0
|
|
459
|
-
Dashboard: http://localhost:49664/dashboard (key:
|
|
460
|
-
Quota: google — OK
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
Open the dashboard URL in your browser, paste the key. You're now connected.
|
|
464
|
-
|
|
465
|
-
### Step 3 — Create your first team
|
|
466
|
-
|
|
467
|
-
Tell Claude what you're building:
|
|
468
|
-
|
|
469
|
-
> **"Set up a gossipcat team for this project — it's a TypeScript Next.js app with a Postgres backend and Stripe payments."**
|
|
470
|
-
|
|
471
|
-
Claude calls `gossip_setup()` and proposes a team. Typical proposal:
|
|
472
|
-
|
|
473
|
-
```
|
|
474
|
-
Proposed team:
|
|
475
|
-
- sonnet-reviewer (anthropic/claude-sonnet-4-6, native) reviewer + security
|
|
476
|
-
- gemini-reviewer (google/gemini-2.5-pro, relay) reviewer + types
|
|
477
|
-
- haiku-researcher (anthropic/claude-haiku-4-5, native) researcher
|
|
478
|
-
- opus-implementer (anthropic/claude-opus-4-6, native) implementer
|
|
479
|
-
|
|
480
|
-
Approve? (y/n)
|
|
247
|
+
Host: claude-code (native agents supported) ← which IDE you're in
|
|
248
|
+
Relay: running :49664 ← background server for agents + dashboard
|
|
249
|
+
Workers: 0 ← agents busy right now (rises during a round)
|
|
250
|
+
Dashboard: http://localhost:49664/dashboard (key: c3208820…) ← open it, paste the key
|
|
251
|
+
Quota: google — OK ← provider rate-limit status (falls back to native on cooldown)
|
|
481
252
|
```
|
|
482
253
|
|
|
483
|
-
|
|
254
|
+
Open the dashboard URL, paste the key (it rotates each boot — re-run `gossip_status` for a fresh one).
|
|
484
255
|
|
|
485
|
-
|
|
256
|
+
**2 · Create your first team.** Tell the orchestrator what you're building:
|
|
486
257
|
|
|
487
|
-
|
|
258
|
+
> *"Set up a gossipcat team for this project — a TypeScript Next.js app with Postgres and Stripe."*
|
|
488
259
|
|
|
489
|
-
|
|
260
|
+
It proposes a team matched to your stack. **Smallest working team: `sonnet-reviewer` + `haiku-researcher` — both native, zero API keys.** Drop any relay agent whose provider key you don't have; add it later. Native agents (`native: true`) run on your subscription. Approve, and `.gossip/config.json` is written.
|
|
490
261
|
|
|
491
|
-
|
|
262
|
+
**3 · Run your first review** in a project with some changes:
|
|
492
263
|
|
|
493
|
-
|
|
264
|
+
> *"Do a consensus review of my recent changes"*
|
|
494
265
|
|
|
495
266
|
| Phase | Time | What you see |
|
|
496
267
|
|---|---|---|
|
|
497
|
-
|
|
|
498
|
-
|
|
|
499
|
-
|
|
|
500
|
-
|
|
|
501
|
-
|
|
|
502
|
-
| 6. Signal recording | <1s | Accuracy signals saved per agent |
|
|
503
|
-
|
|
504
|
-
You get a report like:
|
|
268
|
+
| Decompose | ~1s | Orchestrator picks agents, dispatches in parallel |
|
|
269
|
+
| Independent review | 30s–2min | Each agent reads your diff and reports findings |
|
|
270
|
+
| Cross-review | 30s–1min | Each agent checks the others' findings against the code |
|
|
271
|
+
| Consensus report | <1s | Findings tagged CONFIRMED / DISPUTED / UNVERIFIED / UNIQUE |
|
|
272
|
+
| Verify + record | <1s | UNVERIFIED checked against code; accuracy signals saved |
|
|
505
273
|
|
|
506
274
|
```
|
|
507
275
|
Consensus round b81956b2-e0fa4ea4 — 3 agents
|
|
@@ -509,322 +277,180 @@ Consensus round b81956b2-e0fa4ea4 — 3 agents
|
|
|
509
277
|
CONFIRMED (2):
|
|
510
278
|
[critical] Race condition in tasks Map at server.ts:47 — sonnet + gemini
|
|
511
279
|
[high] Missing auth on WebSocket upgrade at server.ts:112 — sonnet + gemini
|
|
512
|
-
|
|
513
280
|
UNIQUE (1):
|
|
514
281
|
[medium] String concat in SQL query at queries.ts:88 — only sonnet caught this
|
|
515
|
-
|
|
516
282
|
DISPUTED (1):
|
|
517
283
|
[low] "Memory leak in timer" — haiku says yes, sonnet/gemini say no
|
|
518
|
-
→ verified
|
|
284
|
+
→ verified: not a leak, cleanup is in finally. False alarm caught.
|
|
519
285
|
|
|
520
286
|
Final: 3 real bugs to fix, 1 false alarm caught by cross-review.
|
|
521
287
|
```
|
|
522
288
|
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
### Step 5 — Watch the dashboard
|
|
526
|
-
|
|
527
|
-
The dashboard shows everything live: agents, scores, active tasks, consensus reports, signals. You can leave it open in a tab while you work — every gossipcat tool call pushes an update via WebSocket.
|
|
528
|
-
|
|
529
|
-
That's the basic loop. The rest of this README covers advanced workflows, troubleshooting, and how to interpret what you're seeing.
|
|
289
|
+
Act on **CONFIRMED** + verified **UNIQUE**. The false alarm that cross-review caught is the bug a single reviewer would have shipped to you.
|
|
530
290
|
|
|
531
291
|
<br/>
|
|
532
292
|
|
|
533
|
-
## How to use it day-to-day
|
|
534
|
-
|
|
535
|
-
Concrete recipes for the most common workflows. Each one shows what to type, what you'll get back, and what to do with it.
|
|
536
|
-
|
|
537
|
-
### Recipe 1: Review a diff before committing
|
|
538
|
-
|
|
539
|
-
**Type:**
|
|
540
|
-
> "Review my staged changes"
|
|
293
|
+
## <a id="daily-use"></a>How to use it day-to-day
|
|
541
294
|
|
|
542
|
-
|
|
295
|
+
Each recipe: what to type, what you get, what to do with it.
|
|
543
296
|
|
|
544
|
-
**
|
|
297
|
+
**Review a diff before committing** → *"Review my staged changes."* Consensus report in 1–3 min; fix CONFIRMED + verified findings. For diffs under ~20 lines, skip consensus — ask `gossip_run` for a single fast agent (~10s) and save the round.
|
|
545
298
|
|
|
546
|
-
**
|
|
299
|
+
**Catch security issues** → *"Security audit `lib/stripe/webhook.ts`."* Each security agent reviews from a different angle (OWASP, validation, auth, secrets); real vulns survive cross-review, theoretical ones get dropped. Be specific about the file — "audit the codebase" is too broad.
|
|
547
300
|
|
|
548
|
-
|
|
301
|
+
**Understand code before changing it** → *"Research how the WebSocket lifecycle works before I touch it."* A research agent traces call paths and writes a summary into its cognitive memory, so next time it remembers — no re-discovery cost.
|
|
549
302
|
|
|
550
|
-
|
|
303
|
+
**Verify your own assumption** → *"I think there's a race in the tasks Map at server.ts:47 — check if I'm right."* Two agents independently confirm or push back. Author self-review is optimistic; this isn't.
|
|
551
304
|
|
|
552
|
-
**
|
|
553
|
-
> "Security audit the payment handler at lib/stripe/webhook.ts"
|
|
305
|
+
**See which agents you can trust** → *"Show me agent scores."* Per-category accuracy + dispatch weights. If `gemini-reviewer` sits at 30% on `concurrency`, don't trust its concurrency findings solo.
|
|
554
306
|
|
|
555
|
-
**
|
|
307
|
+
**Improve a struggling agent** → *"gemini-reviewer keeps hallucinating about concurrency — develop a skill for it."* Gossipcat generates a targeted skill from its failure data and measures whether it works (z-test on post-bind signals). Then it's automatic.
|
|
556
308
|
|
|
557
|
-
**
|
|
558
|
-
|
|
559
|
-
**Tip:** Be specific about the file or module. "Security audit the codebase" is too broad and produces noisy results. "Security audit `lib/stripe/webhook.ts`" produces actionable findings.
|
|
560
|
-
|
|
561
|
-
---
|
|
562
|
-
|
|
563
|
-
### Recipe 3: Understand a piece of code before changing it
|
|
564
|
-
|
|
565
|
-
**Type:**
|
|
566
|
-
> "Research how the WebSocket connection lifecycle works in this project before I touch it"
|
|
567
|
-
|
|
568
|
-
**What you'll get:** A research agent (haiku-researcher by default — fast and cheap) reads the code, traces call paths, and writes a summary. The summary is saved to that agent's cognitive memory so the next time you ask about the same area it remembers.
|
|
569
|
-
|
|
570
|
-
**What to do with it:** Use the summary to plan your change. The agent will reference it next time you ask anything related — no re-discovery cost.
|
|
571
|
-
|
|
572
|
-
---
|
|
573
|
-
|
|
574
|
-
### Recipe 4: Verify your own assumption
|
|
575
|
-
|
|
576
|
-
**Type:**
|
|
577
|
-
> "I think there's a race condition in the tasks Map at server.ts:47 — check if I'm right"
|
|
578
|
-
|
|
579
|
-
**What you'll get:** Two agents independently check the specific claim and either confirm or push back. Author self-review is optimistic — this isn't.
|
|
580
|
-
|
|
581
|
-
**What to do with it:** If both agree with you, fix it. If they push back, read their reasoning before defending your hypothesis. They might be right.
|
|
582
|
-
|
|
583
|
-
---
|
|
584
|
-
|
|
585
|
-
### Recipe 5: See which agents you can actually trust
|
|
586
|
-
|
|
587
|
-
**Type:**
|
|
588
|
-
> "Show me agent scores"
|
|
589
|
-
|
|
590
|
-
**What you'll get:** A table of agents sorted by reliability with per-category accuracy and dispatch weights. Categories include `trust_boundaries`, `injection_vectors`, `concurrency`, `error_handling`, `data_integrity`, `type_safety`, etc.
|
|
591
|
-
|
|
592
|
-
**What to do with it:** If `gemini-reviewer` is sitting at 30% accuracy on `concurrency`, you know not to trust its concurrency findings without cross-review. If `sonnet-reviewer` is at 90% on `trust_boundaries`, you can ship its findings on auth/session bugs with high confidence.
|
|
593
|
-
|
|
594
|
-
---
|
|
595
|
-
|
|
596
|
-
### Recipe 6: Improve an agent that keeps making the same mistake
|
|
597
|
-
|
|
598
|
-
**Type:**
|
|
599
|
-
> "gemini-reviewer keeps hallucinating about concurrency — develop a skill for it"
|
|
600
|
-
|
|
601
|
-
**What you'll get:** Gossipcat reads gemini-reviewer's failure data, generates a targeted skill file with concrete anti-patterns, and injects it into the agent's prompt for all future concurrency-related reviews. Effectiveness is measured statistically (z-test on post-bind signals) — it'll tell you if the skill is actually working after ~30 dispatches.
|
|
602
|
-
|
|
603
|
-
**What to do with it:** Nothing — it's automatic. Just keep using the agent. Over time, the failure rate drops.
|
|
604
|
-
|
|
605
|
-
---
|
|
606
|
-
|
|
607
|
-
### Recipe 7: Set up a team for a brand-new project
|
|
608
|
-
|
|
609
|
-
**Type:**
|
|
610
|
-
> "Set up a gossipcat team for a TypeScript Cloudflare Workers project with Drizzle ORM and KV storage"
|
|
611
|
-
|
|
612
|
-
**What you'll get:** A proposed team with archetypes matched to your stack. Worker projects need different reviewers than long-running Node services — gossipcat picks accordingly.
|
|
613
|
-
|
|
614
|
-
**What to do with it:** Review the proposal, drop agents you can't run (missing API keys), approve.
|
|
615
|
-
|
|
616
|
-
---
|
|
617
|
-
|
|
618
|
-
### Things to avoid
|
|
619
|
-
|
|
620
|
-
- **Don't ask for "review the whole codebase"** — too broad, agents will pick whatever they find first. Scope to a file, module, or diff.
|
|
621
|
-
- **Don't approve findings without reading them** — even after cross-review, ~5% of findings are genuinely wrong. The reasoning matters more than the verdict.
|
|
622
|
-
- **Don't ignore the dashboard** — when something feels weird (slow dispatch, repeated failures, suspicious findings), the dashboard usually shows you why before you have to ask.
|
|
623
|
-
- **Don't run consensus mode for trivial questions** — `gossip_run` with one agent is fine for "what does this function do?"-tier queries. Save consensus for changes that touch shared state, auth, persistence, or the dispatch pipeline itself.
|
|
309
|
+
> **Avoid:** "review the whole codebase" (too broad — scope to a file/module/diff); approving findings without reading the reasoning; running consensus for trivial questions (use a single `gossip_run` agent).
|
|
624
310
|
|
|
625
311
|
<br/>
|
|
626
312
|
|
|
627
313
|
## Reading the dashboard
|
|
628
314
|
|
|
629
|
-
|
|
315
|
+
Open it once with the key from `gossip_status`; leave the tab open while you work. Every tool call pushes a live WebSocket update.
|
|
630
316
|
|
|
631
317
|
<p align="center">
|
|
632
318
|
<img src="https://raw.githubusercontent.com/gossipcat-ai/gossipcat-ai/master/packages/dashboard-v2/public/assets/dashboard-skills.png" alt="Skill graduation grid — per-skill effectiveness curve, 7d window, current/threshold value, and ±pp delta for graduated skills" width="900" />
|
|
633
319
|
</p>
|
|
634
|
-
<p align="center">
|
|
635
|
-
<em>Skill graduation grid — each card is one (skill × agent) pair: post-bind effectiveness curve over a 7-day window with current value vs threshold and ±pp drift on graduated skills.</em>
|
|
636
|
-
</p>
|
|
637
|
-
|
|
320
|
+
<p align="center"><em>Skill-graduation grid — each card is one (skill × agent): post-bind effectiveness over a 7-day window vs threshold, with ±pp drift on graduated skills.</em></p>
|
|
638
321
|
|
|
639
|
-
| Panel | What it shows |
|
|
640
|
-
|
|
641
|
-
| **Overview** | Active agents, dispatch weights, recent finding counts |
|
|
642
|
-
| **Team** |
|
|
643
|
-
| **Tasks** | Live + historical
|
|
644
|
-
| **Findings** | Consensus reports
|
|
645
|
-
| **Agent detail** | Per-agent memory
|
|
646
|
-
| **Signals** | Raw signal feed (agreement / hallucination / unique_confirmed) |
|
|
647
|
-
| **
|
|
648
|
-
|
|
649
|
-
**Auth keys rotate every session.** A fresh key is generated each time gossipcat boots. If the dashboard says "unauthorized", run `gossip_status` again to get the new key.
|
|
322
|
+
| Panel | What it shows |
|
|
323
|
+
|---|---|
|
|
324
|
+
| **Overview** | Active agents, dispatch weights, recent finding counts |
|
|
325
|
+
| **Team** | Agents sorted by reliability, with category breakdowns |
|
|
326
|
+
| **Tasks** | Live + historical tasks with agent, duration, status |
|
|
327
|
+
| **Findings** | Consensus reports by round, CONFIRMED/DISPUTED/UNVERIFIED breakdowns |
|
|
328
|
+
| **Agent detail** | Per-agent memory, skills, score history, task history |
|
|
329
|
+
| **Signals** | Raw signal feed (agreement / hallucination / unique_confirmed) |
|
|
330
|
+
| **Chat** | Live two-way bridge into the orchestrator (see below) |
|
|
331
|
+
| **Logs** | `mcp.log` (boot, errors, warnings) |
|
|
650
332
|
|
|
651
333
|
<br/>
|
|
652
334
|
|
|
653
|
-
##
|
|
654
|
-
|
|
655
|
-
### "Dashboard says unauthorized / 401"
|
|
656
|
-
The auth key rotates every boot. Run `gossip_status` in Claude Code to get the current key, paste it into the dashboard login.
|
|
657
|
-
|
|
658
|
-
### "Dashboard URL doesn't load at all"
|
|
659
|
-
Check `~/.gossip/mcp.log` (or `<your-project>/.gossip/mcp.log`) for the boot log. Look for the `[gossipcat] 🌐 Dashboard:` line — that's the actual port. If it's missing, the relay didn't start. Common causes:
|
|
660
|
-
- **Conflicting `.gossip/relay.pid`** from a crashed previous boot — delete it and restart Claude Code
|
|
661
|
-
- **`GOSSIPCAT_PORT` set to a port already in use** — unset the env var or pick a free port
|
|
662
|
-
|
|
663
|
-
### "Boot says 'No .gossip/config.json found' and nothing happens"
|
|
664
|
-
This was a critical bug in v0.1.0 — fixed in v0.1.1. Upgrade with the install one-liner above. v0.1.1+ boots in degraded mode (dashboard + relay only) so you can run `gossip_setup` from inside Claude Code.
|
|
335
|
+
## <a id="drive-it-from-your-browser"></a>Drive it from your browser
|
|
665
336
|
|
|
666
|
-
|
|
667
|
-
Usually a model or quota problem. Check `gossip_status` — it shows `Quota: google — OK` (or `cooling down`) per provider. If you're rate-limited, gossipcat will fall back to native agents automatically, but fallback agents may not be in your team. Either wait for the cooldown or add native agents to your team.
|
|
337
|
+
The dashboard's **Chat** page is a live, two-way bridge into the running orchestrator — type from the browser and your message lands in the active session; the orchestrator's dispatches, findings, and replies mirror back into the same thread in real time.
|
|
668
338
|
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
### "An agent produced output but the consensus report is empty"
|
|
676
|
-
The strict `<agent_finding>` parser drops tags whose `type` isn't one of `finding | suggestion | insight` (see invariant #8 in `docs/HANDBOOK.md`). When that happens, the `gossip_signals` receipt surfaces the drop count and a `finding_dropped_format` pipeline signal is emitted. Check the consensus round's `droppedFindingsByType` field on the dashboard — it names the offending type. If you see `<agent_finding>` instead of raw `<agent_finding>`, a transport layer is entity-encoding the output; pass agent output verbatim to `gossip_relay`.
|
|
677
|
-
|
|
678
|
-
### "Multiple Claude Code instances all want gossipcat"
|
|
679
|
-
Already supported as of v0.1.1 — each instance gets its own dynamic port. If you want a stable port for one specific instance (e.g. for browser bookmarks), set `GOSSIPCAT_PORT=24420` for that one project's environment.
|
|
680
|
-
|
|
681
|
-
### "How do I uninstall?"
|
|
682
|
-
```bash
|
|
683
|
-
npm uninstall -g gossipcat
|
|
684
|
-
claude mcp remove gossipcat -s user
|
|
685
|
-
rm -rf ~/.gossip # if you want to wipe global memory + signals
|
|
686
|
-
rm -rf <project>/.gossip # if you want to wipe per-project state
|
|
687
|
-
```
|
|
339
|
+
| Capability | What it does |
|
|
340
|
+
|---|---|
|
|
341
|
+
| **Multi-conversation tabs** | Several independent threads side by side — each its own `chat_id`, history, and live stream; per-tab unread, persisted across reloads |
|
|
342
|
+
| **Renamable tabs** | Double-click or **F2** to label a tab ("auth refactor", "perf audit") — survives reload |
|
|
343
|
+
| **Working-agents rail** | Live rail of who's dispatched and working right now — watch a round progress without leaving chat |
|
|
344
|
+
| **Structured questions** | When the orchestrator needs a decision, `gossip_ask` renders a single/multi-select card right in the chat; your pick flows back as a normal turn |
|
|
688
345
|
|
|
689
|
-
|
|
690
|
-
File an issue at https://github.com/gossipcat-ai/gossipcat-ai/issues. Include the contents of `.gossip/mcp.log` (last 100 lines) and the output of `gossip_status`. Or ask Claude in-session: *"file a gossipcat bug report about <...>"* — the `gossip_bug_feedback` tool packages it up automatically.
|
|
346
|
+
The `gossip_ask` answer boundary is fail-closed: only known options are accepted and "Other" free-text is sanitized before it reaches the orchestrator, so a dashboard answer can't smuggle instructions into the session. Launch with the `gossipcat code` wrapper (or ask the orchestrator to enable channel mode), then open the **Chat** tab.
|
|
691
347
|
|
|
692
348
|
<br/>
|
|
693
349
|
|
|
694
|
-
##
|
|
350
|
+
## Host compatibility
|
|
695
351
|
|
|
696
|
-
|
|
352
|
+
Gossipcat auto-detects the host and adapts dispatch + the rules file it writes.
|
|
697
353
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
gossip_skills(action: "develop", ...) → improve a struggling agent
|
|
705
|
-
gossip_status() → system status + dashboard URL
|
|
706
|
-
gossip_setup(...) → create or update your team
|
|
707
|
-
```
|
|
354
|
+
| Host | Native agents | Rules file |
|
|
355
|
+
|------|---------------|------------|
|
|
356
|
+
| **Claude Code** | Yes — `Agent()` | `.claude/rules/gossipcat.md` |
|
|
357
|
+
| **Cursor** | Yes — `Task(subagent_type, model, …)` | `.cursor/rules/gossipcat.mdc` |
|
|
358
|
+
| Windsurf | Relay-only (planned) | `.windsurfrules` |
|
|
359
|
+
| VS Code | Relay-only (planned) | — |
|
|
708
360
|
|
|
709
|
-
|
|
361
|
+
On Claude Code and Cursor, native agents run with no API key and participate fully in consensus. Other MCP hosts can still run relay agents.
|
|
710
362
|
|
|
711
363
|
<br/>
|
|
712
364
|
|
|
713
|
-
##
|
|
714
|
-
|
|
715
|
-
> **Currently supported orchestrator: Claude Code only.** Cursor, Windsurf, and VS Code agents do not yet have native agent support and cannot run consensus cross-review. If you are reading this as a Claude Code instance with the gossipcat MCP server connected, this guide applies to you.
|
|
716
|
-
|
|
717
|
-
If you are a Claude Code instance reading this to understand how to use gossipcat, here is the complete operational guide.
|
|
718
|
-
|
|
719
|
-
**You are the orchestrator.** Gossipcat gives you tools to dispatch work to a team of specialized agents, collect their results, run cross-review consensus, and record accuracy signals. You do not implement code directly — you coordinate.
|
|
720
|
-
|
|
721
|
-
### Step 1 — Check what you have
|
|
365
|
+
## Troubleshooting
|
|
722
366
|
|
|
723
|
-
|
|
724
|
-
gossip_status()
|
|
725
|
-
```
|
|
367
|
+
**Dashboard says unauthorized / 401** — the key rotates every boot. Run `gossip_status` for the current key.
|
|
726
368
|
|
|
727
|
-
|
|
369
|
+
**Dashboard URL won't load** — check `.gossip/mcp.log` for the `🌐 Dashboard:` line (the real port). If missing, the relay didn't start: delete a stale `.gossip/relay.pid` from a crashed boot and restart, or free up `GOSSIPCAT_PORT` if it's taken.
|
|
728
370
|
|
|
729
|
-
|
|
371
|
+
**Agents return empty findings** — usually quota. `gossip_status` shows `Quota: <provider> — OK / cooling down`. On a rate limit gossipcat falls back to native agents (add some to your team if you have none).
|
|
730
372
|
|
|
731
|
-
**
|
|
732
|
-
```
|
|
733
|
-
gossip_run(agent_id: "auto", task: "Review the auth module for security issues")
|
|
734
|
-
```
|
|
735
|
-
The system picks the best agent for the task based on past accuracy. For relay agents, this returns the result directly. For native agents (Claude Code subagents), it returns `⚠️ EXECUTE NOW` instructions — follow them immediately in the same response.
|
|
373
|
+
**The same hallucinated finding keeps coming back** — record it: *"record a hallucination_caught signal for finding f3 — it claimed X but the code shows Y."* After 3, the agent's score drops in that category and dispatch stops routing it there.
|
|
736
374
|
|
|
737
|
-
**
|
|
738
|
-
```
|
|
739
|
-
gossip_dispatch(mode: "parallel", tasks: [
|
|
740
|
-
{ agent_id: "gemini-reviewer", task: "..." },
|
|
741
|
-
{ agent_id: "sonnet-reviewer", task: "..." }
|
|
742
|
-
])
|
|
743
|
-
```
|
|
375
|
+
**An agent produced output but the consensus report is empty** — the strict `<agent_finding>` parser drops tags whose `type` isn't `finding | suggestion | insight` (invariant #8 in `docs/HANDBOOK.md`); the `gossip_signals` receipt surfaces the drop and a `finding_dropped_format` signal. If you see `<agent_finding>` instead of raw tags, a transport layer is entity-encoding output — pass agent output verbatim to `gossip_relay`.
|
|
744
376
|
|
|
745
|
-
**
|
|
746
|
-
```
|
|
747
|
-
gossip_dispatch(mode: "consensus", tasks: [
|
|
748
|
-
{ agent_id: "gemini-reviewer", task: "..." },
|
|
749
|
-
{ agent_id: "sonnet-reviewer", task: "..." },
|
|
750
|
-
{ agent_id: "haiku-researcher", task: "..." }
|
|
751
|
-
])
|
|
752
|
-
```
|
|
377
|
+
**Multiple IDE instances** — each gets its own dynamic port. For a stable port on one project, set `GOSSIPCAT_PORT=24420` in that environment.
|
|
753
378
|
|
|
754
|
-
|
|
379
|
+
**Uninstall** — `npm uninstall -g gossipcat && claude mcp remove gossipcat -s user`; `rm -rf ~/.gossip` (global state) or `<project>/.gossip` (per-project).
|
|
755
380
|
|
|
756
|
-
|
|
757
|
-
gossip_collect(task_ids: ["id1", "id2", "id3"], consensus: true)
|
|
758
|
-
```
|
|
381
|
+
**Still stuck?** [Open an issue](https://github.com/gossipcat-ai/gossipcat-ai/issues) with the last 100 lines of `.gossip/mcp.log` + `gossip_status` output, or ask in-session *"file a gossipcat bug report about …"* (`gossip_bug_feedback` packages it).
|
|
759
382
|
|
|
760
|
-
|
|
383
|
+
<br/>
|
|
761
384
|
|
|
762
|
-
|
|
385
|
+
## Configuration
|
|
763
386
|
|
|
764
|
-
|
|
387
|
+
Most of `.gossip/config.json` is **auto-generated by `gossip_setup()`** — hand-edit only to change providers/models/endpoints. First-run defaults work for most projects. Config is searched: `.gossip/config.json` → `gossip.agents.json` → `gossip.agents.yaml`.
|
|
765
388
|
|
|
766
|
-
```
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
389
|
+
```json
|
|
390
|
+
{
|
|
391
|
+
"main_agent": { "provider": "google", "model": "gemini-2.5-pro" },
|
|
392
|
+
"utility_model": { "provider": "native", "model": "haiku" },
|
|
393
|
+
"consensus_judge": { "provider": "anthropic", "model": "claude-sonnet-4-6", "native": true },
|
|
394
|
+
"agents": {
|
|
395
|
+
"sonnet-reviewer": {
|
|
396
|
+
"provider": "anthropic", "model": "claude-sonnet-4-6",
|
|
397
|
+
"preset": "reviewer", "skills": ["code_review", "security_audit", "typescript"],
|
|
398
|
+
"native": true
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
773
402
|
```
|
|
774
403
|
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
404
|
+
| Field | Description |
|
|
405
|
+
|-------|-------------|
|
|
406
|
+
| `main_agent` | Internal LLM for routing, planning, synthesis (set `provider: "none"` on Claude Code / Cursor to let the host classify natively) |
|
|
407
|
+
| `utility_model` | Memory compaction, gossip, lens generation |
|
|
408
|
+
| `consensus_judge` | Synthesis-only model that merges cross-review results (does not grade) |
|
|
409
|
+
| `agents.<id>.provider` | `anthropic`, `google`, `openai`, `grok`, `deepseek`, `openclaw`, `local`, `native` |
|
|
410
|
+
| `agents.<id>.key_ref` | Keychain service to read the provider key from (default = provider name). Used by keychain providers (`grok`, `deepseek`); env-var providers (`openai`, `google`, `anthropic`) read their key from the environment instead |
|
|
411
|
+
| `agents.<id>.base_url` | Custom endpoint for `openai` / `openclaw` (e.g. `http://127.0.0.1:18789/v1`) |
|
|
412
|
+
| `agents.<id>.native` | `true` = runs via the host's native tool, no API key |
|
|
413
|
+
| `agents.<id>.preset` | `reviewer`, `implementer`, `tester`, `researcher`, `debugger`, `architect`, `security`, `designer`, `planner`, `devops`, `documenter` |
|
|
414
|
+
| `agents.<id>.skills` | Skill labels for dispatch matching |
|
|
782
415
|
|
|
783
|
-
|
|
416
|
+
<details>
|
|
417
|
+
<summary><strong>OpenClaw 🦞 (local gateway provider)</strong></summary>
|
|
784
418
|
|
|
785
|
-
|
|
419
|
+
[OpenClaw](https://github.com/openclaw/openclaw) runs locally and exposes an OpenAI-compatible API; gossipcat talks to it like any relay agent, with a separate quota slot so its rate limits don't bleed into your OpenAI agents. Store the gateway token once (macOS: `security add-generic-password -s gossip-mesh -a openclaw -w <token>`; Linux: `secret-tool store --label "Gossip Mesh openclaw" service gossip-mesh provider openclaw`), then add an agent with `provider: "openclaw"` (default `base_url` `http://127.0.0.1:18789/v1`, models `openclaw` / `openclaw/default` / `openclaw/main`). It joins consensus and earns skills like any other agent.
|
|
420
|
+
</details>
|
|
786
421
|
|
|
787
|
-
|
|
422
|
+
<br/>
|
|
788
423
|
|
|
789
424
|
## MCP Tools
|
|
790
425
|
|
|
791
|
-
|
|
426
|
+
The orchestrator (Claude Code / Cursor) selects and calls these from your natural-language requests — you don't invoke them manually.
|
|
792
427
|
|
|
793
428
|
| Tool | Purpose |
|
|
794
429
|
|------|---------|
|
|
795
430
|
| `gossip_status` | System status, dashboard URL, agent list |
|
|
431
|
+
| `gossip_setup` | Create or update an agent team |
|
|
796
432
|
| `gossip_run` | Single-agent dispatch with auto agent selection |
|
|
797
433
|
| `gossip_dispatch` | Multi-agent dispatch: `single`, `parallel`, or `consensus` |
|
|
798
434
|
| `gossip_collect` | Collect results with optional cross-review synthesis |
|
|
799
|
-
| `
|
|
800
|
-
| `gossip_relay_cross_review` | Feed native cross-review results into consensus |
|
|
801
|
-
| `gossip_plan` | Decompose task into sub-tasks with agent assignments |
|
|
435
|
+
| `gossip_plan` | Decompose a task into sub-tasks with agent assignments |
|
|
802
436
|
| `gossip_signals` | Record or retract accuracy signals |
|
|
803
|
-
| `gossip_scores` | View agent accuracy, uniqueness,
|
|
437
|
+
| `gossip_scores` | View agent accuracy, uniqueness, dispatch weights |
|
|
804
438
|
| `gossip_skills` | Develop, bind, unbind, or list per-agent skills |
|
|
805
|
-
| `
|
|
806
|
-
| `gossip_session_save` | Save session context for next session |
|
|
439
|
+
| `gossip_resolve_findings` | Mark consensus findings resolved/open |
|
|
807
440
|
| `gossip_remember` | Search an agent's cognitive memory |
|
|
441
|
+
| `gossip_verify_memory` | Check a memory claim against current code (FRESH / STALE / CONTRADICTED) before acting on backlog |
|
|
442
|
+
| `gossip_session_save` | Save session context for the next session |
|
|
808
443
|
| `gossip_progress` | Check in-progress task status |
|
|
809
|
-
| `gossip_watch` | Stream signals as agents emit them
|
|
810
|
-
| `
|
|
811
|
-
| `
|
|
444
|
+
| `gossip_watch` | Stream signals as agents emit them (catches pipeline drops mid-round) |
|
|
445
|
+
| `gossip_ask` | Ask the dashboard a structured single/multi-select question |
|
|
446
|
+
| `gossip_guide` | Print the gossipcat handbook for humans |
|
|
447
|
+
| `gossip_config` | Manage runtime feature-gate flags |
|
|
448
|
+
| `gossip_format` | Return the canonical `<agent_finding>` output format block |
|
|
812
449
|
| `gossip_tools` | List all available tools |
|
|
813
|
-
| `gossip_update` | Check for
|
|
814
|
-
| `gossip_bug_feedback` | File a GitHub issue
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
## Dashboard internals
|
|
819
|
-
|
|
820
|
-
> User-facing dashboard guide is in [Reading the dashboard](#reading-the-dashboard) above. This section covers the build + tech stack.
|
|
821
|
-
|
|
822
|
-
Built with React + Vite + shadcn/ui. Source lives at `packages/dashboard-v2/`. The bundled assets ship in `dist-dashboard/` and the relay serves them as static files at `http://localhost:<dynamic-port>/dashboard/`. Live updates push via WebSocket — every gossipcat tool call emits an event that connected dashboard tabs receive in real time.
|
|
823
|
-
|
|
824
|
-
To rebuild from source (contributors only):
|
|
825
|
-
```bash
|
|
826
|
-
npm run build:dashboard
|
|
827
|
-
```
|
|
450
|
+
| `gossip_update` | Check for / apply gossipcat updates from npm |
|
|
451
|
+
| `gossip_bug_feedback` | File a GitHub issue from an in-session bug report |
|
|
452
|
+
| `gossip_reload` | Self-terminate so the host respawns with a fresh bundle (dev loop) |
|
|
453
|
+
| _orchestrator-only_ | `gossip_relay`, `gossip_relay_cross_review`, `reply` — used internally to feed native results + the chat bridge back into the pipeline; you never call these |
|
|
828
454
|
|
|
829
455
|
<br/>
|
|
830
456
|
|
|
@@ -832,181 +458,45 @@ npm run build:dashboard
|
|
|
832
458
|
|
|
833
459
|
```
|
|
834
460
|
gossipcat/
|
|
835
|
-
apps/
|
|
836
|
-
cli/ MCP server, native agent bridge, boot sequence
|
|
461
|
+
apps/cli/ MCP server, host-aware native agent bridge, boot sequence
|
|
837
462
|
packages/
|
|
838
463
|
orchestrator/ Dispatch pipeline, consensus engine, memory, skills,
|
|
839
464
|
performance scoring, task graph, prompt assembly
|
|
840
465
|
relay/ WebSocket relay server, dashboard REST/WS API
|
|
841
|
-
dashboard-v2/ React + Vite frontend (
|
|
466
|
+
dashboard-v2/ React + Vite + shadcn/ui frontend (warm-cream theme — see DESIGN.md)
|
|
842
467
|
client/ Lightweight WebSocket client for relay connections
|
|
843
|
-
tools/ File/shell/git tool implementations for worker agents
|
|
468
|
+
tools/ File / shell / git tool implementations for worker agents
|
|
844
469
|
types/ Shared TypeScript types and message protocol
|
|
845
470
|
```
|
|
846
471
|
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
## OpenClaw Integration
|
|
850
|
-
|
|
851
|
-
<p align="center">
|
|
852
|
-
<img src="https://img.shields.io/badge/OpenClaw-gateway-4A90D9?style=for-the-badge" alt="OpenClaw" />
|
|
853
|
-
<img src="https://img.shields.io/badge/%F0%9F%A6%9E-lobster%20friendly-red?style=for-the-badge" alt="Lobster friendly" />
|
|
854
|
-
</p>
|
|
855
|
-
|
|
856
|
-
Gossipcat supports [OpenClaw](https://github.com/openclaw/openclaw) as a provider gateway. OpenClaw runs locally and exposes an OpenAI-compatible HTTP API — gossipcat talks to it like any other relay agent, with your stored gateway token and a separate quota slot so OpenClaw rate limits never bleed into your OpenAI agents.
|
|
857
|
-
|
|
858
|
-
### Wiring an OpenClaw agent
|
|
859
|
-
|
|
860
|
-
Store your gateway token once (macOS):
|
|
861
|
-
```bash
|
|
862
|
-
security add-generic-password -s gossip-mesh -a openclaw -w <your-gateway-token>
|
|
863
|
-
```
|
|
864
|
-
|
|
865
|
-
On Linux:
|
|
866
|
-
```bash
|
|
867
|
-
secret-tool store --label "Gossip Mesh openclaw" service gossip-mesh provider openclaw
|
|
868
|
-
# (enter token when prompted)
|
|
869
|
-
```
|
|
870
|
-
|
|
871
|
-
Then add it to your team:
|
|
872
|
-
```
|
|
873
|
-
"Add an OpenClaw reviewer to my team"
|
|
874
|
-
```
|
|
875
|
-
|
|
876
|
-
Or directly via `gossip_setup`:
|
|
877
|
-
```
|
|
878
|
-
gossip_setup(mode: "merge", agents: [{
|
|
879
|
-
id: "openclaw-agent",
|
|
880
|
-
type: "custom",
|
|
881
|
-
provider: "openclaw",
|
|
882
|
-
custom_model: "openclaw/default",
|
|
883
|
-
role: "reviewer",
|
|
884
|
-
skills: ["code_review", "typescript"]
|
|
885
|
-
}])
|
|
886
|
-
```
|
|
887
|
-
|
|
888
|
-
The gateway runs at `http://127.0.0.1:18789/v1` by default. Override with `base_url` if yours is on a different port. Available models: `openclaw`, `openclaw/default`, `openclaw/main`.
|
|
472
|
+
The dashboard ships prebuilt in `dist-dashboard/` and the relay serves it as static files; rebuild from source with `npm run build:dashboard`.
|
|
889
473
|
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
<br/>
|
|
893
|
-
|
|
894
|
-
## Configuration
|
|
895
|
-
|
|
896
|
-
Config is searched in order: `.gossip/config.json` > `gossip.agents.json` > `gossip.agents.yaml`.
|
|
897
|
-
|
|
898
|
-
```json
|
|
899
|
-
{
|
|
900
|
-
"main_agent": {
|
|
901
|
-
"provider": "google",
|
|
902
|
-
"model": "gemini-2.5-pro"
|
|
903
|
-
},
|
|
904
|
-
"utility_model": {
|
|
905
|
-
"provider": "native",
|
|
906
|
-
"model": "haiku"
|
|
907
|
-
},
|
|
908
|
-
"consensus_judge": {
|
|
909
|
-
"provider": "anthropic",
|
|
910
|
-
"model": "claude-sonnet-4-6",
|
|
911
|
-
"native": true
|
|
912
|
-
},
|
|
913
|
-
"agents": {
|
|
914
|
-
"sonnet-reviewer": {
|
|
915
|
-
"provider": "anthropic",
|
|
916
|
-
"model": "claude-sonnet-4-6",
|
|
917
|
-
"preset": "reviewer",
|
|
918
|
-
"skills": ["code_review", "security_audit", "typescript"],
|
|
919
|
-
"native": true
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
|
-
```
|
|
924
|
-
|
|
925
|
-
| Field | Description |
|
|
926
|
-
|-------|-------------|
|
|
927
|
-
| `main_agent` | Internal tool LLM for routing, planning, and synthesis |
|
|
928
|
-
| `utility_model` | Memory compaction, gossip, lens generation |
|
|
929
|
-
| `consensus_judge` | Model for cross-review synthesis |
|
|
930
|
-
| `agents.<id>.provider` | `anthropic`, `google`, `openai`, `openclaw`, `local` |
|
|
931
|
-
| `agents.<id>.base_url` | Custom endpoint for `openai`/`openclaw` (e.g. `http://127.0.0.1:18789/v1`) |
|
|
932
|
-
| `agents.<id>.native` | `true` = runs via Claude Code Agent(), no API key |
|
|
933
|
-
| `agents.<id>.preset` | `reviewer`, `implementer`, `tester`, `researcher`, `debugger`, `architect`, `security`, `designer`, `planner`, `devops`, `documenter` |
|
|
934
|
-
| `agents.<id>.skills` | Skill labels for dispatch matching |
|
|
935
|
-
|
|
936
|
-
<br/>
|
|
937
|
-
|
|
938
|
-
## Host compatibility
|
|
939
|
-
|
|
940
|
-
Gossipcat auto-detects the host environment:
|
|
941
|
-
|
|
942
|
-
| Host | Native agents | Rules file |
|
|
943
|
-
|------|---------------|------------|
|
|
944
|
-
| Claude Code | Yes | `.claude/rules/gossipcat.md` |
|
|
945
|
-
| Cursor | No | `.cursor/rules/gossipcat.mdc` |
|
|
946
|
-
| Windsurf | No | `.windsurfrules` |
|
|
947
|
-
| VS Code | No | — |
|
|
474
|
+
> **Reading this as a Claude Code or Cursor instance?** Call `gossip_status()` — it boots your full operating rules. The detailed orchestrator workflow (dispatch rules, consensus protocol, signal pipeline) lives in [`CLAUDE.md`](CLAUDE.md) and [`.claude/rules/gossipcat.md`](.claude/rules/gossipcat.md).
|
|
948
475
|
|
|
949
476
|
<br/>
|
|
950
477
|
|
|
951
478
|
## Roadmap
|
|
952
479
|
|
|
480
|
+
Shipped work lives in [CHANGELOG.md](CHANGELOG.md) and [GitHub Releases](https://github.com/gossipcat-ai/gossipcat-ai/releases). What's next:
|
|
481
|
+
|
|
953
482
|
| Feature | Status |
|
|
954
483
|
|---------|--------|
|
|
955
|
-
| Consensus code review | ✅ Shipped |
|
|
956
|
-
| Adaptive dispatch weights | ✅ Shipped |
|
|
957
|
-
| Per-agent skill development | ✅ Shipped |
|
|
958
|
-
| Agent cognitive memory | ✅ Shipped |
|
|
959
|
-
| Live dashboard | ✅ Shipped |
|
|
960
|
-
| Cross-platform key storage | ✅ Shipped |
|
|
961
|
-
| OpenAI-compatible gateway support (`base_url`) | ✅ Shipped |
|
|
962
|
-
| OpenClaw provider integration 🦞 | ✅ Shipped |
|
|
963
|
-
| Local LLM support (Ollama) | ✅ Shipped |
|
|
964
|
-
| Statistical skill effectiveness (z-test on per-category accuracy, auto pass/fail verdicts) | ✅ Shipped |
|
|
965
|
-
| Native subagents get skill injection + cognitive memory recall | ✅ Shipped |
|
|
966
|
-
| Relay cross-reviewers get `file_read` + `file_grep` (closes tool-blindness gap with natives) | ✅ Shipped |
|
|
967
|
-
| Worktree-aware consensus (`resolutionRoots` + auto-discover for feature-branch reviews) | ✅ Shipped |
|
|
968
|
-
| Signal pipeline observability (format-drop receipts + `finding_dropped_format` meta-signal + `gossip_watch` stream) | ✅ Shipped |
|
|
969
|
-
| Consensus round retraction (`gossip_signals action: retract` with tombstones) | ✅ Shipped |
|
|
970
|
-
| Worktree sandbox hardening (Layer 1+2+3 boundary enforcement + rotated audit log) | ✅ Shipped |
|
|
971
|
-
| In-session bundle hot-swap (`gossip_reload`) | ✅ Shipped |
|
|
972
|
-
| npm package — one-liner install with bundled MCP server + dashboard | ✅ Shipped |
|
|
973
|
-
| Full implementation workflow (agents write code with scoped + worktree isolation) | ✅ Shipped |
|
|
974
484
|
| Dashboard enrichment (graphs, trends, session history) | ☐ Planned |
|
|
975
|
-
| Local Postgres migration (
|
|
976
|
-
|
|
|
977
|
-
|
|
|
978
|
-
| Standalone CLI (no IDE required) | ☐ Planned |
|
|
979
|
-
| CLI parity with MCP pipeline (gossip, task graph, agent memory in chat mode) | ☐ Planned |
|
|
485
|
+
| Local Postgres migration (tasks/signals/consensus/memory — full task results, real queries, no JSONL scans) | ☐ Planned |
|
|
486
|
+
| Windsurf / VS Code native parity | ☐ Planned |
|
|
487
|
+
| Standalone CLI (no IDE required) + chat-mode pipeline parity | ☐ Planned |
|
|
980
488
|
|
|
981
489
|
<br/>
|
|
982
490
|
|
|
983
491
|
## Contributing
|
|
984
492
|
|
|
985
|
-
Gossipcat is open source and early-stage — bug reports,
|
|
986
|
-
|
|
987
|
-
- **Bugs / feature requests** → [open an issue](https://github.com/gossipcat-ai/gossipcat-ai/issues). Or ask Claude Code directly: *"File a gossipcat bug report about <...>"* — the `gossip_bug_feedback` tool posts structured issues from your current session.
|
|
988
|
-
- **Pull requests** → fork, branch, PR against `master`. Run `npm test` before pushing. Commit messages follow conventional commits (`fix:`, `feat:`, `chore:`, `docs:`).
|
|
989
|
-
- **Discussions** → new ideas, design questions, "should this be a feature?" → [GitHub Discussions](https://github.com/gossipcat-ai/gossipcat-ai/discussions).
|
|
990
|
-
|
|
991
|
-
See `CLAUDE.md` in the repo for the operational rules gossipcat's own agents follow during development — it's a useful read if you want to understand the signal pipeline and consensus workflow from the inside.
|
|
992
|
-
|
|
993
|
-
### Cutting a release (maintainers)
|
|
994
|
-
|
|
995
|
-
Releases go to GitHub Releases via a two-stage script that respects branch protection — no direct commits to master.
|
|
493
|
+
Gossipcat is open source and early-stage — bug reports, ideas, and PRs welcome.
|
|
996
494
|
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
# review + merge the PR via gh or web UI
|
|
1002
|
-
gh pr merge <pr-number> --squash --delete-branch
|
|
1003
|
-
|
|
1004
|
-
# Stage 2 — build, tag, release (from master, after the PR is merged)
|
|
1005
|
-
git checkout master && git pull
|
|
1006
|
-
./scripts/release.sh # no args
|
|
1007
|
-
```
|
|
495
|
+
- **Bugs / features** → [open an issue](https://github.com/gossipcat-ai/gossipcat-ai/issues), or ask Claude Code *"file a gossipcat bug report about …"* (`gossip_bug_feedback` posts a structured issue).
|
|
496
|
+
- **Pull requests** → fork, branch, PR against `master`. Run `npm test` first. Conventional commits (`fix:`, `feat:`, `chore:`, `docs:`). Release process and contributor setup are in [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
497
|
+
- **Discussions** → [GitHub Discussions](https://github.com/gossipcat-ai/gossipcat-ai/discussions).
|
|
1008
498
|
|
|
1009
|
-
|
|
499
|
+
[`CLAUDE.md`](CLAUDE.md) documents the operational rules gossipcat's own agents follow during development — a useful read for understanding the signal pipeline and consensus workflow from the inside.
|
|
1010
500
|
|
|
1011
501
|
<br/>
|
|
1012
502
|
|