Muse Dashboard and Permanent Memory Optimizer (PMO)Muse Dashboard + PMO

Small context. Total recall.

An AI agent pays for its memory the expensive way: every step, it re-reads everything it has ever seen. PMO gives Muse Code a permanent memory of the project instead. Same work, same quality, less than half the tokens. The story in ten pages with a voiceover, about three minutes:

0:00 / 2:56
HOW TO TEST IT

Try it in the dashboard: four things worth doing.

Open a chat and give it one of these. Each one wakes a different skill. You will see which one fired in the reply.

1 · CHAT

Just chat, or run a project

Talk normally, ask questions, or point it at a project folder. This is the everyday chat skill. No trigger word needed.

Try: "Here is my project folder. What does it do, and what should I work on next?"
2 · CODING

Just ask it to code

Give it a coding task in a folder with code. It reads the files, makes the change, and runs the checks.

Try: "Add a new feature to this repo and run the tests until they pass."
3 · REASONING

Say research and debug

Include the words research and debug and watch it use the reasoning skill: it researches with sources instead of guessing, and debugs by measuring.

Try: "Research the best way to fix this bug, then debug why it happens. Show your sources."
4 · 3D MODELING

Attach a picture, get a model

Attach a reference image like the one below and ask for a game-ready model. The picture gives the AI a head start on a high-quality build. Front, side and back views work best.

Try: "Build this as a game-ready 3D model, textured and rigged." + attach the image Example reference image: an armoured robot in olive and copper, front, side and back views with material swatches

Why it matters globally

Long context was the workaround. Memory is the fix.

Today every step re-reads the whole history. PMO keeps memory outside the chat instead: a ~3k card, roll over at 50k. The bigger window stops mattering.

~328 GB → ~3k
Same recall, a fraction of the cache

Meta’s Llama 4 now advertises a 1M token window (Maverick) and 10M (Scout). That window is a model limit, not GPU memory: on a 70B class model, filling 1M tokens needs about 328 GB of KV cache at full precision, more than one modern GPU holds. PMO sends a ~3k card instead: −73% input tokens at the same quality, so one GPU serves about twice the users.

−51% → ~$7B/yr
Half the bill

PMO halved pooled cost. At that rate, one frontier lab’s projected ~$14B inference bill for 2026 falls by about $7B.

415 → 945 TWh
Half the re-reads, half the watts

Data-centre demand nearly doubles by 2030. Halve the re-reads and every answer costs half the power: AI a school or clinic can afford, not just a $20/mo luxury.

Not a bigger window. No need for one.

Sources and estimates
  • PMO −51% and −73%: measured paired runs. Full data in Test Data, at the bottom of this page.
  • Meta windows: Meta Llama docs: Llama 4 Maverick 1M tokens, Scout 10M tokens. A window is the most the model accepts, not memory on one GPU.
  • ~328 GB cache: standard KV-cache maths, 2 × layers × KV heads × head size × bytes. Llama 3 70B (80 layers, 8 KV heads, 128 head size, BF16) is 320 KiB per token: about 40 GiB at 128k, about 328 GB at 1M. Full precision and full cache; compression, chunked attention (Llama 4 iRoPE) and FP8 cut the effective figure, and serving spreads it across GPUs.
  • One GPU holds 80 to 192 GB: NVIDIA: H100 80 GB, H200 141 GB, B200 about 192 GB, before model weights.
  • ~$14B → ~$7B: reported 2026 inference projection for one lab, with PMO’s −51% applied. An illustration of scale, not a promise.
  • 415 → 945 TWh: IEA, Energy and AI (2025), 2024 to 2030.

02 / The engineering, in one picture

How it works, and why it works so well.

Three design choices do most of the work: capture from what Muse already wrote (no extra model calls), memory outside the project (nothing in your folder changes), and a fresh session instead of a compacted one (the rules survive; the landfill does not). Click any box for the engineering detail.

