Skip to main content
Glama

code-quorum

Unabhängige Reviews sind zu einem wichtigen Teil meiner Nutzung agentischer Tools geworden. Inspiriert von ähnlichen Arbeiten habe ich Code Quorum für den eigenen Gebrauch gebaut und teile es, falls es auch anderen nützlich ist.

Code Quorum ist ein macOS-Multi-Agenten-Rat für Claude Code und Codex. Der aktive Host schreibt sein eigenes Review, seine eigene Bewertung oder seinen eigenen Plan, während externe Sitze parallel arbeiten. Ein strukturelles Anti-Bias-Gate hält jede Perspektive bis zur finalen Synthese unabhängig.

Es kann bestehende Claude Code-, ChatGPT/Codex- und Gemini/Antigravity-Abonnements nutzen. Der OpenCode-Sitz verwendet OpenRouter, mit DeepSeek V4 Flash als Standardmodell. Beide CLI-Hosts werden unterstützt, ebenso wie Codex in der ChatGPT-Desktop-App und die Code-Oberfläche in der Claude-Desktop-App.

Host

Standard-Externer Rat

Claude Code

Codex + Gemini + OpenCode

Codex

Claude-Abo + Gemini + OpenCode

Der Host ist niemals gleichzeitig ein Subprozess-Sitz. Die Start/Await-Trennung erfordert, dass der Host seine eigene Antwort bildet, bevor q_await Peer-Ausgaben offenlegt, und jede Council-Skill ruft die blockierende Abschlussbenachrichtigung im selben Turn wie ihren Start auf.

Externe Sitze sind schreibgeschützt, aber schreibgeschützt bedeutet nicht datenlokal. Lesen Sie Sicherheit und Datengrenzen, bevor Sie Code Quorum für privates Material verwenden.

Jeder repository-lesende MCP-Council-Start erfordert ein explizites absolutes Projekt-cwd. Die MCP-Tools lehnen einen fehlenden oder leeren Wert ab, anstatt auf das Plugin-Cache- oder Laufzeitverzeichnis des Servers zurückzufallen. Die Host-Skills liefern diesen Wert bei normaler /q-*- und $code-quorum:q-*-Nutzung. Plan- und Scope-Dateien müssen ebenfalls innerhalb dieses Verzeichnisses aufgelöst werden; absolute Pfade, ..-Traversierung und Symlink-Escapes werden abgelehnt, bevor ihre Inhalte gelesen werden.

Workflows

Der Host kann einen Workflow aus einer passenden Klartext-Anfrage auswählen. Verwenden Sie die folgenden Formulare, um einen explizit auszuwählen:

Workflow

Claude Code

Codex

Shell

Plan

/q-plan <task>

$code-quorum:q-plan <task>

uv run quorum q-plan <task>

Brainstorm

/q-brainstorm <topic>

$code-quorum:q-brainstorm <topic>

uv run quorum q-brainstorm <topic>

Skystorm

/q-skystorm <topic>

$code-quorum:q-skystorm <topic>

Host-only-Skill

Validate

/q-validate <plan-path>

$code-quorum:q-validate <plan-path>

uv run quorum q-validate <plan-path>

Review

/q-review [target]

$code-quorum:q-review [target]

uv run quorum q-review [target]

Research

/q-research <topic>

$code-quorum:q-research <topic>

uv run quorum research <topic>

Help

/q-help

$code-quorum:q-help

Host-only-Skill

uv run quorum --help listet die genaue Shell-Oberfläche auf. Die wichtigsten Modifikatoren sind:

Option

Wirkung

--extended

Fügt eine weitere Divergenzrunde für Host-Brainstorming hinzu oder erweitert Validierung/Review auf 4 Runden mit Stance-Rotation.

--mode critique

Lässt spätere Validierungs-/Review-Runden Peer-Positionen angreifen, anstatt auf Übereinstimmung zu revidieren.

--scope <doc>

Deklariert In-Bounds-, Out-of-Bounds- und akzeptierte Risikobereiche für ein Codebase-Review.

--exploratory

Lässt Host-Recherche nach domänenübergreifenden Analogien suchen, anstatt nach direkter Vorarbeit.

--no-research

Führt Brainstorming oder Skystorm allein aus Modell-Priors aus.

Forschungsquellen und Anmeldedaten

q-research fragt standardmäßig alle sechs Quellen ab. Wiederholen Sie --source <name>, um einen Lauf einzuschränken.

