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

推荐订阅源

量子位
aimingoo的专栏
aimingoo的专栏
C
CXSECURITY Database RSS Feed - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
C
CERT Recently Published Vulnerability Notes
T
Tailwind CSS Blog
腾讯CDC
罗磊的独立博客
Security Latest
Security Latest
K
Kaspersky official blog
A
Arctic Wolf
博客园 - Franky
D
Docker
博客园 - 司徒正美
GbyAI
GbyAI
T
Tenable Blog
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
H
Help Net Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
Lohrmann on Cybersecurity
小众软件
小众软件
V
V2EX
T
Threatpost
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
P
Privacy & Cybersecurity Law Blog
S
Securelist
Google DeepMind News
Google DeepMind News
I
Intezer
The Register - Security
The Register - Security
NISL@THU
NISL@THU
L
LINUX DO - 热门话题
C
Cisco Blogs
AWS News Blog
AWS News Blog
MyScale Blog
MyScale Blog
S
Schneier on Security
Scott Helme
Scott Helme
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
Project Zero
Project Zero
Cyberwarzone
Cyberwarzone
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
I
InfoQ
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
L
LangChain Blog
P
Proofpoint News Feed

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店 GitHub - EdoardoBambini/Agent-Armor-Iaga: AI agents are getting tool access — shell, file system, databases, APIs, secrets. But **nobody is governing what they actually do with it**. Frameworks like LangChain, CrewAI, AutoGen, and Claude Code give agents the power to execute. Agent Armor gives you the power to control, audit, and approve every single action before it happens. HN Vibes — Week 15, Apr 7–13 2026 GitHub - chojs23/ec: Easy terminal-native 3-way git mergetool vim-like workflow GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - JakOb-dotcom/cloud-sandbox-security-analysis: Technical analysis and Proof of Concept (PoC) regarding environment variable exfiltration in containerized cloud sandboxes via side-channel data leaks. Springboards - Flint Alpha Show HN: A simpler coding agent harness GitHub - audiodude/sudomake-friends GitHub - 256thFission/mini-mythos: OSS clone of Anthropic’s Mythos harness to locate C/C++ memory vulnerabilities Show HN: OpenParallax: OS-level privilege separation for AI agent execution Hacker News Sorted - Chrome 应用商店 Show HN: How to Install Docker on Ubuntu 24.04 LTS: Complete 2026 Guide GitHub - himanshudongre/smriti GitHub - sverrirsig/claude-control: macOS desktop dashboard for monitoring and managing multiple Claude Code sessions GitHub - ory/dockertest: Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal work. Chiral - Chrome 应用商店 Show HN: Two Claudes collaborating through shared memory on a $100 mini-PC GitHub - pmichaillat/latex-cv: Minimalist LaTeX template for academic CVs GitHub - oguzbilgic/posse: A web UI for Anthropic Managed Agents. GitHub - sshiraz/depsly: Dependency risk analysis tool for npm packages ABI Add safari/agent-harness — Safari browser automation via safari-mcp by achiya-automation · Pull Request #212 · HKUDS/CLI-Anything GitHub - Halfblood-Prince/trustcheck: Verify PyPI package attestations and improve Python supply-chain security GitHub - oguzbilgic/kern-ai: Agents that do the work and show it. GitHub - bruits/satteri: High-performance Markdown and MDX processing for the JavaScript ecosystem GitHub - tylergibbs1/feedstock: High-performance web crawler and scraper for TypeScript, powered by Bun and Playwright GitHub - Grimm67123/grimmbot: The self-improving sandboxed and open-source AI agent. With persistent memory and scheduling. GitHub - whitevanillaskies/whitebloom: Local whiteboard that blooms. GitHub - hwdsl2/docker-whisper: Docker image for a self-hosted Whisper speech-to-text server with speaker diarization and OpenAI-compatible transcription and translation APIs. Powered by faster-whisper. Supports all Whisper models, NVIDIA GPU (CUDA) acceleration, JSON/SRT/VTT output, SSE streaming, offline mode, and multi-arch (amd64, arm64). GitHub - yisding/reviewwiggum GitHub - MarwanAlsoltany/serrors: Structured errors for Go: sentinel hierarchies, typed data, custom formatting, and slog integration. GitHub - soatok/age-php GitHub - Luthiraa/markitme GitHub - stagas/rtdiff: realtime git diff gui and AI-assisted commits GitHub - tombedor/excalicharts GitHub - wh1le/excalidraw-edit: Open and edit .excalidraw files from the terminal. Offline, auto-saves to disk. MalExt Sentry - Malicious Extension Scanner - Chrome 应用商店 GitHub - syi0808/asciianimesvg: Generate animated ASCII art SVGs from text. CLI, Rust library, WASM, and web editor. GitHub - zaina-ml/ml_forge: A visual-based graph node editor for training computer vision models. GitHub - anakin87/llm-rl-environments-lil-course: 🌱 A little course on Reinforcement Learning Environments for evaluating and training Language Models GitHub - takaakit/superpowers-uml: Superpowers-UML modifies Superpowers to ensure a software development workflow in which AI agents design through UML modeling. AdriByte Studio - Sviluppo Web e Soluzioni Digitali GitHub - chouligi/angel-copilot: Your personalized Angel Investment Advisor Show HN: MoodSense AI (ML and FastAPI and Gradio, Deployed on Hugging Face) Moodsense Ai - a Hugging Face Space by aman179102 GitHub - agenteractai/lodmem: Level Of Detail Context Management for Agents GitHub - ostefani/subnetlens: A fast, concurrent network scanner with a TUI and plain-text CLI, built in Go. It discovers live hosts on your network, scans their open ports, resolves hostnames, and fingerprints operating systems—delivered. Cyber Pulse: Agentic Intel - Apps on Google Play Whisper API: Self-Hostable Speech to Text Transcription The Agent-Web Protocol Stack: A Research Thesis GitHub - msmarkgu/RelayFreeLLM: A restful API designed to route user prompts to various AI model providers. Show HN: Provepy – A Python decorator that proves your code using Lean and LLMs Show HN: Pardonned.com – A searchable database of US Pardons GitHub - patrickdappollonio/dux: Dux is a terminal UI that lets you run multiple AI coding agents side by side, each in its own git worktree, with full companion terminals, macros, commit generation, and a command palette that knows more tricks than you do. kMC Crystal Simulator Show HN: HyperFlow – A self-improving agent framework built on LangGraph GitHub - stef41/vibescore: 🎵 Grade your vibe-coded project. One command, instant letter grade across security, quality, dependencies, and testing. GitHub - stef41/lmscan: 🔍 Detect AI-generated text and fingerprint which LLM wrote it. Open-source GPTZero alternative. Zero dependencies, works offline. imgur.com GitHub - visionscaper/collabmem: Enabling long-term collaboration with Agentic AI - building up episodic and world model memory over time with in-context awareness 在 Steam 上购买 FriedrichAI: Offline AI 立省 10% GitHub - atripati/ark: AI Runtime Kernel — a context operating system for AI agents. Eliminates tool bloat, loads only what’s needed, and gives LLMs their reasoning space back. GitHub - nowork-studio/toprank: Open-source Claude Code skills for SEO, SEM, Google Ads GitHub - tacomanator/sash: Lightweight macOS menu bar app for reliably cycling through windows of the current application. Appents | Social Media Management for Product-First Teams GitHub - pnhoang/youtube-spam-blocker: Automatically detects and hides spam messages in YouTube Live chat. Set rate limits, keyword filters, and block repeat offenders. GitHub - decisionnode/DecisionNode: CLI + Local MCP - A shared structured memory store across Claude Code, Cursor, Windsurf, Antigravity, and every MCP client. Semantically queryable. GitHub - AvaCodeSolutions/django-email-learning: An open source Django app for creating email-based learning platforms with IMAP integration and React frontend components. The $100K Gap in Kubernetes Security Tooling Function Calling Harness: From 6.75% to 100%
GitHub - KerryRitter/parley
kerryritter · 2026-06-24 · via Hacker News: 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.