DASHBOARD · server.js PMO HELPER · pmo/service.py MUSE CODE · muse serve 1 · MESSAGEPOST /messagestext + attachments+ host facts (Blender, web…) 4 · HANDOVERFresh session, same chattitle + folder keptold session read-onlyPMO chip: tokens saved 6 · ON SCREENEvery token, every dollarlive meters · handover dividersLoad earlier across sessions 2 · BEFORESnapshot + recallGit's file list, ignored files unreadnotes the session lacks,or a seed when ctx ≥ rollover MEMORY STOREdata/pmo/projects/<folder>records · MiniLM vectors · rerankercode index · atomic savesself-repairing · never in your folder 5 · AFTERCapture from Muse's own logrules · files + definitionscommands + results · open issues SKILL LIBRARYshortlist · search READING PLUGINdocument maps 3 · REPLYturn/startsame session + notes ≤ 1k,or session/start seededwith the project card HOSTS BY KINDthree muse serve processeslean + checkers (code)lean (prose)default preset (web search) SESSION LOGMuse's own recordread by offsetzero extra model calls query write tail seed
Figure 1: the PMO loop around a Muse session. Green dashed flows run on every message; gold flows run at a handover and for the plugins. The helper speaks a line-delimited JSON protocol (health, open, before, abort, after, stats, forget, close, skills, needs) and restarts with backoff if it ever dies; the dashboard carries on as plain Muse meanwhile.

Click a box for detail. Numbers are the order of one message.

REMEMBERS THE CONVERSATION

Standing rules verbatim, facts from chapters read sessions earlier, decisions taken: searchable across handovers, surfaced only when a message needs them.

KNOWS THE CODE

A live file map with functions and tests, the commands that ran, the failures and the fixes; open issues close when a fix passes. Pointers to the functions a request will touch, ranked by a reranker over change frequency and the call graph.

KNOWS THE DOCUMENTS

The reading plugin maps long manuscripts from their bytes (headings with line numbers, encoding, where the writing stopped) but only at a handover that touches long prose.

03 / The control room

The dashboard, in thirty seconds.

A local, ChatGPT-style front end for Muse Code: it drives muse serve through the official SDK and keeps everything on your machine. It was built to make PMO's memory visible and measurable, and it grew into the control room around it.

Live cost + token meters
Fresh vs cached input and output per turn, per chat, per project, priced from Meta's own catalogue in API-key mode.
Memory handovers, on screen
Handover dividers in the chat, a PMO chip in the header, and Load earlier walks back across sessions.
Files + preview panel
Every file a reply names becomes a chip: pages run on their own origin, 3D models (GLB, FBX, OBJ, STL, PLY) open in a viewer, PDFs, Word and Excel render in the page.
Snapshots + undo
One click saves the folder before risky work; Undo restores it byte-exact without touching your branches. Deletions go to the Recycle Bin.
Queue, nudge, push
Talk while a reply runs: queue a message, nudge it live, or push it through; attachments survive chat switches.
Connect, approve, schedule
A Connect dialog for sign-in or an OS-encrypted API key; approvals as cards; scheduled jobs wake chats on their own; Blender and the background remover are found for the skills.
Muse Dashboard: chat list, a 3-D model viewer panel, and the Activity header

04 / For the engineers

Built to be trusted, not just demoed.

Plain Node and plain Python, no framework, no build step, nothing loaded from a CDN. Every claim on this page has a test or a logged run behind it. Open a card for the detail.

IMAGES · IMPORTANT · RESEARCH NEEDED

Images are the hole in the token budget.

PMO counts text carefully. Images are not counted yet, and they should be: a picture is not free context. On public vision models an image costs roughly 1,200 to 2,600 tokens at the sizes this page itself uses, it is paid again on every later turn while it stays in the chat, and at a PMO handover it forces a bad choice: drop the picture and lose it, or attach it again and pay again. That is the next place PMO can save, and the next skill to test.

~1,200 to 2,600
Tokens per image, once

Measured on this page's own stills (1,168×784 to 1,712×1,152) with the public 28×28 patch formula. One image can equal PMO's whole ~3k memory card.

× every turn
Then paid again, and again

A 1,560-token screenshot kept for 20 more turns is about 31k token-reads, plus the GPU cache held for every one of those tokens while the chat lives.

Not built yet
An image skill is a hypothesis