Quelle

Ziel

Richtlinie für Anmeldedaten

arXiv (arxiv)

Wissenschaftliche Arbeiten und Preprints aus der arXiv-Suche.

Keine.

OpenAlex (openalex)

Aktuelle Werke und Abstracts; der Explorationsmodus erzeugt auch eine Subfeld-Karte.

OPENALEX_API_KEY oder QUORUM_OPENALEX_API_KEY ist für die normale OpenAlex-Nutzung erforderlich. QUORUM_OPENALEX_EMAIL identifiziert den Client, ersetzt aber nicht den Schlüssel.

Europe PMC (europepmc)

Life-Science-Preprints von bioRxiv, medRxiv, Research Square und ähnlichen Quellen; arXiv-Einträge sind ausgeschlossen.

Keine.

Context7 (context7)

Hochvertrauenswürdige Bibliotheksübereinstimmungen und Dokumentationsschnipsel.

CONTEXT7_API_KEY wird empfohlen, da anonyme Anfragen ratenbegrenzt sein können.

GitHub (github)

Öffentliche Repositories, die nach Name, Beschreibung und Themen abgeglichen und dann nach Sternen sortiert werden.

GH_TOKEN oder GITHUB_TOKEN wird für höhere Limits empfohlen. Private Repositories sind ausgeschlossen.

Hugging Face (huggingface)

Öffentliche Modell-IDs und Metadaten, sortiert nach Downloads. Term-Fallback-Ergebnisse tragen [broadened].

HF_TOKEN oder QUORUM_HF_TOKEN wird für Konto-Level-Hub-Limits empfohlen. Private Modelle werden herausgefiltert.

Code Quorum liest Anmeldedaten aus der Prozessumgebung und sendet Tokens nur in Autorisierungs-Headern. Der generierte Codex-Adapter leitet die benannten Variablen weiter, speichert ihre Werte jedoch nicht im Plugin-Artefakt. OpenAlex ist die einzige Quelle, die für die normale Nutzung einen Schlüssel erfordert; die anderen verbessern Zuverlässigkeit oder Ratenlimits.

Überprüfen Sie die Hugging-Face-Suche aus einem Checkout mit:

uv run quorum research "sentence embedding" --source huggingface --limit 5
uv run pytest tests/test_research_live.py -m live -k huggingface -q

Der CLI-Check muss Modell-Links und eine von Null verschiedene HuggingFace-Quellenanzahl zurückgeben. Die Live-Tests decken direkte Suche, konfigurierte Token-Authentifizierung, Vereinigung markanter Begriffe und den vollständigen research_topic-Pfad ab. Ohne Token überspringt der Authentifizierungstest, während anonyme Prüfungen weiterhin laufen.

Anforderungen

Code Quorum unterstützt derzeit macOS und erfordert Python 3.13+, den uv-Paketmanager und die Binärdateien für die Sitze, die Sie verwenden möchten. Jeder Sitz verlässt sich auf seinen eigenen Login oder Schlüssel; Code Quorum schreibt keine Anmeldedatenwerte in Plugin-Artefakte. Sitz-CLIs behalten ihre eigene Authentifizierung und ihren eigenen Laufzeitzustand, wie in SECURITY.md beschrieben.

Sitz

Binärdatei

Authentifizierung

Kosten

codex

codex

eigener Login der CLI (codex login; --with-api-key für nutzungsbasiert)

ChatGPT-Abo oder nutzungsbasierter API-Schlüssel

gemini

agy

Google OAuth über agy

Google-AI-Abo; nutzungsbasierter GEMINI_API_KEY ist ein explizites SDK-Opt-in

opencode

opencode

OPENROUTER_API_KEY in der Umgebung

nutzungsbasiert über OpenRouter

claude (nur Codex-Host)

claude

eigener claude.ai-Login der CLI

nur Claude-Abo; API-Schlüssel-Routing wird entfernt

Der Gemini-Sitz hängt von der macOS-Seatbelt-Sandbox ab; Claude verwendet stattdessen eine Read-Tool-Allowlist. Ein Codex-Host benötigt außerdem einen eng begrenzten LaunchAgent-Helfer für seine Claude- und Gemini-Sitze. Codex und OpenCode haben keine Seatbelt-Abhängigkeit, sind aber auf anderen Plattformen ungetestet.

Installation

