惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

www.infosecurity-magazine.com
www.infosecurity-magazine.com
Security Archives - TechRepublic
Security Archives - TechRepublic
TaoSecurity Blog
TaoSecurity Blog
Cloudbric
Cloudbric
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
N
News and Events Feed by Topic
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Securelist
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
S
Schneier on Security
L
LangChain Blog
Jina AI
Jina AI
M
MIT News - Artificial intelligence
Recent Announcements
Recent Announcements
T
Tenable Blog
B
Blog RSS Feed
V
Visual Studio Blog
Simon Willison's Weblog
Simon Willison's Weblog
G
Google Developers Blog
T
The Exploit Database - CXSecurity.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
W
WeLiveSecurity
I
InfoQ
The Hacker News
The Hacker News
雷峰网
雷峰网
月光博客
月光博客
P
Privacy & Cybersecurity Law Blog
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
P
Privacy International News Feed
Cyberwarzone
Cyberwarzone
S
SegmentFault 最新的问题
L
Lohrmann on Cybersecurity
人人都是产品经理
人人都是产品经理
V
V2EX
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
Cybersecurity and Infrastructure Security Agency CISA
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Troy Hunt's Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
Microsoft Azure Blog
Microsoft Azure Blog

Show HN

CSP Radar GitHub - awebai/aweb-team-coord-worktrees: An aweb team template for a minimum team with a permanent coordinator and worktrees with local developers. GitHub - fujibee/agmsg GitHub - lucastononro/notify: 100% local, free, offline attention skill for Claude Code: plays a sound and speaks a short status update when a long task finishes, blocks, or needs a decision. GitHub - sebastianwessel/skills: AI Skills tivatdoar / workout-to-work · GitLab GitHub - enumura1/py-sql-cleaner: Find, format, and safely extract embedded SQL from Python files. GitHub - intent-bench/intent-bench: Intent fulfillment benchmark for agentic AI engineering GitHub - steveking-gh/firmion: Firmion is DSL and engine for firmware image generation. GitHub - villagesql/villagesql-skills: Agent skills for VillageSQL - gemini-cli-extension; claude-code-plugin GitHub - 0gsd/enough: a personal language system for planning, writing, and translation. GitHub - Kaelio/ktx: ktx is an executable context layer for data and analytics agents 🐙 Allow Claude Code, Codex, and any AI agent to query data accurately through MCP with skills, memory and a semantic layer GitHub - ThatXliner/xtras: Xliner's Claude Code Skills GitHub - flightdeckhq/flightdeck: Observability and control plane for AI agents. GitHub - search-router/simple-search: Open-source reference app on top of the Search Router API: FastAPI + Jinja metasearch service with pluggable backends, deterministic mocks (no API key needed), RTL UI, Redis cache, and a demo ads cabinet. CSP Radar GitHub - Light-Heart-Labs/DreamServer: Turn your PC, Mac, or Linux box into an AI server. LLM inference, chat UI, voice, agents, workflows, RAG, and image generation. GitHub - Diplomat-ai/diplomat-agent-ts: What can your TypeScript AI agent do to the real world? Scan your code. See which tool calls have zero checks Code Block Selector - Visual Studio Marketplace Prometheus dependency graph — interactive showcase | Riftmap Show HN: I made a vi-like modal keyboard plugin for Figma GitHub - run-llama/liteparse: A fast, helpful, and open-source document parser GitHub - dalemyers/Roar: A macOS CLI tool for notifications GitHub - district-solutions/open-agent-tools-coder: Enables small-to-large self-hosted ai models to use local source code when running tool-calling agentic workloads. We actively data mine 20,900+ (2+ TB) popular github repos using large and small ai models to create reuseable: json, markdown and parquet files for local-first tool-calling models. GitHub - progapandist/stripeek: A local TUI proxy for real-time Stripe API debugging, built for navigating complex payloads fast. GitHub - sir1st/hermes-desktop: All-in-one cross-platform desktop app for Hermes Agent — bundles Python + hermes-agent + hermes-web-ui GitHub - astefanutti/shaderbang: Shebang for Shaders Show HN: Generate Claude Code Workflows using Spec Driven Development approach GitHub - nixys/nxs-universal-chart: The Helm chart you can use to install any of your applications into Kubernetes/OpenShift Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code. GitHub - tamerh/enju: Coordinating Humans, AI Agents, and Compute as Peers on a Shared Workflow Graph Show HN: Continuity-auth – Respect-weighted rate limits for the open web GitHub - luml-ai/luml: AI lifecycle platform where engineers and agents track experiments, train models, and ship to production. GitHub - mrdanielcasper/CoreTex: A UNIX-inspired, biomimetic, flat-file AI harness and knowledge engine. GitHub - clemg/pierre-github: Pierre's diffs.com and trees.software for Github GitHub - lyriks-io/unspaghettit: Behavior-driven AI development without prompt spaghetti. GitHub - sofumel/claude-handoff-revive: Resume Claude Code work after rate/usage/context limits without replaying the prior transcript. Auto-saves at 90%/95% usage. Plugin-installable, 10 languages. GitHub - dotexorg/saferpc: Typed, end-to-end encrypted RPC over any bidirectional channel. GitHub - BeeZeeAgent/beezee: Agent harness orchestration Legato Next.js Boilerplate for Internal Tools · CoreUI GitHub - clark-labs-inc/clark-hash: Clark Hash, 32x smaller searchable sketches for embeddings GitHub - ZeroPointRepo/youtube-mcp: The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free. Typing Mastery — climb toward 100+ WPM, deliberately GitHub - Andebugulin/Awareen GitHub - fayzan123/claude-workflow-composer: Visual desktop app for composing multi-agent coding workflows. Drag agents, attach skills and MCPs, wire handoffs, export to .claude/ GitHub - StackOneHQ/stack-nudge We hardened an LLM agent. Each defense we added made it more exploitable. GitHub - alkait/WhatsKept: Agent-queryable WhatsApp history from an iOS backup — a single Go binary. GitHub - octelium/cordium: Open-source, general-purpose sandbox platform for devs and AI agents that provides identity-based secure access to infrastructure without credentials. GitHub - scosman/videowright: Build animated explainer videos with your coding agent GitHub - dipankar/dscode: The code editor you can take apart. GitHub - zoharbabin/web-researcher-mcp: MCP server (Go) for AI assistants: web search, content extraction, academic/patent/news research. Multi-provider routing, 4-tier scraping, search lenses. Works with Claude, Cursor, and any MCP client. GitHub - scanaislop/aislop: Catch the slop AI coding agents leave in your code: narrative comments, swallowed exceptions, as-any casts, dead code, oversized functions. 50+ rules across 7 languages (TypeScript, JavaScript, Python, Go, Rust, Ruby, PHP). Sub-second, deterministic, no LLM at runtime. MIT-licensed. GitHub - kouhxp/cheap-im: CPU-only voice agent approximating Thinking Machines' Interaction Models demo GitHub - unprovable/OrchidMantis: Orchid Mantis — standalone framework for Zero-Knowledge Proofs of eXploit (ZKPoX). GitHub - TangibleResearch/Halgorithem: A Algo designed to detect AI Hallucitions GitHub - CarpseDeam/Aura-IDE: An AI coding harness that shaped itself - Planner/Worker agents, repo awareness, surgical edits, validation, recovery, and safe diff approvals. GitHub - chojs23/concord: A feature-rich TUI client for Discord GitHub - aerf-spec/aerf: Agent Evidence Receipt Format (AERF) — an open specification for tamper-evident, independently verifiable records of AI agent actions. GitHub - Jwrede/tokentoll: Catch LLM cost changes in code review. Infracost for LLM spend. GitHub - samchon/ttsc: A `typescript-go` toolchain for compiler-powered plugins and type-safe execution + 500x faster lint integrated into compiler GitHub - Higangssh/homebutler: 🏠 Manage your homelab from chat. Single binary, zero dependencies. GitHub - olalie/tapmap: See where your computer connects and what stands out on a live world map. GitHub - Diplomat-ai/diplomat-agent: What can your AI agent do to the real world? Scan your code. See which tool calls have zero checks GitHub - Bajusz15/beacon: Open-source agent for secure remote access, monitoring, and deploys across home-lab and self-hosted machines like Raspberry Pi, N100, or any Linux server. Open web based TTY or tunnel Home Assistant and other local services securely without opening ports. BigTech AI News - Chrome 应用商店 GitHub - vinhnx/VTCode: VT Code is an open-source coding agent with LLM-native code understanding and robust shell safety. Supports multiple LLM providers with automatic failover and efficient context management. GitHub - Lumen-Labs/brainapi2: BrainAPI is a knowledge graph–powered AI memory layer that transforms unstructured data into structured knowledge, enabling intelligent search, recommendations, and contextual memory for AI agents and applications. GitHub - familiar-software/familiar: Let AI watch you work. Familiar lets your AI update its memory, skills, and knowledge by watching your screen. make sidebar/address bar rounded corner toggleable
GitHub - KerryRitter/parley
kerryritter · 2026-06-24 · via Show HN