Resize or crop for the task, describe once into PMO memory, and re-attach full detail only when a task truly needs it. Promising, unproven, and not claimed as a saving until it is measured.

Research needed before we build it: first measure how Muse itself counts and re-sends images in a real PMO chat, because the figures above come from public vision-model pricing, not from Muse. Then run paired tests: right-sizing and cropping against quality, a written description in memory against keeping the pixels, and the 3D reference case where detail is the whole point. The skill ships only if quality holds at a stated check, the way every other number on this page had to.

METHOD

How the numbers were made

Pairing

Every result pairs two arms of the same prompt suite, run in parallel on real Muse Code (muse-spark-1.3) with PMO on or off as the only difference. Prompts are fixed files; the same project folder state starts both arms. Billing is on a Meta API key at Meta's catalogue prices ($1.25 fresh input, $0.15 cached, $4.25 output per million tokens), read from Muse's own token usage events per step.

Quality

Never the model's own report. Coding suites carry hidden tests validated on reference implementations (30 prompts: 102 checks; six languages: every check per language). The manuscript suite checks each edit for its exact result and diffs the rest of the 343 KB file byte for byte, plus encoding and collateral checks. The novel suite has 48 writing checks and 13 edit checks. The children's book has its own hidden rubric.

Settings behind the tiers

SettingHigh-qualityLean (default)Off
Model presetMuse default (full tools)miniswe (small prompt, shell tools)None
Guidance policyFull: work rules + project stepsLite: work rules onlyNo policy sent
Reasoning effortextra-highhigh · minimalnone
Checker agentsOn, all four, every folderAuto: code folders onlyOff everywhere
PMO memoryOn: 50k rollover under miniswe, 100k under defaultFull context kept
Reading mapsOn: a document map only at handovers touching long proseNo maps

What the tiers cost

The same novel at high-quality settings cost 2.3 to 3.4 times as much and took 2.2 to 3.8 times as long as the lean setup, and PMO saved on both (−20% in high-quality mode including about $2.20 of checkers per run, −46% lean with the reading plugin). In the bench the checkers were forced on or off per arm so the folder never decided; tool-result clearing stayed off everywhere except the lab coding run.

Variance, stated

Control segments before any handover (where both arms are identical) differed by +3%, −13% and −55% between runs, as large as the effect itself; hence pooled figures over six runs, and the per-step effect after a handover (−26% to −66%, pooled −55%) as the consistent measure. Across the six lean runs, 6 of 6 were cheaper with memory.

The 30-prompt cost ladder

One run each on the lab's 30-prompt coding project (three sub-projects, 102 hidden checks): plain Muse on the default preset $12.08 in 77 min; PMO only (100k rollover) $7.24; miniswe only $2.74; miniswe + PMO at 50k $1.40 in 22 min, same test results. The miniswe arms there also ran effort minimal, no policy and clearing on, so that preset label bundles more than the preset.

TEST DATA

Test Data: every number behind the headline

−51% pooled cost across 6 lean runs (169 prompts, $12.22 vs $5.97) · all 7 runs pooled −42% · every check passing in both arms. Below: the complete table, the chart, the end-to-end ladder, the recall check, the honest limits, and how each figure was measured.

Cost per run, PMO off vs on (complete)

Table 1a is the lean default (the headline result). Table 1b is the extra high-quality run with every quality knob on. Every check passed in both arms.

Task · promptsSetupPMO offPMO onSaved
Manuscript editing, 343 KB book · 23Lean · high$2.01$0.59−71%
Children’s book, 10 chapters + art · 31Lean · minimal$1.85$0.74−60%
Coding, 3 sub-projects, hidden tests · 30Lab · minimal, clearing on$3.37$1.40−58%
Write + edit a novel, with the reading plugin · 26Lean · high + reading$2.31$1.25−46%
Manuscript editing, rerun · 23Lean · high$0.90$0.57−37%
Coding in six languages · 36Lean · high$1.78$1.42−20%
Lean, pooled: 6 runs, 169 promptsevery check passing in both arms$12.22$5.97−51%
Write + edit a novel, high-quality mode · 26Full guidance · xhigh + checkers$5.36$4.30−20% (chat alone −35%)
All seven runs pooled, 195 promptsmixed$17.58$10.27−42%

