council-of-high-intelligence

CLI Tool

0xNyk/council-of-high-intelligence

AI personas deliberate hard decisions across multiple LLM providers.

Overview

A command-line tool that convenes 18 AI personas (Aristotle, Feynman, etc.) in structured multi-round deliberation using multiple LLM providers. It surfaces disagreement and hidden assumptions to help users make better decisions.

README Preview

# Council of High Intelligence\n\n\n  \n\n\n\n  18 AI personas deliberate your hardest decisions across multiple LLM providers. One command.\n\n\n\n  \n  \n  \n  \n  \n  \n\n\n\nTable of Contents\n\n- [Quickstart](#quickstart)\n- [Why This Works](#why-this-works)\n- [The 18 Council Members](#the-18-council-members)\n- [Three Deliberation Modes](#three-deliberation-modes)\n- [Multi-Provider Auto-Routing](#multi-provider-auto-routing)\n- [Deliberation Protocol](#deliberation-protocol)\n- [Installation](#installation)\n- [Requirements](#requirements)\n- [Contributing](#contributing)\n- [Support the Project](#support-the-project)\n\n\n\n## Quickstart\n\n### Claude Code\n\n```bash\ngit clone https://github.com/0xNyk/council-of-high-intelligence.git\ncd council-of-high-intelligence\n./install.sh\n```\n\nThen in Claude Code:\n\n```\n/council Should we open-source our agent framework?\n/council --quick Should we add caching here?\n/council --duo Should we use microservices or monolith?\n```\n\n### Codex\n\n```bash\ngit clone https://github.com/0xNyk/council-of-high-intelligence.git\ncd council-of-high-intelligence\n./install.sh --codex\n```\n\nThen in Codex:\n\n```\n/council Should we open-source our agent framework?\n/council --quick Should we add caching here?\n/council --duo Should we use microservices or monolith?\n```\n\n## Why This Works\n\nA single LLM gives you one reasoning path dressed up as confidence. Ask it a hard question and you get a fluent, structured, wrong answer. The council gives you structured disagreement instead:\n\n- **Get genuinely different perspectives** — polarity pairs force real tension (Socrates destroys assumptions; Feynman rebuilds from first principles). Multi-provider routing spreads members across Claude, OpenAI, Gemini, and Ollama so you get actually different reasoning, not costume changes on one model\n- **Catch wrong questions early** — the Problem Restate Gate makes every member reframe the question before analysis begins. If 3 memb

FAQ (5)

Troubleshooting
Why does install.sh exit immediately when CHANGELOG.md is missing instead of using the 0.0.0 fallback?

Under set -euo pipefail, the missing file makes sed fail, and pipefail causes the pipeline with head to fail before ${PROJECT_VERSION:-0.0.0} runs. Append || true to the command substitution:

PROJECT_VERSION="$(sed -nE 's/^## \[([0-9]+\.[0-9]+\.[0-9]+)\].*/\1/p' "${SCRIPT_DIR}/CHANGELOG.md" 2>/dev/null | head -1 || true)"
PROJECT_VERSION="${PROJECT_VERSION:-0.0.0}"

Alternatively, check for the file before running sed and assign 0.0.0 when it is absent. This fix is tracked in PR #60.

GitHub Issue #57
Troubleshooting
How to fix Python ValueError: Invalid format string when using strftime('%b %-d, %Y') on Windows?

Replace the non-portable glibc/BSD %-d directive with explicit date formatting. In scripts/gen-star-history.py, change:

updated = pts[-1][0].strftime("%b %-d, %Y")

to:

d = pts[-1][0]
updated = f"{d:%b} {d.day}, {d.year}"

%-d is not supported by Windows Python, while d.day produces the same unpadded day number portably.

GitHub Issue #56
Troubleshooting
How do I fix detect-providers.sh reporting Ollama as available when no models are installed?

Upgrade to a release containing PR #61, which gates Ollama availability on a non-empty parsed model list. If patching scripts/detect-providers.sh manually, parse ollama list first and only set ollama_available=true when at least one model row exists:

if model_list="$(run_with_timeout ollama list 2>/dev/null)"; then
  ollama_model_names="$(printf '%s\n' "$model_list" | tail -n +2 | awk 'NF {print $1}')"
  if [ -n "$ollama_model_names" ]; then
    ollama_available=true
    ollama_models="$(printf '%s\n' "$ollama_model_names" | head -5 | sed 's/.*/"&"/' | paste -sd ',' -)"
  fi
fi

As a temporary workaround, pull at least one model and verify that ollama list shows a data row, not only the header:

ollama pull llama3.2
ollama list

GitHub Issue #58
Troubleshooting
How do I track STEP 4 and STEP 6 enforcement calls that are missing from Session Metadata?

Upgrade to the skill version containing the feat: add enforcement call tracking to session metadata change. The fix adds two fields to Session Metadata: enforcement_calls, the total number of enforcement model calls outside normal rounds, and enforcement_breakdown, the per-trigger counts. Keep rounds_run unchanged because enforcement probes are not rounds. Example output: enforcement_calls: 2 and enforcement_breakdown: { agreement_check: 2 }. If you are pinned to commit 0f63c19, these calls are not recorded, so benchmark token savings can be overstated; update or manually count enforcement dispatches from dissent quota, novelty gate, agreement check, anti-recursion, and missing/parseable STANCE: handling.

GitHub Issue #76
Troubleshooting
How do I fix SKILL.opencode.md drift when it is missing E3, E7, and E9 and council vote tallies differ between hosts?

Apply or merge PR #48 for the drift-guard and stale-documentation fixes, then ensure SKILL.opencode.md matches SKILL.md v1.2.0. Required content fixes: add E3 per-member reasoning_method injection from commit cbc2ac0; add E7 ./.council.yaml Project Overrides and the E9 confidence-weighted tally from commit 4ce07d0; and restore the Asset Resolution section. For E9, calculate vote weight as base weight × confidence factor using high=1.0, med=0.75, and low=0.5, while reporting W_total at base weights. Extend guards by adding SKILL.opencode.md existence and install.sh --dry-run --opencode checks to scripts/council-simulation-checklist.sh, adding the file to markdownlint in .github/workflows/lint.yml, and adding a fourth coordinator-file parity checkbox to the PR template. Also correct CLAUDE.md and add the missing Vote Tally field to Demo E. Verify with: grep -c reasoning_method SKILL.md SKILL.opencode.md, grep -ci council.yaml SKILL.md SKILL.opencode.md, sed -n '456,470p' SKILL.opencode.md, and grep -rn opencode scripts/council-simulation-checklist.sh .github/workflows/lint.yml .github/PULL_REQUEST_TEMPLATE.md.

GitHub Issue #47