{"_id":"@armstrng/council","_rev":"8-d63524fc0d843bec81f44c55713cbca1","name":"@armstrng/council","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.0":{"name":"@armstrng/council","version":"0.1.0","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"author":{"name":"Colin Armstrong"},"license":"MIT","_id":"@armstrng/council@0.1.0","maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"homepage":"https://council.armstr.ng","bugs":{"url":"https://github.com/seeARMS/council/issues"},"bin":{"council":"bin/council.js"},"dist":{"shasum":"47a2551a2fc98821f459468dcc38866cbb884eca","tarball":"https://registry.npmjs.org/@armstrng/council/-/council-0.1.0.tgz","fileCount":14,"integrity":"sha512-LEf4XJQRN1bqtpb4FAmCtjFP7HiMU6LEuKtAVpNEXbqalJpHTH/tJyKuBO9EdMveKJp8AOLPjZZdWGuhqXt4bA==","signatures":[{"sig":"MEQCIGZmb9WWFMyqxWBUdupnEBUoY8jMokrE16OoBwIyKV8GAiAKxb7DqSZ0X559HixSueZy1r5VT/cAvZ5I4KgMMzLFZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39408},"type":"module","engines":{"node":">=20.0.0"},"exports":{".":"./src/index.js"},"scripts":{"test":"node --test","prepublishOnly":"npm test"},"_npmUser":{"name":"armstrng","email":"colin@armstr.ng"},"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"_npmVersion":"11.11.1","description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/council_0.1.0_1777556038825_0.9328640068069234","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@armstrng/council","version":"0.1.1","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"author":{"name":"Colin Armstrong"},"license":"MIT","_id":"@armstrng/council@0.1.1","maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"homepage":"https://council.armstr.ng","bugs":{"url":"https://github.com/seeARMS/council/issues"},"bin":{"council":"bin/council.js"},"dist":{"shasum":"8d18ac37ff6d85ef395b52e8ce4655fc62a00377","tarball":"https://registry.npmjs.org/@armstrng/council/-/council-0.1.1.tgz","fileCount":14,"integrity":"sha512-nLC3l3poH/YEhXiSjSTqUMcBpGTE1t0AzsZtXXKVqo8uCZiRPTQ51EY7EAhaLXU3hu3bOlPsMCtngyjaxuce8A==","signatures":[{"sig":"MEYCIQDizqNE+cvPt+0NG8bRytZwzHd2CWCeBfDix8KRO83uUgIhANwSL3JnAHlhjcjVldlV7a0Bn56XmWT4GUElmHLclaTJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39406},"type":"module","engines":{"node":">=20.0.0"},"exports":{".":"./src/index.js"},"scripts":{"test":"node --test","prepublishOnly":"npm test"},"_npmUser":{"name":"armstrng","email":"colin@armstr.ng"},"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"_npmVersion":"11.11.1","description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/council_0.1.1_1777556293550_0.925678263687228","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@armstrng/council","version":"0.1.2","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"author":{"name":"Colin Armstrong"},"license":"MIT","_id":"@armstrng/council@0.1.2","maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"homepage":"https://council.armstr.ng","bugs":{"url":"https://github.com/seeARMS/council/issues"},"bin":{"council":"bin/council.js"},"dist":{"shasum":"df7be8b0baea6b555da226614b2322841156b995","tarball":"https://registry.npmjs.org/@armstrng/council/-/council-0.1.2.tgz","fileCount":32,"integrity":"sha512-vTbaqLxeQoBTZGbehrzfc1D/3qbErhNLtbYshIXIdGG+4R+xH2LJwVOyEbKdXFfgSD4lKfPZVHFpbaGExBDW/g==","signatures":[{"sig":"MEUCICk3tnFbJyzsBB2uHoeNPW+KY4dtnQS78CiA12cBEVZNAiEAzitqzueDIgsJDUA2h+bUQBthot00o9bX4NHXCXkzZxs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@armstrng%2fcouncil@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":88022},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"2a5d7e5b7ba3ed7f1167c258c7c40c77332ea0dc","scripts":{"test":"node --test","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:75263c74-f5dc-48dd-8c9c-46dacf40a16e"}},"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"_npmVersion":"11.11.0","description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ink":"^7.0.1","react":"^19.0.0","@inkjs/ui":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/council_0.1.2_1777583933827_0.16381526942193214","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@armstrng/council","version":"0.1.3","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"author":{"name":"Colin Armstrong"},"license":"MIT","_id":"@armstrng/council@0.1.3","maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"homepage":"https://council.armstr.ng","bugs":{"url":"https://github.com/seeARMS/council/issues"},"bin":{"council":"bin/council.js"},"dist":{"shasum":"63d5741bc90bf0279f48bab43ef3ea162cdfc638","tarball":"https://registry.npmjs.org/@armstrng/council/-/council-0.1.3.tgz","fileCount":32,"integrity":"sha512-ZOtzkLdDi1mgiEPAmWoxxS0ucElv8Y0SJVAvuSIE+KhiTV/oOavHdkY1shbkWnUUxSkSoAMK9ycvTjrVavLq8Q==","signatures":[{"sig":"MEYCIQCKC47tzeDbJsWMgRtSpfQASD6NAqiw6hJjTgfbTe5lPwIhAK+3Ce7tVmailX4ka9saMKcCVgPml1kTxnChOOSa0t98","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@armstrng%2fcouncil@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":88388},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"84bb095ab62caabc087f6952e45913ba7852ddcc","scripts":{"test":"node --test","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:75263c74-f5dc-48dd-8c9c-46dacf40a16e"}},"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"_npmVersion":"11.11.0","description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ink":"^7.0.1","react":"^19.0.0","@inkjs/ui":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/council_0.1.3_1777585154252_0.2541379552040568","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@armstrng/council","version":"0.1.4","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"author":{"name":"Colin Armstrong"},"license":"MIT","_id":"@armstrng/council@0.1.4","maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"homepage":"https://council.armstr.ng","bugs":{"url":"https://github.com/seeARMS/council/issues"},"bin":{"council":"bin/council.js"},"dist":{"shasum":"9dd8850f21a544a9f7f8d6ba431d2ec493ca0d9e","tarball":"https://registry.npmjs.org/@armstrng/council/-/council-0.1.4.tgz","fileCount":32,"integrity":"sha512-qqzt6hMsRN8nEjmH0e2B1oIN4dOskBSxADlbJVWZVo1eRciPCFv8tVYgPJ2OmVBcMcmw+ix/znXXgCzTOX+13A==","signatures":[{"sig":"MEUCIQD0qUrnWrG1TBd8GrHeNiLW1n+hnxltx9MudMuHuDVu/AIgRPeHYNorXHGnorInnqGoP3lelScVOsu0b5bh1hQCOY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@armstrng%2fcouncil@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":92487},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"1d26575b7b74e41df63d3f66299bc7bb89d319d4","scripts":{"test":"node --test","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:75263c74-f5dc-48dd-8c9c-46dacf40a16e"}},"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"_npmVersion":"11.11.0","description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ink":"^7.0.1","react":"^19.0.0","@inkjs/ui":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/council_0.1.4_1777596823718_0.19024949090719856","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@armstrng/council","version":"0.1.5","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"author":{"name":"Colin Armstrong"},"license":"MIT","_id":"@armstrng/council@0.1.5","maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"homepage":"https://council.armstr.ng","bugs":{"url":"https://github.com/seeARMS/council/issues"},"bin":{"council":"bin/council.js"},"dist":{"shasum":"c2faa22cc43217bcb7cdb074003969ebc5396d43","tarball":"https://registry.npmjs.org/@armstrng/council/-/council-0.1.5.tgz","fileCount":32,"integrity":"sha512-qfTBVRBLCgNqC5+E9jeogkyi5i7xqoOH4ZNVs7k4Y5U8zripxRZp7ZVvUBNX+X/gUpte/BF0bhQDimJpS8hqIQ==","signatures":[{"sig":"MEYCIQDh172IvFfQEuyxPs7iTVhm3+YCS/zYx/QTNxVpA1p3KQIhAM0uxaUmJwmOfpXr0QCraKecsG9coPRD9pHdvEpLOgN4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@armstrng%2fcouncil@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":95616},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"b70061a5dfc0b1f3bb0d05f1a969c4f3bc71371a","scripts":{"test":"node --test","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:75263c74-f5dc-48dd-8c9c-46dacf40a16e"}},"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"_npmVersion":"11.11.0","description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ink":"^7.0.1","react":"^19.0.0","@inkjs/ui":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/council_0.1.5_1777648040061_0.21660184772539837","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@armstrng/council","version":"0.1.6","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"author":{"name":"Colin Armstrong"},"license":"MIT","_id":"@armstrng/council@0.1.6","maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"homepage":"https://council.armstr.ng","bugs":{"url":"https://github.com/seeARMS/council/issues"},"bin":{"council":"bin/council.js"},"dist":{"shasum":"e6c032b21dbd335a45da528ff09a8d14f82b0e60","tarball":"https://registry.npmjs.org/@armstrng/council/-/council-0.1.6.tgz","fileCount":32,"integrity":"sha512-9S5wyKZiyyYHfgHAaVT4/atT2Wxn9Ou1zvaDBCnTFZLR/GhZOEEkEkv/wE8btWxjPESkbjiFdNXMjxWPT3eyDA==","signatures":[{"sig":"MEYCIQCRgOGV66+oHuwS8kYerUMSU50UhuUI76GO4qcWTq6yxgIhALs0YX2PBzUNV62zgXdWn7PtH9VzPDIu65/Ue/a7DmIC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@armstrng%2fcouncil@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96071},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"789f96f933dface498d196fcc924d3811b11f9c3","scripts":{"test":"node --test","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test && npm run typecheck"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:75263c74-f5dc-48dd-8c9c-46dacf40a16e"}},"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"_npmVersion":"11.11.0","description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"ink":"^7.0.1","react":"^19.0.0","@inkjs/ui":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/council_0.1.6_1777828958750_0.7298617989210157","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"_id":"@armstrng/council@0.1.7","bin":{"council":"bin/council.js"},"bugs":{"url":"https://github.com/seeARMS/council/issues"},"dist":{"shasum":"a2ff8a3fbb34a84186e5bdc4364632836eb01483","tarball":"https://registry.npmjs.org/@armstrng/council/-/council-0.1.7.tgz","fileCount":32,"integrity":"sha512-6uWiILTcNxkBP1fnZ+8nqt+G7apsoO4bLi6E/BsnTVXIRjHOCr4zPHblbHKxQWAqprY874E/95SHFxabGS6Wcw==","signatures":[{"sig":"MEUCIQC9fXbYzg47DPzRrcJMAbXkd+BaIgcspmx1vJxnZQkrcQIgCgDIQnGQs9Q37d35YEbcu2dui6PmppdAoqt9mxq76XQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCJb7EYLSLjFQFwvIF4juPhvXTiWn4mOrJRjyaaEoq6VgIgXxczJjQH6y7r06r5tGn3F351g6pzKFxtuA+acbniPhw="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@armstrng%2fcouncil@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96442},"name":"@armstrng/council","type":"module","types":"./dist/index.d.ts","author":{"url":"https://armstr.ng","name":"Colin Armstrong","email":"colin@armstr.ng"},"engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"gitHead":"a06237c012da8bb43d013256cfca2604a90ab716","license":"MIT","scripts":{"test":"node --test","build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm test && npm run typecheck"},"version":"0.1.7","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"75263c74-f5dc-48dd-8c9c-46dacf40a16e"}},"homepage":"https://council.armstr.ng","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"_npmVersion":"11.19.0","description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","directories":{},"maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"_nodeVersion":"24.21.0","dependencies":{"ink":"^7.0.1","react":"^19.0.0","@inkjs/ui":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^6.0.3","@types/node":"^25.6.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/council_0.1.7_1790652618161_0.8560601181598457"}}},"time":{"created":"2026-04-30T13:33:58.759Z","modified":"2026-09-29T03:30:18.821Z","0.1.0":"2026-04-30T13:33:59.000Z","0.1.1":"2026-04-30T13:38:13.723Z","0.1.2":"2026-04-30T21:18:53.979Z","0.1.3":"2026-04-30T21:39:14.388Z","0.1.4":"2026-05-01T00:53:43.874Z","0.1.5":"2026-05-01T15:07:20.219Z","0.1.6":"2026-05-03T17:22:38.890Z","0.1.7":"2026-09-29T03:30:18.259Z"},"bugs":{"url":"https://github.com/seeARMS/council/issues"},"author":{"url":"https://armstr.ng","name":"Colin Armstrong","email":"colin@armstr.ng"},"license":"MIT","homepage":"https://council.armstr.ng","keywords":["ai","agents","automation","cli","codex","claude","gemini","llm"],"repository":{"url":"git+https://github.com/seeARMS/council.git","type":"git","directory":"cli"},"description":"Consensus-oriented CLI that asks Codex, Claude, and Gemini in parallel and synthesizes their answers.","maintainers":[{"name":"armstrng","email":"colin@armstr.ng"}],"readme":"# council\n\n`council` is a tiny CLI that asks multiple coding CLIs the same question and then synthesizes their answers into one final response.\n\nWebsite: [council.armstr.ng](https://council.armstr.ng). Made by [Colin Armstrong](https://armstr.ng).\n\nToday it supports:\n\n- `codex`\n- `claude`\n- `gemini`\n\nIf one of them is not installed, `council` skips it and keeps going.\n\n## Prerequisites\n\n- Node `>=22`\n- At least one of `codex`, `claude`, or `gemini` installed locally\n- At least one installed CLI already authenticated in a normal terminal session\n\nIf every configured CLI is missing or unauthenticated, `council` can still run but it will return a failure result rather than a synthesized answer.\n\n## Why this exists\n\nAgent CLIs are useful, but each one has different strengths, safety controls, and output conventions. `council` gives you one wrapper that:\n\n- fans out a prompt to several tools in parallel\n- keeps the primary interaction read-only by default\n- synthesizes the responses with one final model\n- supports human-friendly interactive output and automation-friendly headless output\n\n## Install\n\nInstall globally to get a `council` command on your `PATH`:\n\n```bash\nnpm install -g @armstrng/council\ncouncil \"How should I structure this TypeScript CLI?\"\n```\n\nOr run it directly without installing via npx:\n\n```bash\nnpx @armstrng/council \"How should I structure this TypeScript CLI?\"\n```\n\nThe rest of this README uses the bare `council` command. If you prefer not to install globally, swap any example for `npx @armstrng/council`.\n\nIf you are developing from a git checkout instead of using the published npm package:\n\n```bash\nnpm install\nnpm run build\n./bin/council.js \"How should I structure this TypeScript CLI?\"\n```\n\n## Quick start\n\nAsk all available tools and show the full council:\n\n```bash\ncouncil \"How should I structure this TypeScript CLI?\"\n```\n\nAsk only a subset:\n\n```bash\ncouncil --no-gemini \"Review this migration plan\"\n```\n\nPick a specific summarizer:\n\n```bash\ncouncil --summarizer claude \"Compare these two designs\"\n```\n\nRun against another project directory:\n\n```bash\ncouncil --cwd ../my-repo \"Review the current architecture\"\n```\n\n## Output modes\n\nInteractive human output:\n\n```bash\ncouncil \"What is the cleanest implementation?\"\n```\n\nSummary-only output:\n\n```bash\ncouncil --summary-only \"What should we do?\"\n```\n\nStructured JSON:\n\n```bash\ncouncil --json \"Explain the bug\" | jq\n```\n\nStreaming JSONL events for automation:\n\n```bash\ncouncil --json-stream \"Compare these approaches\"\n```\n\nHeadless automation mode:\n\n```bash\ncouncil --headless \"Summarize the tradeoffs\"\n```\n\n`--headless` suppresses the banner and progress UI and defaults to summary-only text unless you also request `--json` or `--json-stream`.\n\n## Interactive terminal behavior\n\nIn a real TTY, `council` uses a live dashboard:\n\n- each member row updates in place instead of appending new lines\n- running members show a live seconds counter\n- completed members show a 2-line preview of their result\n- press the number shown next to a row to expand or collapse the full result\n- just start typing to ask a follow-up in the same session\n- press `q` or `Esc` to exit the interactive view\n\n## Tool selection\n\nEnable or disable members individually:\n\n```bash\ncouncil --codex --claude --no-gemini \"Review this plan\"\n```\n\nOr use an explicit member list:\n\n```bash\ncouncil --members codex,gemini \"Compare these responses\"\n```\n\n`--members` preserves the order you pass. If you later re-enable another member with a toggle such as `--claude`, it is appended after that explicit list.\n\n## Safe defaults\n\n`council` intentionally runs the upstream tools in consultation-oriented modes:\n\n- `codex`: `codex exec --skip-git-repo-check --sandbox read-only --ephemeral`\n- `claude`: `claude --bare -p --permission-mode plan --verbose --output-format stream-json --include-partial-messages --no-session-persistence`\n- `gemini`: `gemini -p \"\" --skip-trust --approval-mode plan --output-format json`\n\nThat keeps the default behavior closer to analysis than autonomous mutation.\n\n## Exit codes\n\n- `0`: at least one member responded and synthesis succeeded\n- `2`: usage error\n- `3`: no member produced a response\n- `4`: synthesis failed after at least one member responded\n\n## Environment variables\n\n- `COUNCIL_CODEX_BIN`: override the `codex` executable path\n- `COUNCIL_CLAUDE_BIN`: override the `claude` executable path\n- `COUNCIL_GEMINI_BIN`: override the `gemini` executable path\n\n## Programmatic use\n\nThe package also exports a small JS API:\n\n```js\nimport { runCouncil } from '@armstrng/council';\n\nconst result = await runCouncil({\n  query: 'Compare these two implementation strategies'\n});\n```\n\nThe package ships `d.ts` declarations for this API.\n\n## Development\n\nRun the tests:\n\n```bash\nnpm test\n```\n\nBuild the distributable JS output:\n\n```bash\nnpm run build\n```\n\nRun the TypeScript check:\n\n```bash\nnpm run typecheck\n```\n\nThe suite uses fake `codex`, `claude`, and `gemini` binaries, so it does not require real vendor CLIs or credentials.\n\n## Contributing\n\nSee [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## Releases\n\n`@armstrng/council` releases are automated with `release-please`. The release workflow watches commits merged to `main`, updates [`CHANGELOG.md`](./CHANGELOG.md), bumps [`package.json`](./package.json), creates the GitHub release tag, and publishes the package from GitHub Actions.\n\nBefore the first automated publish, configure npm trusted publishing for the `seeARMS/council` repository and the `.github/workflows/release-please.yml` workflow.\n","readmeFilename":"README.md"}