gossipcat 0.6.5 → 0.6.6

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
@@ -3,11 +3,11 @@
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
- <em>weightless in-context RL for code review agents that learn from grounded signals, no weights touched.</em>
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=0430" alt="npm version" /></a>
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--5-minutes"><strong>First Run</strong></a> ·
23
- <a href="#how-to-use-it-day-to-day"><strong>Daily Use</strong></a> ·
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="#for-ai-agents"><strong>For AI Agents</strong></a>
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:63007/dashboard</code> — fleet vortex, signal stream, skill graduation grid, and consensus flow, all in real time.</em>
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:&lt;port&gt;/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
- > **The single-reviewer failure mode:** a solo AI reviewer ships hallucinated bugs as critical findings **5–10% of the time** in our internal usage. Gossipcat's cross-review drops that to **under 1%**. That delta is what the whole system exists to produce.
53
- <!-- TODO: link public benchmark -->
44
+ ## Why
54
45
 
55
- <br/>
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
- Multi-agent consensus code review that catches hallucinations before you act on themand gets smarter every session.
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
- > Gossipcat is an MCP server for Claude Code that runs 3+ AI agents in parallel to review your code. They independently find bugs, then cross-review each other's findings. Confirmed = real. Caught = hallucination, penalized. Over time, agents accumulate accuracy profiles and the system routes tasks to whoever is most reliable for that category. No weights updated — the "policy" is a markdown skill file.
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
- ## What is Gossipcat?
52
+ **The consensus tags you'll see** (this is your whole job — read these, ignore the rest):
62
53
 
63
- Gossipcat is an MCP server that orchestrates multiple AI agents to review your code in parallel. Agents independently review, then cross-review each other's findings. Agreements are confirmed. Hallucinations are caught and penalized. Over time, each agent builds an accuracy profile — the system learns who to trust for what.
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
- ### It's weightless in-context reinforcement learning
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
- Every finding an agent produces must cite a real `file:line`. Peers verify those citations against actual source code. Verified findings (and caught hallucinations) become **grounded reward signals** — no judge model, no subjective grade, just mechanical checks against ground truth. Those signals update per-agent competency scores, which steer future dispatch. When an agent keeps failing in a category, a targeted skill file is auto-generated from its own failure history and injected into future prompts.
63
+ ## How it works
70
64
 
71
65
  ```mermaid
72
66
  flowchart LR
@@ -86,422 +80,188 @@ flowchart LR
86
80
  style E fill:#ef4444,stroke:#b91c1c,color:#fff
87
81
  ```
88
82
 