Klonen Sie den stabilen Checkout und konfigurieren Sie die Sitze:

git clone https://github.com/sdewell/code-quorum.git
cd code-quorum
uv sync
agy  # complete Google OAuth login, then exit
uv run quorum setup-agy                    # one-time Gemini seat config
uv run quorum setup-models --host claude   # use --host codex for Codex
uv run quorum doctor --host claude         # or codex / both
uv run quorum auth-check --seat gemini --host claude

doctor prüft Binärdateien, Konfigurationsform und Sandbox-Bereitschaft. Es testet keine Live-Anmeldedaten. auth-check führt agy models in derselben Sandbox aus, die auch der Sitz verwendet, und erfordert mindestens eine gültige Modellzeile, ohne eine Modellaufforderung zu senden. Ein fehlender oder widerrufener Login führt den Benutzer zurück zu interaktivem agy; Code Quorum wechselt niemals stillschweigend zu einer nutzungsbasierten API-Route.

Installieren und verifizieren Sie auf einem Codex-Host den Helfer aus einem echten Terminal, bevor Sie die Codex-Authentifizierungsprüfung durchführen:

uv run quorum install-seat-helper-launchagent   # --allowed-root <dir> to widen
uv run quorum seat-helper-status
uv run quorum auth-check --seat gemini --host codex

Jeder MCP-Workflow erlaubt standardmäßig cwd unter ~/Code und ~/src; der Codex-Helfer wendet dieselben Wurzeln an, bevor er Claude- oder Gemini-Anfragen akzeptiert. Setzen Sie CODE_QUORUM_HELPER_ALLOWED_ROOTS oder installieren Sie den Helfer mit wiederholten --allowed-root-Optionen, um andere Projektwurzeln zu verwenden. Installieren Sie ihn nach jedem Code-Quorum-Upgrade aus dem aktualisierten stabilen Checkout neu. Inkompatible Helfer-Protokolle schlagen geschlossen fehl, und die Installation aus dem ersetzbaren Plugin-Cache von Codex wird abgelehnt.

Schreibgeschützte Grenzen

Jeder externe Sitz ist schreibgeschützt und weigert sich zu laufen, wenn seine Grenze nicht angewendet werden kann. Die Durchsetzung unterscheidet sich je nach Sitz: Codex verwendet seine native schreibgeschützte Sandbox, Claude legt nur Lesetools offen, Gemini verwendet macOS-Seatbelt und OpenCode verwendet ein isoliertes HOME mit eingeschränkten Berechtigungen.

Das Seatbelt-Profil von Gemini verweigert andere Lesezugriffe auf das Home-Verzeichnis, mit expliziten Ausnahmen für agy-Authentifizierung und Laufzeitzustand. Es verweigert keine lesbaren Pfade außerhalb von $HOME. Code Quorum bietet keinen universellen Pfadzaun für Claude, Codex oder OpenCode. Ratsmaterial kann die Maschine unter den vom Benutzer konfigurierten Provider-Konten verlassen. Die vollständige Grenztabelle, Datenabflusskarte, Anleitung zur strikten Isolierung und Handhabung von Anmeldedaten finden Sie in SECURITY.md.

Daten und Genehmigungen auf Codex

Codex behandelt Tool-Genehmigung, Dateisystem-Eindämmung und die Autorisierung, Material außerhalb der Maschine zu senden, als getrennte Entscheidungen. Ein Ziel wie main...HEAD begrenzt den vorbereiteten Review-Diff; es schränkt den schreibgeschützten Zugriff eines externen Sitzes auf das Arbeitsverzeichnis nicht ein.

Wenn approvals_reviewer = "auto_review" aktiviert ist, kann ein Council-Start eine explizite Autorisierung erfordern, die die Nutzlast und die Empfänger benennt. Benutzer, die unbeaufsichtigten Zugriff wünschen, können pro Tool opt-in, aber Code Quorum schreibt diese Genehmigungseinträge niemals selbst.

SECURITY.md enthält das einmalige Autorisierungsbeispiel, alle sechs Codex-Genehmigungsblöcke (einschließlich des gemeinsamen q_await-Tools), die Projekt-AGENTS.md-Anleitung, die Pfadbegrenzungen und das genehmigungserhaltende Aktualisierungsverfahren. Überprüfen Sie es, bevor Sie unbeaufsichtigte Workflows aktivieren.

Konfiguration