Parley

Your coding agents are smarter together.

A CLI and an MCP server that convene a panel of the agents you already run — Claude, Codex, Gemini, and more — and fuse their answers into one.

License: MIT  Built with Rust  Dependencies: 0  Platforms

Install · Fuse · CLI ↔ MCP · Playbook · Why


A single agent is a single model's judgment — one set of blind spots. Parley sends the same problem to a panel of agent CLIs, then fuses their replies: where they agree you get high-confidence consensus, where they disagree you get a flag worth your attention, and what none caught the panel surfaces. This is the multi-model deliberation behind Sakana's AB-MCTS and OpenRouter's Fusion — both report combined models beating any single one — but running over the CLIs already on your machine, with their auth and your context. No API keys. No new vendor. Your code never leaves.

Two surfaces, one tool

Parley is first-class both ways — a CLI you drive, and an MCP server your agent drives. Same engine, same capabilities, whichever side you call it from:

Capability CLIyou run it MCPyour agent calls it
Fuse a panel into one answer par fuse "design a rate limiter" fuse tool
Ask another agent, with context par ask -h g -p "…" --context-from cl ask_agent tool
Resume any agent's session here par resume list_sessions · get_last_session · resume_command
Converse — two agents, multi-turn par converse --a cl --b g -p "…" (compose via ask_agent)
Route a prompt to any agent par -p "…" -h <agent>
Convert one config to every agent par convert
# Drive it yourself…
par fuse "design a rate limiter for this service"    # panel + judge → one fused answer