All runs as a chart

Manuscript$2.01 → $0.59
−71%
Children's book$1.85 → $0.74
−60%
Coding ×3$3.37 → $1.40
−58%
Novel + reading$2.31 → $1.25
−46%
Manuscript rerun$0.90 → $0.57
−37%
Six languages$1.78 → $1.42
−20%
Novel, high-quality$5.36 → $4.30
−20%
without PMOwith PMO

The whole ladder: what one project costs, end to end

The same 30-prompt coding project with hidden tests, run four ways. Muse's lean miniswe preset and PMO each save on their own; together they take the project from twelve dollars to one and a half, with the same test results.

$12.08
Plain Muse
default preset · 77 min
$7.24
PMO only
100k rollover · −40%
$2.74
Lean preset only
miniswe · −77%
$1.40
Lean + PMO
50k rollover · −88% · 22 min

Nothing forgotten

"From memory, without opening any file: what is the restaurant of Mark's second date, what does Charles study, what is Ben's faith and degree, and what is the band at the concert called?"

  • ✓ Mark's second-date restaurant: Fuji's
  • ✓ Charles studies: electrical engineering
  • ✓ Ben: Islam, B.S. in Aerospace Engineering
  • ✓ Concert band: Philosophy Resurrected
4 / 4 correct0 files opened1 model step · 3 safter 2 handovers
Honest numbers. Model variance is real: control segments before any handover differed by up to 55% on identical prompts, so single-run figures swing; pool runs before deciding. One writing-heavy run was 14% slower with PMO (re-orientation steps). The high-quality setup runs Muse's checker agents beside the chat (see the high-quality row in the table above). Below the rollover PMO does nothing and costs nothing ($0.37 vs $0.37 on a short edit suite): the longer the chat, the more it saves, up to −51% pooled after the first handover. Over the six lean runs, 6 of 6 were cheaper with memory.

Hackathon criteria: our evidence

CriterionWeightOur evidence
Impact30%−51% pooled cost and −73% input tokens on long agent work with no loss of quality; a 30-prompt project from $12.08 to $1.40. Small models finish jobs that used to need big context windows.
Meta AI tooling25%Built through Muse Code and its official SDK, measured on muse-spark-1.3, billed at Meta catalogue prices on a Meta API key.
Demo25%Live dashboard: watch context roll over, a handover land and the cost meter drop; every figure here is reproducible from the repository's bench harness and evidence pages.
Technical depth20%Crash-safe memory store, semantic recall with a reranker, code index, document maps from raw bytes, manifest-checked skill installs, three Muse hosts by kind; 1,197 checks, 0 failed.

Limits: each figure is one run per side; variance between runs is real, so the pooled figures are the ones to trust. In the full setup checkers cost about $2.20 per run whether memory is on or off, and extra-high effort re-reads more per step, so the same tokens saved are a smaller share of a bigger bill.

How we measured

