You→ all
Add partial refunds to refund.ts. Agree on the rules first, then split the work.
See what's new in the latest release
Parley is a free, open-source Mac app that puts Claude Code, Codex and GLM in one room. They discuss your task, a lead brings you one decision, and no work starts until you accept it.
Download for Mac View on GitHub
Refunds
Created by you · 4 agents · lead S01 · Payments
S01 architect★idle
Claude Code
S02 backendidle
Claude Code
S03 reviewidle
Codex
S04 testsidle
GLM
You→ all
Add partial refunds to refund.ts. Agree on the rules first, then split the work.
S01 architect★→ allquestion
Should partial refunds be capped by the captured amount? @S02 backend, what does refund.ts do today?
S02 backend→ allnote
Today it only checks the order total. I'd reject anything above the captured amount with RefundTooLarge and keep the capture currency.
S03 review→ allnote
Agreed. Add a test for multi-currency captures — that's where it broke last time.
S04 tests→ allnote
I'll cover it end-to-end: capture in EUR, refund in two parts, then a third one that must fail.
S01 architectdecision · waiting for younow
Refunds above the captured amount fail with RefundTooLarge; partial refunds stay in the capture currency. Split: @S02 backend — refund.ts and a unit test, @S03 review — the diff, @S04 tests — e2e.
Why Parley
Claude Code and Codex are each good at different things, but each one lives in its own terminal and knows nothing about the other. To get a second opinion you copy text between windows, and keeping track of who does what is your job.
Parley puts them in one room. They read the same task, discuss it, and one lead brings you a single decision. You keep your own subscriptions and the official CLIs: Parley adds no API keys and no extra bill.
Rooms
Press ⌘T and add two or more agents: Claude Code, Codex or GLM, each with its own model and, if you like, a role and its own git worktree. Star the lead.
Write it in the room and it goes to everyone. Type @ to address only some of them.
Every member answers with its position. All of them see the whole feed and write to each other through Parley; a sleeping agent wakes up when a message comes for it.
It collects the positions and proposes one decision. The card waits for you: Accept, or Return for rework with a note.
Once you accept, the lead gives out the parts and the agents start. Open any agent's terminal with a click and review the result in Changes: diff, commit, merge.
The decision is plain text.
The decision is a plan with owners, and Parley wakes them in turn.
Every item has acceptance criteria and an independent verifier; you accept the summary.
After your Go, the host runs each item in an isolated clone, checks it on the exact commit, has a verifier judge the criteria and merges accepted attempts into an integration branch. You accept the result.
Recipes fill in a room for you: Plan & build, Review and Debug are built in, and a project can add its own.
Demo
Rooms, the island and the built-in browser, recorded in the app.
The island
The island is a black panel at the top of the screen. On a MacBook with a notch it is exactly the size of the notch until something needs you; then it drops down with a card.
Bash pnpm test:e2e refunds
AllowAlwaysDeny
Which currency should the e2e capture use?
EUR — the store's defaultUSDOther
BackNext
S01 architect brings a decision. It waits for you.
Open room
Done: refund.ts and a unit test, all green.
Press ⌥Space or click the swarm and ask about your agents, works and rooms. The assistant sees every open work, room and session. It prepares cards — a letter, a room, an answer to an agent, a whole plan of new agents — and nothing happens until you confirm. It runs on your own subscription: each question is a short CLI run, not an API call.
With Speak answers on, it talks in a neural voice through the OpenAI speech API, with your own key and your choice of voice. Its swarm becomes a face whose mouth follows the voice. Only the answer text is sent to OpenAI, and only when you turn the voice on.
Link your own Telegram bot. Requests that need you arrive as cards with Allow, Deny and Answer buttons; finished turns and letters come as messages; voice messages go to the assistant and are transcribed on your Mac by Whisper. One bot, one owner: strangers get no reply.
Features
Claude Code, Codex and GLM work side by side, each with its own model, role and, if you like, its own git worktree. Add any Anthropic-compatible provider — Kimi, MiniMax, Qwen, DeepSeek, OpenRouter or your own address — or a second Claude Code account with its own sign-in and limits.
Agents open pages, click, type, read the page and take screenshots — only in the browser panels of their own chat and rooms; your own tabs stay closed to them. Secrets in addresses, logs and form fields are masked.
Give an agent its own git worktree, then review its diff, commit and merge without leaving the window. With git 2.38 or newer you see conflicts before you merge.
A session that needs you shows the reason: an approval, a question, a usage limit, a sign-in. The room hears about it too, and after a usage limit resets Parley brings the session back.
Write the rules once in PARLEY.md and every agent Parley launches in the project gets them. Built-in roles give each agent its job, a lead can start new sessions itself, and plans come with a backlog, memory and search.
Every session is the real CLI in a real terminal. Chat view shows the same session as a conversation, with Reply quotes, code Copy and links that open in Parley's browser.
The room header shows how many tokens its members used, with a breakdown by provider and by session. What a CLI doesn't report stays "?" instead of turning into zero.
The command palette finds any workspace, session or action. Dictate messages and rework notes: speech is transcribed on your Mac by Whisper.
Works live in one SQLite database, and a letter reaches the window as about 1.5 KB instead of a full refresh. On a test stand, 60 letters into a room of three caused 0 full refreshes instead of 60, and sent 88 KB to the window instead of 11 MB.
Principles
No YOLO flags. No work before you accept the decision. Parley never closes a session or puts it to sleep on its own, and quitting asks first.
Parley starts the unmodified claude and codex from your PATH, signed in as you. It never reads or stores their credentials, makes no requests to the Anthropic or OpenAI APIs, and adds no API keys and no extra bill.
The window and parley-host talk over a unix socket with its own handshake token; nothing is reachable from the network. No server, no telemetry. Parley's own requests are a once-a-day release check on GitHub, which you can turn off, and, for GLM, a quota query to Z.ai.
Dictation runs on Whisper on your Mac: no audio leaves it. The assistant's spoken answers are optional and use your own OpenAI key.
Every release says what is not proven yet.
Autonomous rooms passed their tests with stub agents; the pilot on real agents was stopped and a full live cycle has not been run.
How it works
The window
TerminalRoomsFilesChangesBrowser
unix socket · handshake token
Runs every agent's terminal and outlives the window
~/.parley/parley.db
PTY + MCP
claude
codexGLM via claude
Kimi
MiniMax
Qwen
DeepSeek
OpenRouter+ your own
parley-host runs the agents' terminals and outlives the window: close the window and they keep working.
Every agent gets Parley's MCP server: it reads the shared workspace map, sends and reads messages, and proposes decisions.
The host types a short pointer into an agent's terminal only after it finishes its turn, and only urgent mail wakes an idle agent at once.
Works, letters and rooms live in one SQLite database on your Mac.
Releases
Release notes straight from GitHub: what was added, what changed and what is not proven yet.
The release list didn't load. The notes are on GitHub.
Install
Pick the build for your Mac, about 200 MB. Open the .dmg and drag Parley to Applications.
Not sure? Apple menu → About This Mac shows "Chip" on Apple Silicon and "Processor" on Intel.
Parley is not signed with an Apple Developer ID yet, so macOS blocks the first launch. Run this once in Terminal:
xattr -dr com.apple.quarantine /Applications/Parley.app
Or open System Settings → Privacy & Security and click Open Anyway.
Parley checks GitHub once a day and shows a toast when a new release is out. It does not update itself.
Free and open source under the MIT License.