Jeder Sitz löst sein Modell über eine Leiter auf, wobei der erste Treffer gewinnt: Lauf-Flag -> Umgebungsvariable -> die von quorum setup-models aufgezeichnete Auswahl -> der ausgelieferte Pin. Aufgezeichnete Auswahlen ändern sich nie stillschweigend; ein Sitz, der eine nicht erfüllen kann, schlägt laut fehl, während der Rest des Rats fortfährt.

uv run quorum setup-models --host claude
uv run quorum setup-models --seat codex --model gpt-5.6-terra --effort medium

Variable

Effekt

CODE_QUORUM_HOST

Standard-Hostprofil (claude oder codex)

CODE_QUORUM_GEMINI_MODEL

Gemini-Sitzmodell (eine ID von agy models)

CODE_QUORUM_GEMINI_BACKEND

cli (Abonnement) oder sdk (verbrauchsabhängig GEMINI_API_KEY)

CODE_QUORUM_OPENCODE_MODEL

OpenCode-Sitzmodell

CODE_QUORUM_OPENCODE_DEBUG

0 deaktiviert die Diagnoseerfassung fehlgeschlagener Läufe

CODE_QUORUM_CLAUDE_MODEL / _EFFORT

Claude-Sitzmodell und Aufwand

CODE_QUORUM_CODEX_MODEL / _EFFORT

Codex-Sitzmodell und Denkaufwand

OpenCode-Konfiguration

Der OpenCode-Sitz erfordert OPENROUTER_API_KEY und lädt nicht Ihre persönliche OpenCode-Konfiguration. Er verwendet ein isoliertes HOME und erstellt diese generierte Konfiguration vor jedem Lauf neu. Das ausgelieferte Modell ist openrouter/deepseek/deepseek-v4-flash; sein OpenRouter-chunkTimeout beträgt 90000 Millisekunden.

Code Quorum setzt OPENCODE_DISABLE_PROJECT_CONFIG=1 und OPENCODE_PURE=1. Der generierte Rats-Agent erlaubt nur Read, glob und list, verweigert Shell- und Mutationswerkzeuge, blockiert .env und .env.* und erlaubt .env.example. Fehlgeschlagene oder leere Läufe schreiben rohe stdout/stderr-Erfassungen nach ~/.cache/code-quorum/opencode-debug, sofern nicht CODE_QUORUM_OPENCODE_DEBUG=0 gesetzt ist. Das Verzeichnis hat die Berechtigung 0700, Erfassungsdateien 0600, Prompt-Text wird aus den Befehlsmetadaten ausgelassen, und nur die neuesten 20 Erfassungen werden aufbewahrt. Rohe Streams können dennoch überprüftes Material enthalten. Siehe ARCHITECTURE.md und SECURITY.md für das vollständige Grenzdesign.

Deaktivieren eines Sitzes

Wenn eine Live-Überprüfung fehlschlägt, weil ein Sitz fehlt oder abgemeldet ist, kann quorum setup-models ihn in models.toml als disabled markieren. Deaktivierte Sitze werden von der Standard-Roster übersprungen und von doctor gemeldet, aber eine explizite --agent <seat>-Anfrage führt sie weiterhin aus.

Als Plugin installieren

Claude Code:

/plugin marketplace add sdewell/code-quorum
/plugin install code-quorum@code-quorum

Laden Sie für die Claude Code CLI OPENROUTER_API_KEY und optionale Forschungsschlüssel, bevor Sie den Host starten. Zum Beispiel:

source ~/.zshrc.local
claude

Stellen Sie für die Claude-Desktop-App die Schlüssel der aktuellen macOS-Anmeldesitzung zur Verfügung, bevor Sie sie öffnen:

source ~/.zshrc.local
launchctl setenv OPENROUTER_API_KEY "$OPENROUTER_API_KEY"

Der launchctl-Wert wird von jeder danach gestarteten Anwendung geerbt, bis er entfernt wird, eine Abmeldung erfolgt oder der Computer neu startet. Starten Sie Claude Code und entfernen Sie dann die Kopie der Anmeldesitzung; die bereits laufende App behält ihre Kopie für Plugin-Subprozesse:

launchctl unsetenv OPENROUTER_API_KEY

Nach der Installation oder Aktualisierung des Plugins oder nach dem Ändern eines Schlüssels beenden Sie Claude Code vollständig und starten Sie eine neue Claude Code-Sitzung. Ein Plugin-Neuladen kann Codeänderungen übernehmen, kann aber die vom laufenden Host geerbte Umgebung nicht ändern.