Real Muse Code (muse-spark-1.3) driven by Muse Dashboard; PMO rollover 50k. Lean arms: miniswe preset, Lite policy, checkers off, clearing off, effort high (children's book: minimal). Lab coding arm: miniswe, no policy, clearing on, effort minimal. Each pair ran identical prompts in parallel with PMO on or off as the only difference, billed on a Meta API key at Meta catalogue prices ($1.25 fresh, $0.15 cached, $4.25 output per million tokens).

Quality was scored by independent scripts (hidden tests, per-edit pass, byte-exact diff of untouched lines, encoding and collateral checks), not by model self-report. Skills ON vs OFF: same prompts, inputs, Blender and cameras; likeness by silhouette IoU against the reference views; the OFF-max build audited for zero skill reads. Dashboard suite: npm test 1,114 checks passed on the public copy on 3 Nov 2026, plus 83 in the two real-Python suites where PMO's Python is installed; PMO lab suite 97 OK; reading-plugin selftest 13/13.

1 · MESSAGE

What leaves the page

The page posts the text, the attached files and the choice for a busy reply (queue, nudge or push). The server resolves the chat's folder, extracts text sidecars for PDF, Word and Excel attachments (a child process, awaited at most 30 s), and adds host facts: is Blender installed, is the AI background remover present, does this Muse host have web search, can it generate images. Those facts travel with every before so a skill whose need is missing can say so on its own line.

The user's bubble appears at once with "Preparing…" in the header, because a send can take a moment (PMO's snapshot, a session start, a document's text). A send that fails comes back into the composer with its attachments; nothing is lost on the way.

2 · BEFORE

Snapshot and recall

Snapshot

The helper lists the project's files through Git (ls-files --cached --others --exclude-standard) when the folder is a repository, else a shallow walk that skips dependencies, build output and dot folders. It reads at most 2,000 text files / 64 MB and always re-reads the files of the snapshot it will be compared with, so a limit never makes a file look new or deleted. Ignored files are never read, so a folder with 11,000 result files that once held a message back by 108 s now takes 0.3 s.

Below the rollover

The session is kept. PMO embeds the request, searches its records (MiniLM vectors, then a cross-encoder reranker), drops notes the session already holds, and appends at most notesTokens (default 1,000) to the message. On a short chat that is nothing, and the cost is nothing: $0.37 vs $0.37.

At the rollover

When Muse's own session/contextUsage reaches the rollover (50k tokens on miniswe, 100k on the default preset, or the user's number), before answers with a seed: the project card (standing rules and requests verbatim, a file map read from disk with functions and tests, the last changes, recent commands with results, open issues), pointers to the functions the request will likely touch, and ranked notes. The dashboard starts a fresh Muse session in the same folder with that seed as its first message.

Never guessed

A failed or timed-out before is aborted and the memory state restored; an after with no prior before snapshots first; a message queued, nudged or pushed while a reply runs goes as typed and is captured afterwards; a chat with a scheduled job never rolls over.

3 · REPLY

Three Muse hosts by kind

Muse accepts its four background checker agents (skill, to-do, goal, verify) all or nothing per muse serve process, and its tool surface per preset. The dashboard therefore keeps one host per kind and places each chat by its folder:

An empty folder follows its first message (does it read like a coding request?) until files appear. When a folder's answer changes, an idle chat is moved: session/leave, wait for leaveCompleted, resume on the other host; the page shows a notice. Every host gets the policy as Muse's developer prompt, the token settings (tool output kept, compaction sized for 256k, six concurrent agents), the dashboard's tool paths (BLENDER, PMO_TOOLS) and exactly the API key chosen in Settings, or none. Sessions are unloaded least-recently-used above a limit; chats with scheduled jobs stay loaded because jobs fire only in a loaded session.

4 · HANDOVER

A fresh session, the same chat

A handover is a new Muse session in the same folder plus a new chat record that carries the old one's title, folder, model, effort and approvals, and the PMO account: continuesFrom, the number of handovers, the tokens dropped and the overhead paid. The old record gets continuedIn: it leaves the sidebar (visible under Show hidden chats), opens read-only, and the continuation offers "Show the session before the memory handover" above a divider. The page follows the new chat automatically; a nudge or queued message in flight is re-keyed with it.

The savings maths

The PMO chip shows the context tokens one ever-growing session would have re-sent at each later step, minus the seed and notes PMO added, capped at 75% of Muse's context limit where Muse would have compacted anyway. It is an estimate by construction, labelled as such, and it never counts PMO's own notes as growth.

Failure paths

A handover whose send fails is reused on retry (no empty hop, no double count). A reply refused for lack of a sign-in or a refused key flips the Connect dialog. A fresh session's context starts at zero until Muse reports it.

MEMORY STORE

Where the memory lives

data/pmo/projects/<folder>-<hash>/, never inside the user's folder. It holds the records (rules, requests, files and their definitions, commands with results, issues, environment facts, tasks), their MiniLM vectors (all-MiniLM-L6-v2, 384-d) with a cross-encoder reranker (ms-marco-MiniLM-L-6-v2) for recall, a code index for the function pointers (ranked by change frequency, call-graph distance and structural role), per-chat state with the offset into Muse's session log, and the plugins' own logs. Turn numbers continue per project across chats; a chat with a live session that PMO joins is continued, never replaced.