# …or wire it into your agent once, and let Claude convene the panel mid-task:
par mcp connect -h cl                                # registers the MCP server into Claude
#   then just say: "fuse this across codex and gemini"  → Claude calls the `fuse` tool itself

Parley is a small, dependency-free Rust CLI (binary: par). It never calls a model API itself — it drives the agent CLIs you already have, so your auth, models, and permissions stay with them. The MCP server exposes the very same operations as tools, so nothing is locked to one surface.

Why

A single agent is a single point of view. Every coding agent ships one model's training, one model's failure modes, one model's blind spots. On the calls that matter — an architecture decision, a security review, a tricky migration — there's no second opinion, no disagreement to flag risk, no way to combine the model that reasons best with the model that writes the best code.

Research labs already proved the fix. Sakana's AB-MCTS lets frontier models cooperate at inference time and reports problems no single model could solve becoming solvable. OpenRouter's Fusion runs a panel plus a judge and reports a fused pair beating every individual model. The catch with both: API-side, single-vendor, and your code leaves your machine.

Parley does it locally — and fixes the other half of the problem, that the agents are silos. Each CLI has its own headless interface (claude -p, codex exec, gemini --prompt, goose run -t, opencode run, aider --message), its own config format, and its own on-disk session store — none can see each other. So:

  • Agents can't combine. Two models with different strengths have no way to review each other's work, debate, or vote on an answer.
  • Scripts are brittle. Switching agents means rewriting commands, model flags, provider syntax, and env vars.
  • Config is duplicated. The same instructions, commands, and MCP servers get hand-maintained once per agent.
  • Work gets stranded. A conversation lives inside whichever agent you started in; you can't pick it up elsewhere.

