PLUT_OS
Multi-agent memory · local · MCP

Every AI on your repo,
orbiting one memory.

Claude Code, Codex, Cursor and Gemini CLI each start every session blind. PLUT_OS is the core they share: what was decided, what was checked, who works on what, and one queue for the questions only you should answer.

v0.5.0-beta Apache-2.0 Runs on 127.0.0.1 only No account · no telemetry
SCROLL
Why it exists

Three AIs, three blank slates.

Every tool keeps its own chat, its own guess about the project and its own "may I?" prompt. The one you are not looking at is the one that is stuck.

Without a shared record

Claude
Codex
Cursor
  • You explain the project again, every session.
  • Two agents take the same task, one undoes the other.
  • A note from last week is handed over as a fact after the code changed.
  • “Done” arrives with no test run behind it.

With PLUT_OS

  • Each session opens with one short brief: the board, the decisions and the facts that still hold.
  • Tasks are claimed on one board in your repo, with race-tested writes.
  • Every fact carries the line it came from; when that line changes, the fact is quarantined.
  • A “done” goes back when the tests did not run or a test was edited in the same fix.
  • Questions for you land in one queue, sealed to what was asked.
How a session goes

From a blank slate to a record the next AI reads.

PLUT_OS does not drive your AIs. They talk to it through a local MCP server and plain files in your repository.

01 · SESSION_START

The AI gets the brief

Where the work stopped, the decisions in force and the facts that still match their source. About 728 tokens on a fresh project.

02 · BOARD

It claims a task

On the shared board, with the check that will show it is finished. Another AI sees the claim and picks something else.

03 · PLUTOS_ASK

It asks you, once

A decision it should not make alone becomes a card in the dashboard, with the options it offers. Pending is never approval.

04 · SESSION_END

It leaves a record

Decisions with their reasons, facts with the exact line they came from, and what was not checked. The next AI, whichever tool it is, starts from here.

Claude Code · session start
# SESSION BRIEF — acme-notes Last session (Cursor): Empty state shipped. Board: 1 in progress, 1 waiting for you. Decided: Merge concurrent edits per field instead of last-writer-wins. Facts: ✓ Sync runs every 30 seconds — src/store.js:2 ✓ Auth tokens live 15 minutes — src/api.js:2 Next: finish test/sync-conflict.test.js
Shared board · docs/handoff/BOARD.md
Offline sync conflict handling
● Claude · IN PROGRESS
done when: test/sync-conflict.test.js passes
Review the token refresh flow
● assigned to Codex · role: reviewer
Empty-state screen for a new account
● Cursor · DONE · check passed
Dashboard · waiting for you
✋ CODEX · expires in 23h 58m
Shorten the refresh token lifetime from 30 days to 7 days?
7 days
14 days
Keep 30 days
The record · next session reads it
session_end headline: "Sync conflicts: per-field merge" decided: d-4805d452c9fa Merge concurrent edits per field — last-writer-wins dropped a note learned: "Sync runs every 30 seconds" evidence: src/store.js · hash recorded not checked: clock skew above 5 minutes ✓ session recorded — Codex opens next and starts here
One board

Work moves. Nobody steps on anybody.

Every AI claims, updates and finishes tasks on the same board in your repository. A task done means a result and the check that shows it.

TO DO 0

IN PROGRESS 0

DONE 0

Memory that notices

When the code changes, the old fact stops being true.

A fact is stored with the exact line it was read from. Change that line and the fact is quarantined: not deleted, not forgotten, just no longer handed over as true.

src/store.js
// Notes are kept in SQLite.
export const SYNC_INTERVAL_MS = 30000;
export function saveNote(db, note) { … }
$ plutos memory list
d-4805d452c9fa  decision  valid
  Merge concurrent edits per field
e9082043308751…  claim   verified
  Sync runs every 30 seconds
b37cf4631f1103…  claim   verified
  Auth tokens live 15 minutes
What is inside

Small, local, and checkable.

01

Decision memory

Every decision has an id; reversing one names the one it replaces. plutos memory find searches decisions, facts and sessions in English and Turkish.

02

Shared board

Atomic, race-tested writes and per-entry revision checks. Assign a task to another AI and it arrives in that AI's next brief.

03

One approval queue

Sealed to the exact content, expiring, run once. plutos approve needs an interactive terminal, so a script cannot answer its own ticket.

04

False-done checks

The claim check sends a “done” back once; plutos check lists what the records name that the repository does not show.

05

Every AI tool

Claude Code, Codex, Cursor, Gemini CLI, Antigravity, Windsurf, Zed and VS Code Copilot connect through MCP, each with the file it reads.

06

No trash left behind

plutos audit lists what older setups left in a project and what fixes each; leftovers are moved, never deleted.

Evidence

Measured, not promised.

Memory search against reading the brief and grepping: three question sets written blind of each other (86, 60 and 60 questions, half English, half Turkish) over 229 records of PLUT_OS's own development. The right record in the top 5:

First set86 questions
Held-out set60 questions
Third, blind set60 questions
PLUT_OS memory find: 78.9% · 72.9% · 68.8%brief + grep: 61.3% · 62.5% · 54.2%
728tokens in a fresh project's opening brief
18/18tasks passed before and after the brief was cut; tokens −5.6%, time −14%
0lost updates with 16 processes × 25 entries writing at once
2 OSevery test suite passes in CI on Windows and Linux on every push
Not shown yet: the same multi-AI project run with and without PLUT_OS, and use by people other than its author. Refusing a question nothing in the record answers is better than grep (61%, 17% and 33% against 6%, 0% and 0%) but still uneven, and a project with only a handful of records finds less.
The dashboard

Your view of every orbit.

The Report page: recorded sessions, commits and the work in flight
Report: what each AI recorded, what reached git, and what is in flight.
An approval card from Codex with three options and Reject
A question waiting for you, with the options the AI offered.
Download

Unzip and run. Nothing to install.

The dashboard opens at http://localhost:3040. From the latest release:

Windows

PLUT_OS.exe

Unzip, double-click PLUT_OS.exe. Download for Windows
Linux

PLUT_OS

Unzip, run ./PLUT_OS. Download for Linux
macOS · any system with Node.js 22+

Lite

Unzip, run ./start-plutos.sh or START_PLUT_OS.bat. Download lite

The AI tools you connect start PLUT_OS's MCP server with Node.js, so they still need Node.js 22+ on the machine. Settings → Updates in the dashboard says when a newer release is out.

Or from source

git clone https://github.com/Zeatrex01/plutos-multi-agent-memory.git
cd plutos-multi-agent-memory
npm ci --omit=dev
node dashboard.mjs --open

The full guide, with every MCP tool, is in the repository.