Das Claude-Plugin startet seinen MCP-Server mit uv run --directory ${CLAUDE_PLUGIN_ROOT} quorum-mcp, daher müssen uv und Python 3.13+ im PATH sein.

Codex:

Registrieren Sie den öffentlichen Marktplatz und installieren Sie das Plugin:

codex plugin marketplace add sdewell/code-quorum --ref main
codex plugin add code-quorum@code-quorum
codex plugin list

Beenden Sie für die ChatGPT-Desktop-App die App vollständig und öffnen Sie sie nach der Registrierung des Marktplatzes erneut. Öffnen Sie Plugins, wählen Sie Persönlich, wählen Sie Code Quorum und klicken Sie auf Installieren.

Nachdem eine der beiden Codex-Oberflächen das Plugin installiert hat, bereiten Sie den stabilen Checkout von einem echten Terminal aus vor:

uv sync
uv run quorum install-seat-helper-launchagent
uv run quorum seat-helper-status

Der Codex-Launcher startet das vorbereitete .venv dieses Checkouts direkt. Der MCP-Start hängt daher nicht von einem beschreibbaren uv-Cache, Netzwerk-Downloads oder einer Umgebung innerhalb des austauschbaren Plugin-Verzeichnisses ab. Nach jedem Upgrade ziehen Sie den Checkout, führen Sie uv sync aus und installieren Sie den Helfer neu, bevor Sie einen neuen Codex-Thread starten.

Öffnen Sie in der Codex CLI /hooks, um jeden code-quorum-Befehlshook zu überprüfen und zu vertrauen. Codex überspringt Plugin-Hooks, bis jeder aktuelle Definitions-Hash vertraut wird. Eine geänderte Definition erfordert eine erneute Überprüfung und Vertrauen für diese geänderte Definition.

Der generierte Launcher stellt standardmäßige Benutzer- und Homebrew-Binärverzeichnisse (~/.local/bin, ~/.opencode/bin, /opt/homebrew/bin und /usr/local/bin) für eine Desktop-App mit einem minimalen PATH wieder her.

Laden Sie für die Codex CLI die Schlüsselumgebung, bevor Sie Codex starten. Für die ChatGPT-Desktop-App setzen Sie die Schlüssel in der aktuellen macOS-Anmeldesitzung:

source ~/.zshrc.local
launchctl setenv OPENROUTER_API_KEY "$OPENROUTER_API_KEY"

Der Wert ist für jede danach gestartete Anwendung sichtbar, bis er entfernt wird. Starten Sie Codex und entfernen Sie dann die Kopie der Anmeldesitzung; die laufende App behält den Wert, den sie bereits geerbt hat:

launchctl unsetenv OPENROUTER_API_KEY

Beenden Sie nach einem Plugin-Upgrade oder einer Schlüsseländerung Codex vollständig und öffnen Sie es erneut, und starten Sie einen brandneuen Codex-Thread. Setzen Sie keinen Thread fort, der vor dem Neustart erstellt wurde; seine Tool-Registrierung kann sich weiterhin auf den vorherigen Plugin-Prozess beziehen.

Verwenden Sie für genehmigungserhaltende Aktualisierungen niemals codex plugin remove als normalen Weg. Befolgen Sie die verifizierte Sequenz in SECURITY.md.

Design

ARCHITECTURE.md beschreibt die gemeinsame CLI/MCP-Spine, Sitz-Adapter, Rundenmodell, Anti-Bias-Mechanismen, Paketierung und Fehlergrenzen. Die Kurzversion: Runde 1 enthält keine Peer-Ausgabe, spätere Runden anonymisieren Peers nach Standpunkt, und der Host erhält die Ratsmatrix erst bei q_await.

Namensnennung

Diese Projekte inspirierten die Workflow-Form; es wurden kein Code, keine Prompts und keine Dokumentation kopiert:

Lizenz

MIT.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Cross-agent artifact workspace with provenance across Claude Code, Codex, Cursor, LangGraph.

  • Coding agents from Claude Code, Cursor and Codex claim jobs and lock files on one shared board.

  • Adaptive plan/build/review cycles for AI coding assistants, persisted across sessions.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sdewell/code-quorum'

If you have feedback or need assistance with the MCP directory API, please join our Discord server