Parley is the interoperability layer that removes all four — and turns it into collective intelligence:

  • Fusepar fuse "..." sends your prompt to a panel of agents in parallel, then a judge (Claude by default) synthesizes one answer from their consensus, contradictions, and blind spots. Same thing is an MCP tool, so an agent can convene its own panel mid-task — escalation when a question is worth more than one model.
  • One interface — route any prompt to any agent by changing a single flag (par -p, -h <agent>). The adapter owns the translation.
  • One config — author your .claude/ pack once, par convert generates each agent's native config from it.
  • Portable sessionspar resume lists and resumes any agent's past sessions for this folder, regardless of which agent created them.
  • Agents that collaboratepar ask lets one agent query another (seeded with a shared session's context), and par converse puts two agents in a multi-turn conversation. Expose it over MCP with par mcp so an agent can do this itself — "ask Gemini to review this, with my Claude context."

The result: your automation describes intent, not which agent is wired up today — and your agents stop being islands and start being a team.

New to fusion? The Fusion Playbook is the how-to for ~10× better results: when to fuse, how to pick a diverse panel, and the debate / wider-deeper / second-opinion patterns.


Install

One command:

curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/KerryRitter/parley/main/install.sh | sh

This installs par into ~/.local/bin (plus an agent-router alias). Make sure that directory is on your PATH:

export PATH="$HOME/.local/bin:$PATH"
par --version          # verify

par routes to agent CLIs — it does not install them for you automatically. Install the agents you want with par install, or bring your own.

Other install methods

From source (needs Rust):

git clone https://github.com/KerryRitter/parley.git
cd parley
scripts/setup.sh --install        # validates, then `cargo install --path . --force`

This creates ~/.local/bin/par and ~/.local/bin/agent-router -> par. Ensure both ~/.cargo/bin and ~/.local/bin are on your PATH.

Direct from GitHub:

cargo install --git https://github.com/KerryRitter/parley.git --branch main --force

Install-script options (append after sh -s --):

... | sh -s -- --install-dir /usr/local/bin   # custom location
... | sh -s -- --from-source                  # force a source build
... | sh -s -- --from-source --git-protocol ssh
... | sh -s -- --no-agent-router              # skip the agent-router alias

The script installs a prebuilt release binary for your platform when available, and falls back to a source build otherwise. (Release-binary and Homebrew distribution are planned; see Release Plan.)


What par can do

Command Capability
par -p "..." Route a prompt to any agent, with one shared flag set
par fuse "..." Run a panel of agents in parallel; a judge fuses one answer (also an MCP tool)
par default <agent> Pick the default agent (and options) for this machine
par install <agent> Install a downstream agent CLI
par shims install Create claudey / codexy one-shot shortcuts
par convert Port your .claude/ config to every other agent
par resume Browse & resume past sessions across all agents, scoped to the folder
par ask Ask another agent headless, optionally seeded with a prior session's context
par converse Put two agents in a multi-turn conversation, watching them work it out
par mcp Run an MCP server: agents can fuse a panel, ask each other, and resume sessions

Run a prompt

par                                    # launch the default agent interactively
par -p "summarize this repository"     # one-shot prompt
par -h co -m gpt-5.4 -p "add tests"    # choose an agent + model
git diff | par -p "review this patch"  # pipe context in
par -p "review src" --dry-run          # print the routed command instead of running it

Choosing the agent-h / --harness takes a full name or a short code:

Code Agent Code Agent Code Agent
cl claude g gemini q qwen
co codex go goose a / ai aider
cu cursor oc opencode aq amazon-q
cp copilot k kimi ag antigravity
par -h cl "review this"
par -h co -m gpt-5.4 "fix tests"
par -h k -p "drain the queue"

Bare -h (no value) prints help; -h <name> selects an agent.

Flags

Flag Purpose
-p, --prompt, --print Prompt text (--print is accepted for Claude compatibility).
-h, --harness <name> Target agent. Defaults to claude. Accepts short codes.
--provider <name> Provider namespace, when the agent uses provider-qualified models or env config.
-m, --model <name> Model name.
--agent <name> Agent/persona/profile, where supported.
--output-format <fmt> Output mode (e.g. json), where supported.
--input-format <fmt> Claude-compatible input format.
--permission-mode <mode> Permission/sandbox mode, where supported.
--max-turns <n> Max agent turns, where supported.
--cwd <path> Working directory for the child process.
--yolo / --no-yolo Add / skip the agent's permission-bypass flag. On by default.
--dry-run Print the routed invocation as JSON; run nothing.
--version, -v Print version.
--help Print help.
-- Pass everything after it straight to the agent CLI.

Pass agent-specific flags after --:

par -h cl -p "review this" -- --verbose
par -h aider -p "fix lint" -- --yes --no-auto-commits

How prompt input is resolved:

  • No prompt and no stdin → launch the agent's interactive entrypoint.
  • stdin piped and -p given → stdin is placed before the prompt, blank line between.
  • stdin piped, no -p → stdin becomes the prompt.

Yolo (permission bypass) is on by default

Every run adds the agent's permission-bypass flag (e.g. --dangerously-skip-permissions for Claude) so automation runs hands-off. Opt out per run with --no-yolo, or persistently with PARLEY_YOLO=false. Agents with no known bypass flag (e.g. Amazon Q) simply run without one. Opt out when running untrusted prompts or in sensitive directories.

Set a default agent

So you don't repeat -h every time:

par default codex            # set default agent
par default claude --yolo    # set agent + persist yolo
par default --no-yolo        # keep agent, disable yolo
par default                  # show current defaults
par default --path           # print the config file path
par current                  # alias for showing defaults
par list                     # list supported agent names

The default lives in ~/.config/par/default (or $XDG_CONFIG_HOME/par/default; override with PAR_DEFAULT_FILE).

Environment defaults

export PARLEY_HARNESS=codex
export PARLEY_PROVIDER=openai
export PARLEY_MODEL=gpt-5.4
export PARLEY_YOLO=true
# legacy AGENT_ROUTER_* names are still honored as a fallback

Shims

Generate *y one-shot shortcuts for yolo-capable agents:

par shims install            # writes claudey, codexy, ... to ~/.local/bin
claudey -p "work in this sandbox"
codexy "work in this sandbox"

Override the location with par shims install --dir <dir> or PAR_SHIM_DIR. par shims list prints the generated names and commands.


Fuse — a panel of agents, one answer

par fuse is the collective-intelligence command. It sends your prompt to a panel of agents in parallel, then hands every reply to a judge agent — Claude by default — that synthesizes a single answer: where the panel agreed (high-confidence), where it disagreed and who's right, and what it missed. Same idea as OpenRouter's Fusion and Sakana's AB-MCTS, over the CLIs you already run. It's available both as this command and as an MCP tool so an agent can convene its own panel mid-task.

par fuse -p "design a rate limiter for a multi-tenant API"        # default panel: claude, codex, gemini
par fuse "is this migration safe to run on a live DB?" --panel cl,co,k
par fuse "..." --judge co --judge-model gpt-5.4                    # choose the judge and its model
par fuse "..." --context-from cl                                  # seed every panelist with your latest claude session here
par fuse "..." --panel cl,co,g --dry-run                          # print every routed command (panel + judge), run nothing
Flag Purpose
--panel <codes> Comma-separated panel agents (short codes allowed). Defaults to claude,codex,gemini. Needs ≥2; duplicates are allowed (self-pairing is a valid technique).
--judge <agent> Agent that synthesizes the panel. Defaults to claude.
--judge-model <m> Model for the judge.
--context-from <h[:s]> Prepend a prior session's transcript to every panelist, so the panel deliberates with your context (sources: claude, codex, opencode).
--max-context, --cwd, --no-yolo, --dry-run As in par ask.

Panelists run concurrently, so wall-clock ≈ the slowest agent + the judge, and cost ≈ N+1 agent runs. A panelist whose CLI isn't installed is skipped with a note; fusion needs at least two to succeed. Alias: par panel.

Fuse selectively — it's escalation, not autopilot. Reach for it on the calls where being wrong is expensive (design, security, migrations), and use a diverse panel (different vendors, not three of the same model). The Fusion Playbook covers when to fuse, how to pick the panel, and the debate / wider-deeper patterns that stack on top.


Install agent CLIs

par can install the downstream agents it routes to:

par install list             # show installer coverage
par install claude           # install one agent
par install all              # install every supported agent
par install --dry-run all    # print the exact upstream commands, run nothing

The registry is transparent — --dry-run prints the real upstream install command. Agents without a stable one-liner (e.g. Amazon Q) print the official install page and a verify command instead of guessing.

Agent Installer
claude curl -fsSL https://claude.ai/install.sh | bash
codex npm install -g @openai/codex
cursor curl https://cursor.com/install -fsS | bash
gemini npm install -g @google/gemini-cli
goose curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash
opencode curl -fsSL https://opencode.ai/install | bash
qwen curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh | bash
aider curl -LsSf https://aider.chat/install.sh | sh
amazon-q Manual official installer page; verify with q --version
copilot curl -fsSL https://gh.io/copilot-install | bash
kimi curl -LsSf https://code.kimi.com/install.sh | bash
antigravity curl -fsSL https://antigravity.google/cli/install.sh | bash

par does not manage agent versions; each downstream CLI owns its own upgrade flow.


Convert — share one config across agents

par convert ports a Claude command/skill pack to other agents. Your .claude/ directory (commands, skills, agents/, references), CLAUDE.md, and .mcp.json stay the single source of truth; convert generates each agent's native config from them.

par convert                       # claude -> all targets
par convert --to kimi             # claude -> one target
par convert --from claude --to codex
par convert --dry-run             # show what would be written
par convert --cwd path/to/project

Source: claude. Targets: gemini, codex, antigravity, opencode, cursor, kimi.

What it does:

  • Parses frontmatter — real descriptions, per-command model, argument placeholders; strips the block from bodies.
  • Reads commands, skills, personas (.claude/agents/), references, and .mcp.json.
  • Emits native artifacts per target — e.g. .kimi/skills/<name>/SKILL.md + .kimi/mcp.json, .codex/config.toml + .agents/skills/, .gemini/commands/*.toml + GEMINI.md, .cursor/rules/, .opencode/config.json, plus AGENTS.md. MCP servers in .mcp.json are translated into each agent's format.
  • Resolves cross-references — every /command, **skill** skill, persona path, and reference path is checked against the pack. The run prints a resolution report and exits non-zero if any reference dead-ends, so a typo fails the convert instead of shipping a broken pack.

Generated skills carry a par-convert:generated marker, so re-running replaces only its own output and never a hand-authored file. Commit .claude/; git-ignore the generated output. A typical npm run sync:instructions is just par convert --from claude --to all.


Resume — continue a past session from any agent

par resume browses and resumes sessions from any agent, scoped to the current directory — the same scoping every agent's own --resume uses. It reads the transcripts each agent already writes to disk; there are no extra files to maintain.

par resume                      # list this folder's sessions (any agent), pick one
par resume -h cl                # resume a claude session here (picker if several)
par resume -h co --latest       # resume the newest codex session, no prompt
par resume --list               # print the listing, resume nothing
par resume --list --json        # machine-readable listing
par resume -h cl <id> --print   # print the resume command for a session id
par resume --cwd path/to/proj   # scope to another directory

A selector is either a list index (par resume 2) or a raw session id (par resume -h cl <id>). Add --yolo to append the agent's permission-bypass flag (off by default here, since resume drops into an interactive session).

Two tiers of support:

  • Native listingclaude, codex, opencode. Read straight from disk (~/.claude/projects/<slug>/, ~/.codex/sessions/, ~/.local/share/opencode/storage/session/), matched on exact cwd, with title and recency. These show up in the cross-agent listing.
  • Delegate resumecursor, gemini. Their stores are hash-scoped in a way par doesn't reproduce, but the binaries self-scope to the cwd. Listing is skipped (marked ~); resume runs the agent's own cwd-scoped resume (cursor-agent resume, gemini --resume latest). par resume -h cu / par resume -h g work directly.

Ask — one agent talks to another

par ask runs another agent headless and returns its reply as text. Because par already routes a prompt to any agent, "Claude asks Gemini" is just routing the prompt to Gemini and capturing its output. With --context-from, par first reads a prior session's transcript and prepends it — so the answer is informed by that history. This is the cross-agent context bridge.

par ask -h g -p "critique this approach in 3 bullets"        # ask gemini, print its reply
par ask -h g -p "what did we decide?" --context-from cl      # seed with your latest claude session here
par ask -h cl -p "continue this" --context-from co:<id>      # use a specific source session id
par ask -h g -p "..." --max-context 8000                     # cap injected context (default 12000 chars)
par ask -h g -p "..." --dry-run                              # show the routed command + final prompt, run nothing

--context-from takes harness[:session]; omit the session (or use latest) for the newest in the directory. Context sources: claude, codex, opencode (full transcripts). cursor / gemini can't export transcripts, so they can't be context sources — they can still be asked.

Notes: each call is one-shot (the target keeps no memory between asks); yolo is on by default so the headless agent can't block on a permission prompt; long transcripts are truncated to the most recent turns within the budget.

Converse — two agents, multi-turn

par converse puts two agents in one conversation: A speaks, B replies, A replies, and so on. Each agent is stateless and headless, so par itself holds the running dialogue and feeds it back every turn — par ask's context bridge, accumulated across the loop. Output streams turn by turn so you can watch them work.

par converse --a cl --b g -p "Design a rate limiter; A proposes, B critiques."
par converse --a cl --b g -p "Agree on a name." --turns 8 --until AGREED
par converse --a cl --b g -p "Continue this." --context-from co     # seed turn 1 with a codex session
par converse --a cl --b g -p "..." --a-model <m> --b-model <m> --dry-run
  • --a / --b — the two agents (short codes allowed). --a-model / --b-model set per-agent models.
  • --turns N — total turns, alternating, starting with A (default 6; capped at 50).
  • --until <phrase> — stop early when a reply contains the phrase (agents are told to emit it when done).
  • --context-from harness[:session] — seed the first turn with a prior session's transcript.
  • --max-context, --cwd, --no-yolo, --dry-run as in par ask. Aliases: par debate, par relay.

Each turn spawns a full agent process, so cost and latency scale with --turns. The loop is two-party; --until is the way to end before the turn budget.

MCP — fuse, ask, and resume from inside your agent

par mcp runs a small MCP server over stdio (newline-delimited JSON-RPC 2.0), so any MCP-capable agent can convene a panel and fuse it, ask other agents questions, and resume sessions — all from inside the agent you're already in. This is how you say "fuse this across Codex and Gemini", "ask Gemini to review this with my Claude context", or "pick up my last conversation from Claude" without leaving your agent.

Tools:

  • fuse {prompt, panel?, judge?, judge_model?, cwd?, context_from?: {harness, session?}} — the collective-intelligence tool. Sends prompt to every agent in panel (default claude,codex,gemini) in parallel, then a judge agent (judge, default claude) synthesizes one answer — consensus as high-confidence, contradictions resolved, gaps filled, blind spots flagged — and returns it as text. context_from seeds every panelist with a prior session. Needs ≥2 panelists; ones whose CLI isn't installed are skipped with a note. (Same engine as the par fuse command.)
  • ask_agent {harness, prompt, model?, provider?, cwd?, context_from?: {harness, session?}} — run another agent headless and return its reply, optionally seeded with a session transcript. The agent-to-agent / context-bridge primitive.
  • list_sessions {cwd?, harness?} — resumable sessions for a directory, newest first.
  • get_last_session {cwd?, harness?} — the most recent session plus a ready-to-run resume command.
  • resume_command {harness, id, cwd?, yolo?} — build the native resume command for a session id (text; never spawns an interactive agent).

Why fuse is also a tool, not just a command: like OpenRouter's Fusion, fusion is escalation, not autopilot — exposing it as a tool lets the model decide a question is worth more than one opinion and convene the panel itself, mid-task, without you running anything. (The par fuse command does the same thing from the terminal.) Use a diverse panel (different vendors, not three of the same model). The Fusion Playbook covers when to fuse and how to pick the panel; the debate (par converse) and wider→deeper patterns stack on top.

"fuse this across codex and gemini: is this migration safe on a live DB?" → the agent calls fuse, Parley runs Claude+Codex+Gemini in parallel, and the agent writes one answer grounded in all three.

Register it into an agentpar mcp connect runs whatever that agent needs:

par mcp connect -h cl           # claude   -> runs `claude mcp add -s user par -- <par> mcp`
par mcp connect -h co           # codex    -> runs `codex mcp add par -- <par> mcp`
par mcp connect -h g            # gemini   -> runs `gemini mcp add par <par> mcp`
par mcp connect -h oc           # opencode -> opens its own interactive `opencode mcp add`
par mcp connect -h cu           # cursor   -> merges ~/.cursor/mcp.json (no add command exists)
par mcp connect -h cl --dry-run # show the exact command / file change, do nothing

connect registers the absolute path of the running par, so it works regardless of the caller's PATH. Agents with a native mcp add are invoked directly (some, like opencode, prompt in their own TUI); cursor has no add subcommand, so its config file is merged in place, preserving existing servers.

Then, from any registered agent: "use par to pick up my last claude session here" → the agent calls get_last_session and runs the returned claude --resume <id>.


Supported agents

Agent Aliases Routed command
claude cl claude -p "<prompt>"
codex co, openai codex exec "<prompt>"
cursor cu, cursor-agent cursor-agent -p "<prompt>"
gemini g, google, google-gemini gemini --prompt "<prompt>"
goose go goose run -t "<prompt>"
opencode oc, open-code opencode run "<prompt>"
qwen q qwen -p "<prompt>"
aider a, ai aider --message "<prompt>"
amazon-q aq, amazonq, aws-q, amazon q chat "<prompt>"
copilot cp, github-copilot copilot -p "<prompt>"
kimi k, moonshot, kimi-code kimi -p "<prompt>"
antigravity ag, agy, google-antigravity agy "<prompt>"
Per-agent flag mappings

Claudeclaude -p. Supports --model, --output-format, --input-format, --permission-mode, --max-turns. Yolo → --dangerously-skip-permissions.

Codexcodex exec. --output-format json|stream-json--json. Provider is preserved in PARLEY_PROVIDER (Codex receives the plain model name). Yolo → --dangerously-bypass-approvals-and-sandbox for routed runs; the codexy shim uses codex --yolo.

Cursorcursor-agent -p. Plain --model; --output-format when accepted. Yolo → --force (required for print-mode file writes).

Geminigemini --prompt. Plain --model; --output-format when accepted. Yolo → --yolo.

Goosegoose run -t. --providerGOOSE_PROVIDER, --modelGOOSE_MODEL, --permission-modeGOOSE_MODE, --max-turnsGOOSE_MAX_TURNS, --agent--with-builtin. Yolo sets GOOSE_MODE=auto unless --permission-mode is given.

OpenCodeopencode run. --provider anthropic --model claude-sonnet-4-6--model anthropic/claude-sonnet-4-6. --output-format json|stream-json--format json. --agent--agent. Yolo → --dangerously-skip-permissions.

Qwenqwen -p. Plain --model; --output-format when accepted. Yolo → --yolo.

Aideraider --message. Provider+model joined for --model (e.g. anthropic/claude-sonnet-4-6). Use -- for Aider flags like --yes. Yolo → --yes-always.

Amazon Qq chat. --agent--agent. Model selection owned by Amazon Q config.

Copilot — provisional. copilot -p. Yolo → --yolo. Validate against the installed CLI before relying on it.

Kimikimi -p. Plain --model, --output-format. Yolo → --yolo. Auto-loads project MCP: when ./.kimi/mcp.json exists (relative to --cwd or the process cwd), the adapter adds --mcp-config-file <cwd>/.kimi/mcp.json, so the project config generated by par convert loads automatically.

Antigravity — experimental. Uses the agy command. Docs currently describe the interactive AGY CLI rather than a headless mode; the adapter passes the prompt and leaves version-specific flags to --. Yolo → --dangerously-skip-permissions.


Development

scripts/setup.sh                 # full local validation (fmt, test, clippy, release build, agent check)
scripts/setup.sh --strict-harnesses   # also require at least one agent CLI installed
scripts/setup.sh --install       # validate, then install the binary

Direct commands:

cargo fmt
cargo test
cargo clippy --all-targets -- -D warnings
cargo build --release
cargo run -- -h oc --provider anthropic --model claude-sonnet-4-6 -p "review" --dry-run

Expected --dry-run shape:

{
  "command": "opencode",
  "args": ["run", "--model", "anthropic/claude-sonnet-4-6", "review"],
  "env": {}
}

Architecture

src/
  main.rs              entrypoint, stdin handling, dry-run, dispatch
  cli.rs               command-line parser
  model.rs             provider/model resolution
  process.rs           child process execution (inherit-stdio run + captured run)
  json.rs              zero-dep JSON parser/serializer (used by convert, session, ask, mcp)
  ask.rs               agent-to-agent calls (headless run + transcript context injection)
  converse.rs          multi-turn two-agent conversation loop
  fuse.rs              panel fusion engine — parallel panel + judge (`par fuse` and the mcp `fuse` tool)
  mcp.rs               stdio MCP server (resume tools + ask_agent + fuse) + `mcp connect`
  harness/             per-agent adapters (claude, codex, cursor, gemini, goose,
                       opencode, qwen, aider, amazon_q, copilot, kimi, antigravity)
    mod.rs             Harness trait, Request, HarnessFactory, normalize_harness
    invocation.rs      command/args/env representation
  convert/             .claude/ reader + per-target writers + cross-reference resolver
  session/             cross-agent session discovery, resume, and transcript export
    mod.rs             SessionStore trait, SessionRef, Turn, listing + resume + context
    claude.rs codex.rs opencode.rs   native parsers (cwd-scoped listing + transcripts)
    cursor.rs gemini.rs              delegate adapters (resume via native CLI)
  installer.rs         agent installer registry

Design constraints: no sh -c (adapters build argv directly); no hidden API calls (only starts local CLIs); no login handling (authenticate each agent separately); agent-specific behavior stays in its module; provider/model transforms stay centralized in model.rs; --dry-run output stays stable enough for tests.

Adding an agent

  1. Create src/harness/<name>.rs and implement Harness for a small adapter struct.
  2. Register it in HarnessFactory::default().
  3. Add aliases in normalize_harness() if useful.
  4. Add dry-run tests (command, args, provider/model, env, passthrough).
  5. Document it in this README.
use super::{add_passthrough, plain_model, Harness, Invocation, Request};

pub(crate) fn new() -> Box<dyn Harness> {
    Box::new(ExampleHarness)
}

struct ExampleHarness;

impl Harness for ExampleHarness {
    fn build(&self, request: &Request) -> Result<Invocation, String> {
        let mut args = vec!["run".to_string(), request.prompt.clone()];
        if let Some(model) = plain_model(request) {
            args.extend(["--model".to_string(), model]);
        }
        Ok(Invocation::new("example", add_passthrough(args, request)))
    }
}

Project status

Working infrastructure for local automation.

Done: dependency-free Rust CLI · shared claude -p-style prompt surface · isolated per-agent adapters · agent installers · provider/model resolution · dry-run routing · cross-agent session resume · agent-to-agent calls with context bridging · multi-turn two-agent conversations · panel fusion (par fuse + mcp fuse tool) · stdio MCP server · validating setup script.

Not yet: GitHub Actions release builds · Homebrew formula · end-to-end smoke tests against every vendor CLI · a stable semver contract per agent mapping.

Release plan

  1. scripts/setup.sh.
  2. Smoke-test locally available CLIs with --dry-run.
  3. CI: cargo fmt --check, cargo test, cargo clippy --all-targets -- -D warnings, and release binaries for Linux/macOS/Windows (par-<target>.tar.gz / .zip).
  4. Add archive checksums, publish a GitHub release.
  5. Add a Homebrew tap once artifact names are stable.

Security & privacy

par does not inspect or redact prompt content. Anything passed via stdin or -p is forwarded to the selected agent, which may send it to its configured provider.

Yolo (permission bypass) is on by default — each run adds the agent's bypass flag unless you pass --no-yolo or set PARLEY_YOLO=false. This favors hands-off automation over sandboxing; opt out for untrusted prompts or sensitive directories. Use --dry-run to validate automation that may include secrets before running it.


Source notes

Written against public docs (checked May 19, 2026): Claude, Codex, Cursor, Gemini, OpenCode, Qwen, Aider, Amazon Q, Goose, Antigravity. Installer commands live in src/installer.rs. Agent CLIs change fast — re-check these surfaces before a public release.