All products

Osen

macOS app · CLI · MCP server

Ask several models once. Get one answer they all signed.

Claude, Codex and any OpenAI-compatible model take turns on your problem. Each turn amends one shared solution, accepts it or objects. The session ends when every participant accepts the same version — or tells you plainly that they did not.

Early · macOS on Apple Silicon · MIT licence

What it solves

Ask one model and you get one opinion, delivered with the same confidence whether it is right or not. Ask three and you get three answers plus a job: reading all of them, working out where they actually disagree, and deciding. The disagreement is the useful part, and it is exactly the part you end up doing by hand.

  • You paste the same prompt into three chats and reconcile the answers yourself. One shared answer, amended turn by turn, and the engine says when they agree.
  • A model writes “we all agree” and you take its word for it. Agreement is a recorded event decided by code. A model cannot declare consensus in prose.
  • The window closes and the thread is gone. A session is a journal of events. State is rebuilt from it, so a killed process resumes where it stopped.
  • Agents get disk and tool access to make them useful, and you hope for the best. Participants are sealed: no tools, no MCP servers, no disk. Your files reach them as text, through the engine.

What it looks like

Captures of the real thing. Nothing here is a mock-up.

The Osen discussion screen: participants on the left with their agreement state, the turn feed grouped by round in the middle, and the agreed version on the right.
The same session in the app — three turns over two rounds, both participants agreed, version 2 is the result.

How it works

The engine runs the discussion, not the models

Turn order, who agreed and when the session ends are decided by code. A model cannot declare consensus in prose.

Nothing is lost

A session is a journal of events and its state is rebuilt from that journal, so a killed process is resumed where it stopped.

Participants are sealed

No tools, no MCP servers, no access to your disk. Your files reach them only as text, through the engine.

You stay in the loop

Add a remark mid-discussion, answer the models’ questions, pause after each round, or pick a version yourself.

Ways to run it

The appnpm run desktop
The terminalnpx council --topic "…" --participant claude:haiku --participant codex
Claude Code, Codex, Claude Desktopthe osen MCP server and skill

Install

You need macOS on Apple Silicon and at least one participant: the claude or codex CLI signed in, or an OpenAI-compatible endpoint. Node is not needed for the app.

  1. Download osen-<version>-arm64.dmg from the latest release.
  2. Open the image and drag Osen to Applications.
  3. First launch: macOS refuses an unsigned app. Press Done, then System Settings → Privacy & Security → Open Anyway.
  4. If macOS says the app is damaged: xattr -dr com.apple.quarantine /Applications/Osen.app
Or from source
$ git clone https://github.com/seasons-ai/Osen.git
$ cd Osen
$ npm install
$ npm run desktop

What’s inside

Participants

claude and codex CLIs, any OpenAI-compatible HTTP endpoint, saved lineups, templates with roles and rules.

Materials

Files, folders, PDFs and links in every turn. Large folders are read on request and .gitignore applies.

Owner control

Messages mid-session, questions back to you, waiting, your own choice of version, macOS notifications.

Cost

A token ceiling, usage by period and provider, a separate tariff estimate.

Sessions

Resume with a replaced participant, Markdown export, English and Русский.

Experiment

Independent drafts: each model drafts alone before the discussion starts.

Limits

Straight from the repository, because this is the part worth reading before you install anything.

  • macOS on Apple Silicon only. No web version, no auto-update.
  • The image is not signed by Apple: the first launch needs “Open Anyway”.
  • The MCP server and the council command from the app are checked on scripted participants only; a real discussion through each agent client has not been run yet.
  • A token ceiling, not a money ceiling: providers do not always report usage, so a total in dollars would be a guess.
  • No memory between sessions.