5 · AFTER

Capture from Muse's own log

When turn/completed arrives, the dashboard tells the helper the turn, Muse's context usage and the text it sent. The helper reads Muse's session log from the offset it stopped at last time (items, tool calls, outputs, the model's own messages) and diffs the folder against the snapshot taken in before. From that it records: the user's requests and rules verbatim; each changed file with the definitions it now holds; commands with their results (a failing test run is an open issue even without error lines; a throwaway script is not a project fact); open issues, closed when a later fix passes; environment facts; task lists. Written with dedupe at write time so the store does not grow with repetition.

No model is called. The capture costs the same whether the chat is on its first turn or its hundredth, and it sees exactly what the model saw.

SESSION LOG

Why reading Muse's log matters

Muse keeps a durable per-session log of every item: user messages, agent messages, tool calls with arguments and visible output, approvals, subagent and workflow items. The dashboard opens chats from it (paged backward, no session load), and PMO captures from it by offset. That is why the dashboard can show a chat's history in 30 ms without waking Muse, why "Load earlier" can walk across a handover into the previous session, and why PMO's capture adds zero model calls. The log is Muse's; the dashboard never writes or deletes it.

6 · ON SCREEN

Every token, every dollar, every handover

Under each reply: model steps, fresh input, cached input, output, time. In the header: a live meter while a reply runs, ctx % for context fill, the PMO chip (handovers and tokens not re-sent) and, on an API key, a cost chip with a per-model tooltip. In the sidebar: new input · output per chat, waiting messages, the folder's dollar estimate, PMO's handover count. Settings → System shows the helper's state, Python and model, the rollover and notes budgets, and the installed skills with what they need. All of it streams over one server-sent-events connection so several open pages stay in step.

SKILL LIBRARY

How a skill reaches the model

At helper start, pmo_skills.build turns skills/<area>/<name>/SKILL.md into a library of cards (what it does, triggers, needs, the file to read) with vectors, only when the skills folder changed, and starts a small search server (port 8766 or any free one). On a new session's first message the plugin embeds and reranks the request against the cards and adds a short legend plus the shortlist to the message: one line per skill with its id, what it does, the file to read and what it needs. A coding or fix-it request with no skill fit gets <skills items="0"> and Muse works from its own resources. A continued session gets only skills not shown yet; usage is logged per turn.

READING PLUGIN

Document maps at a handover

A plugin is a Python callable PMO loads per project from pmo.plugins. The reading plugin fires only on a fresh session continuing a project where prose documents used in the last three turns hold 20 KB or more. It reads the files' bytes and adds to the seed: size, line count, encoding and BOM, line endings, headings with line numbers, the command that last changed the file, and the last 250 words written. About 1k tokens, so the model opens only the lines it needs instead of re-reading chapters to find its place. On the 26-prompt novel it fired 3 times and cut cost by 46% and time by 27% against no PMO. Decisions are logged to reading.jsonl; python -m pmo_reading.selftest checks 13 cases with no model calls.

IMAGES · RESEARCH BRIEF

Can an image skill handle images better?

Status: not built, not measured on Muse yet. This is the research we need to run before adding an image skill to PMO. Nothing below is claimed as a PMO saving. The token formulas are from public vision-model documentation, used as a proxy until Muse's own image accounting is measured in a real chat.

Why images matter to PMO

PMO's whole claim is a small context with total recall: a ~3k card, rollover at 50k. Images break that accounting today in three ways.

What an image skill would do, if the research supports it

Fitted to machinery PMO already has: a SKILL.md card in the library, shown only when a message carries or asks about an image; host facts in every before; capture in after with no extra model call where possible; and a text record in the project memory, the same way the reading plugin turns a long document into a ~1k map at a handover.

The research to run, in order

StepQuestionHow we would know
R1 · Measure MuseHow does Muse itself count, cache and re-send an image across turns and across a PMO handover?Instrumented real chats: same image, prompt counts and context usage logged per turn, with PMO on and off. No proxy formulas in the result.
R2 · Right-sizingHow far can we resize or crop before answers get worse?Paired tasks (screenshots, charts, documents, photos) at full, provider-size and cropped sizes, scored by independent checks including small-text reading. Report the size where quality first drops, per task type.
R3 · Describe and dropCan a stored description replace the pixels on later turns?Ask follow-up questions turns later, with the image kept, dropped, or replaced by its description. Score recall exactly as the 4/4 recall check on this page was scored, and count tokens each way.
R4 · The hard case: 3DDoes a right-sized or described reference still build the same robot?The existing 3D skill A/B: same brief, same Blender, silhouette likeness and the 9 checks, with the reference full-size, resized and described-only. A described-only failure is a valid result and would fence the skill off from reference work.
R5 · DecideIs a skill the right shape at all?Ship only if tokens fall materially with no check lost on R2 to R4. If the win is only in resizing, that belongs in the dashboard's send path, not a skill; if descriptions lose detail that matters, the skill should route and resize, never replace.

Risks and honest limits

Sources for the proxy figures: Anthropic, Vision, for the 28×28 patch formula and downscaling; OpenAI, Images and vision for base-plus-tile counting and low-detail mode. Local measurements: this page's stills at 1,168×784 (1,176 patch-tokens) and 1,712×1,152 (2,604 patch-tokens), computed from the files in attachments/.

EVIDENCE

PMO ON vs OFF, two robots and a hand-built best effort

Same reference picture, same Blender 5.2, same cameras and lights, same render settings. ON ran the skill's one command; OFF was a hand-written Blender script with no templates; OFF-max was the best hand build without the skill (73 parts, bevels, subdivision, a 20-bone rigid rig), audited afterwards for zero reads of the skill folder.

OFF: primitive armoured suit
Olive armour, OFF: 5,153 faces, 0 maps, 0 bones, 13.8 s
ON: textured rigged olive armoured robot
Olive armour, ON: 40,424 faces, 5 maps, 49 bones, 5 clips, IoU 0.921, 6.6 min
OFF-max: improved hand build
OFF-max: 21,138 faces, 0 maps, 20 rigid bones, 0 clips, 18.8 s
Reference views against the model's views
ON compare grid: the reference's front, side and back against the model's
MetricON (mean of two robots)OFFOFF-max
Likeness (mean IoU)0.918 (0.915 / 0.921)not scorablenot scorable
Faces40,4404,821 (11.9%)21,138 (52.3%)
Texture maps5.500
Bones / skinned / clips48.5 / yes / 50 / no / 020 / no / 0
Wall time417 s, one command, 0 fixes13.6 s, 1 fix avg18.8 s, 1 fix
Moves (Jab + Wave)2/2, 13/13 checks, 12.2 s0/2not run
Research (3 prompts)12/12 format checks0% compliantnot run
Routing (9 queries)9/9, ~185 tokensno routingnot run

Full pages with every number, the bug log and the artifact list: PMO_ON_vs_OFF.html and Data_Result_Log.html.

SPECIFICATIONS

Engineering specifications

Stack

Helper protocol

Line-delimited JSON over stdio: health, open, before, abort, after, stats, forget, close, skills, needs. 120 s timeouts; restart with 5/20/60 s backoff; a helper that cannot load (missing packages) reports missing once, with no retries, and the dashboard scans every installed Python for the packages before offering setup. A stray stdout line cannot crash the server. Health reports the skill library's state (built now or kept, cards, port) and any error, which leaves memory working.

Store

Per project under data/pmo/projects/: records, MiniLM vectors, code index, per-chat state by log offset, plugin logs. Atomic writes; lost or foreign vectors re-embedded on load; turn numbers continue across chats; dedupe at write time. The dashboard's own index (data/index.json) is written to disk before its rename, saves coalesce, an unreadable index is kept aside rather than overwritten.

Muse hosts

Three muse serve hosts by kind (lean + checkers, lean, default preset with web search), chosen per folder; idle chats move by leave/resume; least-recently-used unload above a limit; chats with scheduled jobs stay loaded. Hosts get the policy as developer prompt, -c settings for compaction and agents, the tool paths and exactly the chosen API key. A reaper with a detached watchdog kills every host tree on exit, crash or closed window.

Files

Previews by keyed ticket (HMAC of the run token and chat id); pages on http://<chat-id>.localhost:<port> with their own origin and a frame-ancestors policy; the 3D view's frame with its own CSP (import map by hash, connect/img to self, blob and data only). Range requests, inline or attachment, symlink escapes refused. Word and Excel previews and the document tool run in a child process so a big workbook never stalls the server.

Tests

29 suites: syntax of every file, DOM ids, theme tokens, files, documents, viewer3d, agents, cron, spend, usage, sessions, guidance, checkers, pmo, pmo-service and pmo-skills (real helper, hash embedder), tools, pmo-setup (stand-in for uv), snapshot (real Git), github, recycle (real Recycle Bin round trip), api-key, connect, projects-sandbox, portable, restart, the end-to-end suite on a fake Muse and a fake helper, and three headless-Edge suites with real mouse input. Each suite starts its own temporary dashboard and removes its folder.

SECURITY

Local by construction

TESTS

The latest run, 3 November 2026

Run on the public copy with npm test: every suite green, 0 failures. Counts are checks per suite.

SuiteChecksCovers
check67 filesnode --check of every JavaScript file
dom-ids · theme3 · 9every page id exists; every colour is a theme variable in both themes
files · documents · viewer3d40 · 29 · 38file kinds and safe paths; the document tool with pictures; the 3D view's served files and CSP
agents · cron · spend · usage · sessions21 · 39 · 21 · 12 · 12agents and trust; scheduled jobs; spend and prices; usage windows; session load/unload and history paging
guidance · checkers28 · 37Settings → Guidance; which folders get Muse's checkers
pmo · pmo-setup · tools46 · 26 · 18the PMO client and savings maths; Set up PMO with a stand-in for uv; Blender and the remover
pmo-service · pmo-skills53 · 30the real Python helper and skill library (run where PMO's Python is installed; skipped on a machine without numpy)
snapshot · github · recycle18 · 20 · 11real Git snapshots and undo; clone and push guard; a real Windows Recycle Bin round trip
api-key · connect31 · 20encrypted key, Meta's key check, a refused key; the Connect dialog flow
projects-sandbox · portable · restart18 · 15 · 7project folders and sandbox fallback; a copy moved to a new folder; Settings → Restart
mock (end to end)335chats, approvals, queue/nudge/push, handovers, files, previews, prices, trust, delete
send-ui · preview-ui · viewer3d-ui45 · 114 · 101headless Edge with real mouse input: the composer; chips and the zoomable paper; every 3D type checked in screenshot pixels
Total1,1971,114 on the public copy that day + 83 in the two Python suites where PMO's Python exists

Also that day: the PMO lab suite 97 OK, the reading-plugin selftest 13/13, and a start of the public copy against the real Muse (connected, host ready, models listed, PMO offering its setup, Blender and the remover found).

PROVENANCE

What was built when

WhenWhat
25 OctMuse Dashboard baseline: chats, project folders, approvals, Activity, usage, updates, process cleanup.
26–27 OctOpen folder, Git snapshots and undo, trust chip, Delete to the Recycle Bin, GitHub links, API-key connection, Connect dialog, scheduled jobs, queue/nudge/push, cost estimates, the lean preset switch. In the lab the memory becomes the Permanent Memory Optimizer and the 50k rollover is measured.
28 OctPMO attached to the dashboard (helper protocol, handovers, savings maths, Settings); files in the chat, previews and the document tool; dark/light theme; skill library phases 1–2 in the lab.
29 OctSet up PMO with one click, the reading plugin, Guidance and automatic checkers, pictures in documents, the live benchmark matrix; the robot-skill A/B.
30 OctZoomable paper, PDFs drawn in the page, the 3D view.
2 NovSkills become PMO's: skill library plugin, host facts, web routing, 3D tools, the moves skill, the Movement dropdown.
3 NovFull review and cleanup, robot skill v19.2, the ON-vs-OFF evidence runs, the public copy brought up to date, this page.
EXPANDED VIEW

The story of PMO

EVIDENCE