npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

open-conclave

v0.1.0

Published

Multi-agent debate orchestrator plugin for OpenCode — Captain + parallel sub-agents + dynamic debate rounds + early stopping

Readme

open-conclave

Multi-agent debate orchestrator plugin for OpenCode. Runs parallel sub-agents (Harper, Benjamin, Lucas), moderates debate rounds with a Captain, and applies early stopping when consensus is reached.

How it works

  1. You select the Conclave agent tab in OpenCode and ask a question
  2. Three sub-agents run in parallel — each from their own perspective:
  • Harper — Research & Facts
  • Benjamin — Logic, Math & Code
  • Lucas — Creative & Alternative Perspectives
  1. The Captain critiques all responses and scores consensus
  2. Debate continues for up to 3 rounds; stops early when consensus ≥ 0.83
  3. The Captain synthesizes a final answer from the full debate

Installation

Add open-conclave to the plugin array in ~/.config/opencode/opencode.json. OpenCode installs it automatically on next startup — no separate install command needed.

{
  "plugin": ["open-conclave"]
}

You can also pin a version or use a git URL:

{
  "plugin": [
    "[email protected]",
    "open-conclave@git+https://github.com/martinzokov/open-conclave.git"
  ]
}

Local / development

git clone https://github.com/martinzokov/open-conclave.git
cd open-conclave
bun install
bun run build
cp dist/index.js ~/.config/opencode/plugins/conclave.js

Then register by file path:

{
  "plugin": ["/Users/you/.config/opencode/plugins/conclave.js"]
}

Configuration

Conclave uses whichever model you have active in OpenCode as the default for all agents. You can override each agent individually in your OpenCode config:

{
  "plugins": ["open-conclave"],
  "agent": {
    "conclave-captain": {
      "model": "github-copilot/claude-sonnet-4.5"
    },
    "conclave-harper": {
      "model": "github-copilot/gpt-4.1"
    },
    "conclave-benjamin": {
      "model": "github-copilot/claude-sonnet-4.5"
    },
    "conclave-lucas": {
      "model": "github-copilot/gpt-4.1"
    }
  }
}

Any provider/model string that OpenCode supports works here (e.g. anthropic/claude-opus-4-6, openai/gpt-4o, github-copilot/claude-sonnet-4.5).

Default agent behaviour

Captain (conclave-captain)

Expert debate moderator and synthesizer. Handles three internal tasks:

  • CRITIQUE — after each round, scores consensus (0.0–1.0), measures uncertainty improvement, and lists up to 2 open issues. Stops the debate early when consensus ≥ 0.83.
  • SYNTHESIZE — produces the final answer from the full debate history. This is what the user sees.

The Captain's persona controls the language and tone of the final output.

Harper (conclave-harper)

Research & Facts — provides accurate, well-sourced factual analysis. Cites evidence where possible. Focuses on empirical data, historical context, verified claims, and source reliability.

Benjamin (conclave-benjamin)

Logic, Math & Code — provides rigorous logical analysis, mathematical reasoning, and technical evaluation. Focuses on formal correctness, algorithmic thinking, edge cases, and code quality.

Lucas (conclave-lucas)

Creative & Alternative Perspectives — challenges assumptions, offers creative solutions, and considers user experience. Focuses on unconventional approaches, human impact, design thinking, and unexplored angles.

Sub-agent response format

Each sub-agent always responds with a structured JSON object:

{
  "agentName": "Harper",
  "role": "Research & Facts",
  "claims": [{ "text": "claim text", "confidence": 0.9 }],
  "reasoning": "brief internal reasoning (≤40 words)",
  "uncertainties": ["any unknowns or caveats"],
  "answer": "direct answer to the query (100–150 words)"
}

The format section of the system prompt is always preserved — persona overrides only replace the identity/role/focus section, so the JSON output is never broken by a custom persona.

Customising agent personas

Each agent has two parts to its system prompt:

  1. Persona — identity, role, and focus instructions (customisable via persona)
  2. Format — JSON schema requirements for sub-agents (always preserved)

Use the persona field in your opencode.json to replace the identity and focus of any agent. The JSON output format for sub-agents is never affected, so responses always parse correctly regardless of persona overrides.

