cqstarts Claude and/or Codex in separate panes and writes per-project session files under.cq_config/.asksends a message directly to the target pane (send-only, always async).- Responses appear in the provider pane.
- Python 3.10+
- A supported terminal: WezTerm (recommended) or tmux (not recommended)
- The
claudeCLI and thecodexCLI installed and onPATH
Install WezTerm
Check out this CQ repo.
./install.sh installThis installs:
- executables into
~/.local/bin(or$CQ_BIN_DIR) - project files into
~/.local/share/code-quorum(or$CQ_INSTALL_PREFIX) - skills into
~/.claude/skillsand${CODEX_HOME:-~/.codex}/skills
Uninstall:
./install.sh uninstallInside WezTerm, go to your project directory:
cq claude codexYou should see new panes appear running Claude/Codex.
Flags:
cq -r claude codex: resume/continue prior provider context for this repo (if any)cq -a claude codex: auto-permission modecq -ar claude codex: both (resume + auto)
Try a skill:
$pair Create a hello world function in Rust. Just print, don't create a new file.These skills are installed for the providers and support multi-turn workflows across panes.
| Skill | Primary purpose | Code changes? | Interaction | Output | Use when |
|---|---|---|---|---|---|
all-plan |
Collaborative planning | No | Multi-turn: ask providers → synthesize | A concrete plan + decisions | You want agreement before coding |
pair |
Implement + review loop | Yes | Multi-turn: implement → review → merge (repeat) | Code changes + reviewer feedback | You want higher-quality changes fast |
poll |
“Ask the room” Q&A | No | Multi-turn: broadcast → collect replies → synthesize | A consensus answer (or split) | You want quick independent opinions |
You may also see other installed commands/skills like ask and mounted. The table above focuses on the multi-turn workflows.
Left: starting a poll. Right: the synthesized result.
You can run multiple independent sessions in the same repo. If the default session is already running in this directory, re-running cq codex claude will automatically start a new session (e.g. default-2) and print the chosen session name.
To disable this behavior:
cq --no-auto-session claude codex
# or:
CQ_AUTO_SESSION=0 cq claude codexInside a managed pane, ask automatically scopes to that session via CQ_SESSION:
# From within a managed provider pane:
ask claude "Any concerns with this approach?"Provider session files for named sessions live under:
.cq_config/sessions/<name>/.codex-session.cq_config/sessions/<name>/.claude-session
Pane titles are also namespaced (used for pane rediscovery) to avoid collisions across sessions.
- If you see an error about needing to run inside a supported terminal: run
cqfrom inside WezTerm or tmux. .cq_configauto-create is blocked: runmkdir .cq_configin your project directory (this typically happens when a parent directory already has a.cq_config/).- “Another cq instance is already running…”:
- To start a second independent session: re-run
cq codex claudeand let it auto-pickdefault-2,default-3, … (it prints the chosen session name). - To stop an existing session: close the panes for that session (or exit the provider CLIs running in them).
- To start a second independent session: re-run
askcan’t find a session/pane: make sure you’re in the same repo/directory as the session, then start (or restart) panes withcq codex/cq claude(orcq codex claude).
python -m compileall -q lib bin cq test
python -m pytest test/ -v --tb=short