89
- The "policy update" is a markdown file under `.gossip/agents/<id>/skills/`. No fine-tuning, no RLHF infrastructure, no labelling pipeline. The reward signal is grounded in source code rather than a judge model, which is the piece that makes the loop trustworthy enough to automate. When agents disagree, we check the code — not another LLM's opinion.
90
-
91
- <br/>
92
-
93
- ## How Gossipcat compares
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
- | | What you get | Hallucination filtering | Agents improve over time |
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
- The core 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.
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
- ## Real-world session
107
-
108
- What a typical gossipcat session looks like in practice (2026-05-22, v0.4.30 ship):
109
-
110
- - **1 feature shipped end-to-end** — consensus auto-verify (PR #448, master commit `4b28a1c`, 1255+ LOC, 50/50 new tests, zero regressions). Full design ↔ ship arc through gossipcat itself: 6 consensus rounds on the spec before any code was written.
111
- - **6 consensus rounds on the spec** caught **21+ HIGH-severity defects** across rev-1 → rev-6 — including a double-dispatch bug on the `run()` path (rev-3, opus-implementer), a phantom `AgentTeam` type the implementer would have invented if shipped (rev-5, sonnet-reviewer grep-grounded against live `AgentConfig`), and a `metadata` field that didn't exist on `ConsensusSignal` at all (rev-4, sonnet — `metadata` lives only on `MetaSignal` / `PipelineSignal`). Each round produced a measurable rev: rev-1 had 4 HIGHs, rev-6 had 0.
112
- - **1 post-merge bug caught by a pre-existing drift test** — `signal-allowlist-drift.test.ts:108` (which exists precisely to catch this — same failure mode as PR #329's silent-drop of `transport_failure`) flagged that the implementer added the 2 new signals to `KNOWN_SIGNALS` + the type union + `OPERATIONAL_SIGNAL_NAMES` but missed `VALID_CONSENSUS_SIGNALS` in `performance-writer.ts`. 7-line fix landed in the same PR before merge.
113
- - **Methodology lesson recorded** — sonnet-reviewer's habit of grepping cited file:line against live code (rather than trusting prose claims) is what ultimately closed the spec. Recorded as a `citation_grounding` agreement signal so the agent's pattern compounds across sessions.
98
+ ## Native vs Relay agents
114
99
 
115
- Nothing landed without cross-review. Two agents got `+/-` score adjustments based on what they caught vs. what they missed. The spec is now usable as a worked example of what 6 rounds of multi-agent design review looks like — `docs/superpowers/specs/2026-05-21-consensus-auto-verify-design.md`.
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.
116
101
 
117
- <br/>
118
-
119
- ## Why multi-agent?
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 |
120
109
 
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 |
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.
127
111
 
128
112
  <br/>
129
113
 
130
- ## Gossipcat is right for you if
131
-
132
- - You want **multiple AI models** catching different classes of bugs
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/>
114
+ ## How Gossipcat compares
139
115
 
140
- ## Features
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 |
141
122
 
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>Works<br/>with</strong></td>
185
- <td align="center">
186
- <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>
187
- </td>
188
- <td align="center"><strong>Cursor</strong><br/><sub>Not yet</sub></td>
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 [Claude Code](https://claude.com/claude-code).
247
-
248
- ### One-liner
249
-
250
- ```bash
251
- npm install -g gossipcat && claude mcp add gossipcat -s user -- gossipcat
252
- ```
253
-
254
- Restart Claude Code. Then in any project, ask:
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`:
262
-
263
- ```json
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
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.
293
145
 
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:**
146
+ Install the package once:
304
147
  ```bash
305
- npm install -g gossipcat@0.5.2
148
+ npm install -g gossipcat
306
149
  ```
307
150
 
308
- **Pin to a specific GitHub release tarball** (version-locked, bypasses npm registry):
309
- ```bash
310
- npm install -g https://github.com/gossipcat-ai/gossipcat-ai/releases/download/v0.5.2/gossipcat-0.5.2.tgz
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.
151
+ <table>
152
+ <tr><th><a href="https://claude.com/claude-code">Claude Code</a></th><th><a href="https://cursor.com">Cursor</a></th></tr>
153
+ <tr valign="top">
154
+ <td>
319
155
 
320
- **From source** (contributors):
156
+ Register the MCP server:
321
157
  ```bash
322
- git clone https://github.com/gossipcat-ai/gossipcat-ai.git
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"
158
+ claude mcp add gossipcat -s user -- gossipcat
327
159
  ```
160
+ Restart Claude Code. Native agents dispatch via `Agent()`.
328
161
 
329
- ### Upgrading
162
+ </td>
163
+ <td>
330
164
 
331
- Re-run the install — npm will fetch the latest version and replace the installed binary:
332
- ```bash
333
- npm install -g gossipcat@latest
165
+ Add to `.cursor/mcp.json`:
166
+ ```jsonc
167
+ { "mcpServers": {
168
+ "gossipcat": { "command": "gossipcat" }
169
+ } }
334
170
  ```
335
- Or in-session, ask Claude Code: *"Check for gossipcat updates"* — the `gossip_update` tool fetches the latest release notes and applies the upgrade with your confirmation.
336
-
337
- ### 3. API keys
338
-
339
- Add env vars for the providers you want to use. Pass them with `-e` when registering, or set them in your shell environment.
171
+ Reload Cursor. Native agents dispatch via `Task()`.
340
172
 
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`. |
173
+ </td>
174
+ </tr>
175
+ </table>
349
176
 
350
- #### Examples registering gossipcat with each provider
177
+ Then in any project, ask the orchestrator: *"Set up a gossipcat team for this project."*
351
178
 
352
- **Native only** (zero API keys — everything runs through Claude Code):
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.
357
-
358
- **Anthropic API** (direct, bypasses Claude Code):
359
- ```bash
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.
179
+ <details>
180
+ <summary><strong>Manual MCP config / alternative install paths</strong></summary>
365
181
 
366
- **Google Gemini**:
367
- ```bash
368
- claude mcp add gossipcat -s user \
369
- -e GOOGLE_API_KEY=AIza... \
370
- -- gossipcat
182
+ Add to `~/.claude/mcp_settings.json` (Claude Code) or project-local `.mcp.json`:
183
+ ```json
184
+ { "mcpServers": { "gossipcat": { "command": "npx", "args": ["gossipcat"] } } }
371
185
  ```
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
186
 
374
- **OpenAI** (and OpenAI-compatible gateways):
375
- ```bash
376
- claude mcp add gossipcat -s user \
377
- -e OPENAI_API_KEY=sk-... \
378
- -- gossipcat
379
- ```
380
- For Azure / Together / Groq / OpenRouter, add `OPENAI_BASE_URL`:
381
187
  ```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
- ```
188
+ # Pin to a version
189
+ npm install -g gossipcat@0.6.5
387
190
 
388
- **OpenClaw** (local gateway):
389
- ```bash
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.
191
+ # Pin to a GitHub release tarball (bypasses the npm registry)
192
+ npm install -g https://github.com/gossipcat-ai/gossipcat-ai/releases/download/v0.6.5/gossipcat-0.6.5.tgz
394
193
 
395
- **Ollama** (fully local, no API):
396
- ```bash
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.
194
+ # Project-local (postinstall writes .mcp.json — open the IDE there, no `mcp add` needed)
195
+ cd your-project && npm install --save-dev gossipcat
403
196
 
404
- **Mixed setup** (common production shape — Gemini cheap reviewers + Anthropic heavy implementers):
405
- ```bash
406
- claude mcp add gossipcat -s user \
407
- -e GOOGLE_API_KEY=AIza... \
408
- -e ANTHROPIC_API_KEY=sk-ant-... \
409
- -- gossipcat
197
+ # From source (contributors)
198
+ git clone https://github.com/gossipcat-ai/gossipcat-ai.git && cd gossipcat-ai
199
+ npm install && npm run build:mcp
200
+ claude mcp add gossipcat -s user -- node "$PWD/dist-mcp/mcp-server.js"
410
201
  ```
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
202
 
413
- Keys are stored persistently and cross-platform:
414
- - **macOS** — OS Keychain
415
- - **Linux** — Secret Service (`secret-tool`)
416
- - **Windows / other** — AES-256-GCM encrypted file
203
+ 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
204
 
418
- ### 4. Initialize your team
205
+ **Upgrade:** `npm install -g gossipcat@latest`, or ask in-session *"check for gossipcat updates"* (the `gossip_update` tool applies it with your confirmation).
206
+ </details>
419
207
 
420
- Start a Claude Code session in any project and ask Claude to set up your team:
208
+ ### API keys (relay agents only)
421
209
 
422
- ```
423
- "Set up a gossipcat team with a Gemini reviewer and a Sonnet implementer"
424
- ```
210
+ Native agents need **no key**. For relay agents, pass provider keys with `-e` at registration or set them in your shell:
425
211
 
426
- Claude Code calls `gossip_setup()` to create your `.gossip/config.json` and agent definitions. You choose the providers, models, and roles — gossipcat adapts to your setup.
212
+ | Provider | How | Notes |
213
+ |----------|-----|-------|
214
+ | Native (Claude Code / Cursor) | — | Runs through your subscription. No key. |
215
+ | Anthropic API | `ANTHROPIC_API_KEY` | Direct API access without the subscription path |
216
+ | Google Gemini | `GOOGLE_API_KEY` | Built-in 429 watcher falls back to native on cooldown |
217
+ | OpenAI / compatible | `OPENAI_API_KEY` (+ `OPENAI_BASE_URL`) | Point `BASE_URL` at Azure / Together / Groq / OpenRouter |
218
+ | xAI (Grok) | OS keychain via `key_ref` | No env var — store in keychain, set `key_ref` (default service `grok`) |
219
+ | DeepSeek | OS keychain via `key_ref` | No env var — keychain, `key_ref` default service `deepseek` |
220
+ | OpenClaw 🦞 | — (local gateway) | OpenAI-compatible at `http://127.0.0.1:18789/v1`, auth via the local daemon |
221
+ | Ollama (local) | — | `http://localhost:11434`. `ollama pull llama3.1:8b` first |
427
222
 
428
- Available presets: `reviewer`, `implementer`, `tester`, `researcher`, `debugger`, `architect`, `security`, `designer`, `planner`, `devops`, `documenter`
223
+ 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
224
 
430
225
  <br/>
431
226
 
432
- ## First Run — 5 Minutes
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.
227
+ ## First Run
435
228
 
436
- ### Step 1 Open Claude Code in any project
229
+ The fastest path from "just installed" to "first useful review."
437
230
 
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.
444
-
445
- ### Step 2 — Bootstrap once
446
-
447
- In Claude Code, just type:
231
+ **1 · Open your IDE in a project and bootstrap once.** In Claude Code or Cursor, run:
448
232
 
449
233
  > **Run gossip_status**
450
234
 
451
- This loads gossipcat's operating rules into the current session, creates `.gossip/` in your project on first run, and prints the dashboard URL + auth key. Copy the key — you'll paste it into the dashboard once.
235
+ This loads gossipcat's operating rules into the session, creates `.gossip/` on first run, and prints the dashboard URL + auth key:
452
236
 
453
- You'll see something like:
454
237
  ```
455
238
  Status:
456
- Host: claude-code (native agents supported)
457
- Relay: running :49664
458
- Workers: 0
459
- Dashboard: http://localhost:49664/dashboard (key: c3208820f8f70605fd45fa90004a2a4b)
460
- Quota: google — OK
239
+ Host: claude-code (native agents supported) ← which IDE you're in
240
+ Relay: running :49664 ← background server for agents + dashboard
241
+ Workers: 0 ← agents busy right now (rises during a round)
242
+ Dashboard: http://localhost:49664/dashboard (key: c3208820…) ← open it, paste the key
243
+ Quota: google — OK ← provider rate-limit status (falls back to native on cooldown)
461
244
  ```
462
245
 
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:
246
+ Open the dashboard URL, paste the key (it rotates each boot — re-run `gossip_status` for a fresh one).
468
247
 
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)
481
- ```
248
+ **2 · Create your first team.** Tell the orchestrator what you're building:
482
249
 
483
- Native agents (`native: true`) run through your existing Claude Code subscription **no API key needed**. Relay agents need a key for their provider. If you don't have a Google API key, drop `gemini-reviewer` from the team for now and add it later.
250
+ > *"Set up a gossipcat team for this project — a TypeScript Next.js app with Postgres and Stripe."*
484
251
 
485
- Once you approve, gossipcat writes `.gossip/config.json` and the agents are live.
252
+ 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.
486
253
 
487
- ### Step 4 — Run your first review
254
+ **3 · Run your first review** in a project with some changes:
488
255
 
489
- In a project where you've made some changes:
490
-
491
- > **"Do a consensus review of my recent changes"**
492
-
493
- What happens (typical timing):
256
+ > *"Do a consensus review of my recent changes"*
494
257
 
495
258
  | Phase | Time | What you see |
496
259
  |---|---|---|
497
- | 1. Decompose | 1s | Claude picks agents and dispatches them in parallel |
498
- | 2. Independent review | 30s–2min | Each agent reads your diff and reports findings |
499
- | 3. Cross-review | 30s–1min | Each agent reviews the others' findings |
500
- | 4. Consensus report | <1s | Findings tagged CONFIRMED / DISPUTED / UNVERIFIED / UNIQUE |
501
- | 5. Verification | varies | Claude reads UNVERIFIED findings against the code, decides if they're real |
502
- | 6. Signal recording | <1s | Accuracy signals saved per agent |
503
-
504
- You get a report like:
260
+ | Decompose | ~1s | Orchestrator picks agents, dispatches in parallel |
261
+ | Independent review | 30s–2min | Each agent reads your diff and reports findings |
262
+ | Cross-review | 30s–1min | Each agent checks the others' findings against the code |
263
+ | Consensus report | <1s | Findings tagged CONFIRMED / DISPUTED / UNVERIFIED / UNIQUE |
264
+ | Verify + record | <1s | UNVERIFIED checked against code; accuracy signals saved |
505
265
 
506
266
  ```
507
267
  Consensus round b81956b2-e0fa4ea4 — 3 agents
@@ -509,322 +269,180 @@ Consensus round b81956b2-e0fa4ea4 — 3 agents
509
269
  CONFIRMED (2):
510
270
  [critical] Race condition in tasks Map at server.ts:47 — sonnet + gemini
511
271
  [high] Missing auth on WebSocket upgrade at server.ts:112 — sonnet + gemini
512
-
513
272
  UNIQUE (1):
514
273
  [medium] String concat in SQL query at queries.ts:88 — only sonnet caught this
515
-
516
274
  DISPUTED (1):
517
275
  [low] "Memory leak in timer" — haiku says yes, sonnet/gemini say no
518
- → verified, sonnet was right (not a leak cleanup is in finally)
276
+ → verified: not a leak, cleanup is in finally. False alarm caught.
519
277
 
520
278
  Final: 3 real bugs to fix, 1 false alarm caught by cross-review.
521
279
  ```
522
280
 
523
- You only act on **CONFIRMED** + verified **UNIQUE** findings. The cross-review is the whole point single-agent reviews ship hallucinated bugs as critical findings 5–10% of the time. Cross-review with verification drops that to under 1%.
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.
281
+ Act on **CONFIRMED** + verified **UNIQUE**. The false alarm that cross-review caught is the bug a single reviewer would have shipped to you.
530
282
 
531
283
  <br/>
532
284
 
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.
285
+ ## <a id="daily-use"></a>How to use it day-to-day
536
286
 
537
- ### Recipe 1: Review a diff before committing
287
+ Each recipe: what to type, what you get, what to do with it.
538
288
 
539
- **Type:**
540
- > "Review my staged changes"
289
+ **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.
541
290
 
542
- **What you'll get:** A consensus report (1–3 minutes) with findings tagged CONFIRMED / UNIQUE / DISPUTED. Claude verifies UNVERIFIED findings against the code and tells you which are real.
291
+ **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.
543
292
 
544
- **What to do with it:** Fix the CONFIRMED + verified-real findings. Ignore disputed-but-falsified findings. If a finding looks important but you disagree, ask Claude *"verify finding f3 against the code yourself"*it'll re-check and either back you up or push back.
293
+ **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.
545
294
 
546
- **When NOT to use it:** Tiny diffs (under 20 lines)overhead exceeds value. Just eyeball them.
295
+ **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.
547
296
 
548
- ---
297
+ **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.
549
298
 
550
- ### Recipe 2: Catch security issues before shipping a feature
299
+ **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.
551
300
 
552
- **Type:**
553
- > "Security audit the payment handler at lib/stripe/webhook.ts"
554
-
555
- **What you'll get:** Each security-skilled agent reviews from a different angle (OWASP, input validation, auth, secrets). Findings get cross-validated. Real vulns surface; theoretical ones get caught and dropped.
556
-
557
- **What to do with it:** Fix critical/high findings before merge. Bookmark medium/low findings for the next pass.
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.
301
+ > **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
302
 
625
303
  <br/>
626
304
 
627
305
  ## Reading the dashboard
628
306
 
629
- The dashboard at `http://localhost:<port>/dashboard` is the visual layer over everything gossipcat knows. Open it once with the auth key from `gossip_status`, leave the tab open while you work. Updates push live via WebSocket.
307
+ 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
308
 
631
309
  <p align="center">
632
310
  <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
311
  </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>
312
+ <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>
637
313
 
638
-
639
- | Panel | What it shows | When to look at it |
640
- |---|---|---|
641
- | **Overview** | Active agents, dispatch weights, recent finding counts | First thing in the morning — quick sanity check |
642
- | **Team** | All agents sorted by reliability score, with category breakdowns | Picking which agent to trust for a tricky finding |
643
- | **Tasks** | Live + historical task list with agent, duration, status | When something feels stuck — find it here first |
644
- | **Findings** | Consensus reports paginated by round, with CONFIRMED/DISPUTED/UNVERIFIED breakdowns | Reviewing what got caught in a recent review |
645
- | **Agent detail** | Per-agent memory entries, skills, score history, task history | Diagnosing why a specific agent keeps failing in a category |
646
- | **Signals** | Raw signal feed (agreement / hallucination / unique_confirmed) | Auditing the scoring pipeline if scores look wrong |
647
- | **Logs** | mcp.log content (boot, errors, warnings) | When the MCP server is misbehaving and you need raw evidence |
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.
314
+ | Panel | What it shows |
315
+ |---|---|
316
+ | **Overview** | Active agents, dispatch weights, recent finding counts |
317
+ | **Team** | Agents sorted by reliability, with category breakdowns |
318
+ | **Tasks** | Live + historical tasks with agent, duration, status |
319
+ | **Findings** | Consensus reports by round, CONFIRMED/DISPUTED/UNVERIFIED breakdowns |
320
+ | **Agent detail** | Per-agent memory, skills, score history, task history |
321
+ | **Signals** | Raw signal feed (agreement / hallucination / unique_confirmed) |
322
+ | **Chat** | Live two-way bridge into the orchestrator (see below) |
323
+ | **Logs** | `mcp.log` (boot, errors, warnings) |
650
324
 
651
325
  <br/>
652
326
 
653
- ## Troubleshooting
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.
327
+ ## <a id="drive-it-from-your-browser"></a>Drive it from your browser
657
328
 
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
329
+ 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.
662
330
 
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.
665
-
666
- ### "Agents keep returning empty findings"
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.
668
-
669
- ### "The same hallucinated finding keeps coming back"
670
- Record a `hallucination_caught` signal: ask Claude *"record a hallucination_caught signal for finding f3 in the last consensus round — it claimed X but the code shows Y"*. After 3 such signals, the offending agent's score drops in that category and the orchestrator stops asking it questions in that area.
671
-
672
- ### "I want to use my own model / provider"
673
- Edit `.gossip/config.json` directly. Any OpenAI-compatible endpoint works via `provider: "openai"` + `base_url`. Local models work via Ollama (`provider: "local"`). See the [Configuration](#configuration) section.
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 `&lt;agent_finding&gt;` 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
- ```
331
+ | Capability | What it does |
332
+ |---|---|
333
+ | **Multi-conversation tabs** | Several independent threads side by side — each its own `chat_id`, history, and live stream; per-tab unread, persisted across reloads |
334
+ | **Renamable tabs** | Double-click or **F2** to label a tab ("auth refactor", "perf audit") — survives reload |
335
+ | **Working-agents rail** | Live rail of who's dispatched and working right now watch a round progress without leaving chat |
336
+ | **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
337
 
689
- ### Still stuck?
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.
338
+ 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
339
 
692
340
  <br/>
693
341
 
694
- ## Under the hood
342
+ ## Host compatibility
695
343
 
696
- Claude Code translates your natural-language requests into gossipcat MCP tool calls automatically you don't need to type these — but if you want fine-grained control they're documented here:
344
+ Gossipcat auto-detects the host and adapts dispatch + the rules file it writes.
697
345
 
698
- ```
699
- gossip_run(agent_id: "auto", task: "...") → single-agent task
700
- gossip_dispatch(mode: "consensus", tasks: [...]) multi-agent review with cross-review
701
- gossip_collect(consensus: true) → wait for results, run consensus
702
- gossip_signals(action: "record", signals: [...]) record accuracy after verification
703
- gossip_scores() view agent performance
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
- ```
346
+ | Host | Native agents | Rules file |
347
+ |------|---------------|------------|
348
+ | **Claude Code** | Yes `Agent()` | `.claude/rules/gossipcat.md` |
349
+ | **Cursor** | Yes — `Task(subagent_type, model, …)` | `.cursor/rules/gossipcat.mdc` |
350
+ | Windsurf | Relay-only (planned) | `.windsurfrules` |
351
+ | VS Code | Relay-only (planned) | |
708
352
 
709
- The dispatch rules at `.claude/rules/gossipcat.md` (auto-generated on first boot) teach Claude Code when to pick which mode based on what your change touches. You can edit these rules to bias the dispatch.
353
+ 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
354
 
711
355
  <br/>
712
356
 
713
- ## For AI Agents
357
+ ## Troubleshooting
714
358
 
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.
359
+ **Dashboard says unauthorized / 401** the key rotates every boot. Run `gossip_status` for the current key.
716
360
 
717
- If you are a Claude Code instance reading this to understand how to use gossipcat, here is the complete operational guide.
361
+ **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.
718
362
 
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.
363
+ **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).
720
364
 
721
- ### Step 1Check what you have
365
+ **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.
722
366
 
723
- ```
724
- gossip_status()
725
- ```
367
+ **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 `&lt;agent_finding&gt;` instead of raw tags, a transport layer is entity-encoding output — pass agent output verbatim to `gossip_relay`.
726
368
 
727
- This tells you: which agents are available, their providers/models, relay status, dashboard URL, and suggested workflows. Always call this first in a new session.
369
+ **Multiple IDE instances** each gets its own dynamic port. For a stable port on one project, set `GOSSIPCAT_PORT=24420` in that environment.
728
370
 
729
- ### Step 2 Dispatch work
371
+ **Uninstall** `npm uninstall -g gossipcat && claude mcp remove gossipcat -s user`; `rm -rf ~/.gossip` (global state) or `<project>/.gossip` (per-project).
730
372
 
731
- **Single agent (auto-selected):**
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
+ **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).
736
374
 
737
- **Parallel (fan-out, no consensus):**
738
- ```
739
- gossip_dispatch(mode: "parallel", tasks: [
740
- { agent_id: "gemini-reviewer", task: "..." },
741
- { agent_id: "sonnet-reviewer", task: "..." }
742
- ])
743
- ```
744
-
745
- **Consensus (cross-review):**
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
- ```
753
-
754
- ### Step 3 — Collect results
755
-
756
- ```
757
- gossip_collect(task_ids: ["id1", "id2", "id3"], consensus: true)
758
- ```
759
-
760
- With `consensus: true`, agents cross-review each other's findings. If native agents are in the round, `gossip_collect` returns `⚠️ EXECUTE NOW` with prompts — dispatch those `Agent()` calls immediately, then relay each result via `gossip_relay_cross_review`.
375
+ <br/>
761
376
 
762
- ### Step 4 — Verify and record signals
377
+ ## Configuration
763
378
 
764
- After consensus, **verify every UNVERIFIED finding** against the actual code (grep/read the cited files). Then record signals:
379
+ 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
380
 
381
+ ```json
382
+ {
383
+ "main_agent": { "provider": "google", "model": "gemini-2.5-pro" },
384
+ "utility_model": { "provider": "native", "model": "haiku" },
385
+ "consensus_judge": { "provider": "anthropic", "model": "claude-sonnet-4-6", "native": true },
386
+ "agents": {
387
+ "sonnet-reviewer": {
388
+ "provider": "anthropic", "model": "claude-sonnet-4-6",
389
+ "preset": "reviewer", "skills": ["code_review", "security_audit", "typescript"],
390
+ "native": true
391
+ }
392
+ }
393
+ }
766
394
  ```
767
- gossip_signals(action: "record", signals: [{
768
- signal: "unique_confirmed", // or "hallucination_caught", "agreement"
769
- agent_id: "gemini-reviewer",
770
- finding: "Race condition in task map at line 47",
771
- finding_id: "<consensus_id>:<agent_id>:f1" // mandatory
772
- }])
773
- ```
774
-
775
- Signals update dispatch weights. Agents that hallucinate get penalized. Agents that catch real bugs get promoted.
776
-
777
- ### Key rules
778
395
 
779
- - **Never leave UNVERIFIED findings unexamined** — read the code, confirm or deny, record the signal.
780
- - **`finding_id` is mandatory on every signal** — format: `<consensus_id>:<agent_id>:fN`.
781
- - **Use `gossip_progress` after reconnect** if a consensus round was in flight, it re-surfaces the pending EXECUTE NOW prompts.
396
+ | Field | Description |
397
+ |-------|-------------|
398
+ | `main_agent` | Internal LLM for routing, planning, synthesis (set `provider: "none"` on Claude Code / Cursor to let the host classify natively) |
399
+ | `utility_model` | Memory compaction, gossip, lens generation |
400
+ | `consensus_judge` | Synthesis-only model that merges cross-review results (does not grade) |
401
+ | `agents.<id>.provider` | `anthropic`, `google`, `openai`, `grok`, `deepseek`, `openclaw`, `local`, `native` |
402
+ | `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 |
403
+ | `agents.<id>.base_url` | Custom endpoint for `openai` / `openclaw` (e.g. `http://127.0.0.1:18789/v1`) |
404
+ | `agents.<id>.native` | `true` = runs via the host's native tool, no API key |
405
+ | `agents.<id>.preset` | `reviewer`, `implementer`, `tester`, `researcher`, `debugger`, `architect`, `security`, `designer`, `planner`, `devops`, `documenter` |
406
+ | `agents.<id>.skills` | Skill labels for dispatch matching |
782
407
 
783
- ### When to use consensus
408
+ <details>
409
+ <summary><strong>OpenClaw 🦞 (local gateway provider)</strong></summary>
784
410
 
785
- Use `gossip_dispatch(mode: "consensus")` when the change touches: shared mutable state, auth/sessions, file persistence, or the core dispatch pipeline. Use `gossip_run` for single-agent research, exploration, or review tasks that don't need cross-validation.
411
+ [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.
412
+ </details>
786
413
 
787
- ---
414
+ <br/>
788
415
 
789
416
  ## MCP Tools
790
417
 
791
- These tools are called by the internal LLM (the orchestrator Claude Code with gossipcat MCP). You don't invoke them manually; the orchestrator selects and calls them based on your requests.
418
+ The orchestrator (Claude Code / Cursor) selects and calls these from your natural-language requests you don't invoke them manually.
792
419
 
793
420
  | Tool | Purpose |
794
421
  |------|---------|
795
422
  | `gossip_status` | System status, dashboard URL, agent list |
423
+ | `gossip_setup` | Create or update an agent team |
796
424
  | `gossip_run` | Single-agent dispatch with auto agent selection |
797
425
  | `gossip_dispatch` | Multi-agent dispatch: `single`, `parallel`, or `consensus` |
798
426
  | `gossip_collect` | Collect results with optional cross-review synthesis |
799
- | `gossip_relay` | Feed native agent results back into the pipeline |
800
- | `gossip_relay_cross_review` | Feed native cross-review results into consensus |
801
- | `gossip_plan` | Decompose task into sub-tasks with agent assignments |
427
+ | `gossip_plan` | Decompose a task into sub-tasks with agent assignments |
802
428
  | `gossip_signals` | Record or retract accuracy signals |
803
- | `gossip_scores` | View agent accuracy, uniqueness, and dispatch weights |
429
+ | `gossip_scores` | View agent accuracy, uniqueness, dispatch weights |
804
430
  | `gossip_skills` | Develop, bind, unbind, or list per-agent skills |
805
- | `gossip_setup` | Create or update agent team |
806
- | `gossip_session_save` | Save session context for next session |
431
+ | `gossip_resolve_findings` | Mark consensus findings resolved/open |
807
432
  | `gossip_remember` | Search an agent's cognitive memory |
433
+ | `gossip_verify_memory` | Check a memory claim against current code (FRESH / STALE / CONTRADICTED) before acting on backlog |
434
+ | `gossip_session_save` | Save session context for the next session |
808
435
  | `gossip_progress` | Check in-progress task status |
809
- | `gossip_watch` | Stream signals as agents emit them, between dispatch and collect (catches pipeline drops mid-round) |
810
- | `gossip_verify_memory` | Verify a memory claim against current code — FRESH / STALE / CONTRADICTED / INCONCLUSIVE — before acting on backlog items |
811
- | `gossip_reload` | Self-terminate the MCP process so Claude Code respawns with a fresh bundle (dev loop after code changes) |
436
+ | `gossip_watch` | Stream signals as agents emit them (catches pipeline drops mid-round) |
437
+ | `gossip_ask` | Ask the dashboard a structured single/multi-select question |
438
+ | `gossip_guide` | Print the gossipcat handbook for humans |
439
+ | `gossip_config` | Manage runtime feature-gate flags |
440
+ | `gossip_format` | Return the canonical `<agent_finding>` output format block |
812
441
  | `gossip_tools` | List all available tools |
813
- | `gossip_update` | Check for or apply gossipcat updates from npm |
814
- | `gossip_bug_feedback` | File a GitHub issue on the gossipcat repo from an in-session bug report |
815
-
816
- <br/>
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
- ```
442
+ | `gossip_update` | Check for / apply gossipcat updates from npm |
443
+ | `gossip_bug_feedback` | File a GitHub issue from an in-session bug report |
444
+ | `gossip_reload` | Self-terminate so the host respawns with a fresh bundle (dev loop) |
445
+ | _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
446
 
829
447
  <br/>
830
448
 
@@ -832,181 +450,45 @@ npm run build:dashboard
832
450
 
833
451
  ```
834
452
  gossipcat/
835
- apps/
836
- cli/ MCP server, native agent bridge, boot sequence
453
+ apps/cli/ MCP server, host-aware native agent bridge, boot sequence
837
454
  packages/
838
455
  orchestrator/ Dispatch pipeline, consensus engine, memory, skills,
839
456
  performance scoring, task graph, prompt assembly
840
457
  relay/ WebSocket relay server, dashboard REST/WS API
841
- dashboard-v2/ React + Vite frontend (Terminal Amber theme)
458
+ dashboard-v2/ React + Vite + shadcn/ui frontend (warm-cream theme — see DESIGN.md)
842
459
  client/ Lightweight WebSocket client for relay connections
843
- tools/ File/shell/git tool implementations for worker agents
460
+ tools/ File / shell / git tool implementations for worker agents
844
461
  types/ Shared TypeScript types and message protocol
845
462
  ```
846
463
 
847
- <br/>
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`.
464
+ The dashboard ships prebuilt in `dist-dashboard/` and the relay serves it as static files; rebuild from source with `npm run build:dashboard`.
889
465
 
890
- Once added, the agent participates in consensus rounds, accumulates accuracy signals, and gets skill files generated from its failure patterns same as any other agent in the mesh.
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 | — |
466
+ > **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
467
 
949
468
  <br/>
950
469
 
951
470
  ## Roadmap
952
471
 
472
+ Shipped work lives in [CHANGELOG.md](CHANGELOG.md) and [GitHub Releases](https://github.com/gossipcat-ai/gossipcat-ai/releases). What's next:
473
+
953
474
  | Feature | Status |
954
475
  |---------|--------|
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
476
  | Dashboard enrichment (graphs, trends, session history) | ☐ Planned |
975
- | Local Postgres migration (embedded Postgres for tasks/signals/consensus/memory — unblocks full task results, real queries, no more JSONL scans) | ☐ Planned |
976
- | Full Cursor support | ☐ Planned |
977
- | Windsurf / VS Code parity | ☐ Planned |
978
- | Standalone CLI (no IDE required) | ☐ Planned |
979
- | CLI parity with MCP pipeline (gossip, task graph, agent memory in chat mode) | ☐ Planned |
477
+ | Local Postgres migration (tasks/signals/consensus/memory — full task results, real queries, no JSONL scans) | ☐ Planned |
478
+ | Windsurf / VS Code native parity | ☐ Planned |
479
+ | Standalone CLI (no IDE required) + chat-mode pipeline parity | ☐ Planned |
980
480
 
981
481
  <br/>
982
482
 
983
483
  ## Contributing
984
484
 
985
- Gossipcat is open source and early-stage — bug reports, feature ideas, and PRs are all welcome.
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.
485
+ Gossipcat is open source and early-stage — bug reports, ideas, and PRs welcome.
996
486
 
997
- ```bash
998
- # Stage 1 open the version bump PR
999
- ./scripts/release.sh 0.1.2
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
- ```
487
+ - **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).
488
+ - **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).
489
+ - **Discussions** → [GitHub Discussions](https://github.com/gossipcat-ai/gossipcat-ai/discussions).
1008
490
 
1009
- Stage 1 creates `chore/release-X.Y.Z`, bumps `package.json`, opens the PR, exits. Stage 2 reads the version from `package.json`, builds the MCP bundle + dashboard, packs the tarball, tags, pushes the tag, and creates the GitHub release with auto-generated notes from commits since the last tag.
491
+ [`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
492
 
1011
493
  <br/>
1012
494