The persona field applies to all five agents:

| Agent | Key | Role | |---|---|---| | Captain | conclave-captain | Moderator and final synthesizer | | Harper | conclave-harper | Research & Facts | | Benjamin | conclave-benjamin | Logic, Math & Code | | Lucas | conclave-lucas | Creative & Alternative Perspectives |

How persona is applied: OpenCode stores persona in multiple config fields internally. The plugin intercepts the config hook and merges your persona string into the full system prompt (persona section + format section), updating all internal fields consistently. This means the persona works reliably regardless of OpenCode's internal config processing.

The final output language is controlled by the Captain's persona — set persona on conclave-captain to affect the synthesized answer. Setting it only on sub-agents changes how they reason internally but the Captain will synthesize in its default language.

{
  "agent": {
    "conclave-captain": {
      "persona": "You are the Captain. You only respond in French."
    },
    "conclave-harper": {
      "persona": "You are Harper, a financial analyst specialising in markets and macroeconomics.\n\nYour role: analyse economic trends, market data, and investment implications.\nFocus on: macroeconomic indicators, sector performance, risk factors, and data-driven forecasts.\nKeep \"reasoning\" under 40 words. Write a thorough \"answer\" — aim for 100–150 words."
    },
    "conclave-benjamin": {
      "persona": "You are Benjamin, a security researcher and penetration tester.\n\nYour role: evaluate systems for vulnerabilities, attack surfaces, and defence weaknesses.\nFocus on: threat modelling, CVEs, exploit chains, and hardening recommendations.\nKeep \"reasoning\" under 40 words. Write a thorough \"answer\" — aim for 100–150 words."
    },
    "conclave-lucas": {
      "persona": "You are Lucas, a climate scientist and sustainability strategist.\n\nYour role: consider environmental impact, long-term sustainability, and ecological trade-offs.\nFocus on: carbon footprint, resource consumption, systemic risks, and green alternatives.\nKeep \"reasoning\" under 40 words. Write a thorough \"answer\" — aim for 100–150 words."
    }
  }
}

The default persona for each agent is used when no override is set.

Usage

TUI (interactive)

  1. Open OpenCode in your project directory
  2. Press Tab to select the Conclave agent
  3. Type your question and press Enter

The debate runs automatically and the final synthesized answer is returned.

CLI (non-interactive)

opencode run --agent conclave -m github-copilot/claude-sonnet-4.5 "What is the best database for read-heavy workloads?"

Slash command (from any agent)

/conclave What are the tradeoffs between microservices and a monolith?

Tool options

When calling the conclave tool directly, three optional arguments are available:

| Argument | Type | Default | Description | | ----------- | ------- | -------- | -------------------------------------------------- | | query | string | required | The question or task to deliberate on | | maxRounds | number | 3 | Max debate rounds (1–10) | | debug | boolean | false | Return full debate transcript alongside the answer |

Debug mode example:

/conclave --debug Should we rewrite this service in Rust?

Debugging

To see per-step timing during a run:

opencode run --agent conclave -m github-copilot/claude-sonnet-4.5 --print-logs "Your question" 2>&1 | grep '\[conclave\]'

Output looks like:

[conclave] start  model=github-copilot/claude-sonnet-4.5  maxRounds=3
[conclave] round 1  sub-agents start  count=3
[conclave] round 1  conclave-harper   done  12.1s
[conclave] round 1  conclave-benjamin done  14.3s
[conclave] round 1  conclave-lucas    done  15.2s
[conclave] round 1  sub-agents done   15.2s
[conclave] round 1  critique   done   6.8s
[conclave] round 1  stop=true  consensus=0.91  reason=consensus_reached
[conclave] synthesize done   11.4s
[conclave] total      40.0s  rounds=1

Development

bun install          # install dependencies
bun run build        # build dist/index.js
bun test             # run tests
bun run lint         # lint
bun run lint:fix     # fix lint issues
bun run format       # format with Prettier

To test locally against a live OpenCode install:

bun run build && cp dist/index.js .opencode/plugins/conclave.js
opencode run --agent conclave -m <provider/model> --print-logs "test query"

License

MIT — see LICENSE.