本地部署多智能体调度环境
为munder-difflin打分
给出您宝贵的评分:
手机端可长按上方图片保存到相册,或点击「下载/分享」分享到微信
使用 munder-difflin,你可以:
一款本地多智能体运行调度工具,可在本机环境搭建、调试、运行多个 AI 智能体协作工作流程。
用户评论 (0)
2026年06月10日
2026年06月07日
2026年09月05日
2026年08月29日
2026年08月23日
2026年08月22日
2026年08月22日
v0.5.2
2026年09月09日
Munder Difflin 0.5.2.
- Your name reaches your team. Agents' names travel sealed.
- "Not receiving" is said to the sender. On the relay.
- Who answers. One setting, Slack and teammates.
- Requests stop coming back. Startup waits for the restore.
- Michael, shorter. Terminals, memory, and the agents' composer.
Downloads: macOS .dmg (universal), Windows .exe (installer or portable), Linux .AppImage. SHA256SUMS.txt lets you verify what you downloaded.
This is a binaries-only release: the tag carries the installers, not the 0.5.2 source.
详细ChangeLogv0.4.6
2026年08月27日
Munder Difflin v0.4.6
A local hive of Claude Code, Antigravity, Codex, Gemini, Cursor, Grok & Copilot agents that run themselves.
Messaging, routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in · see it in action, then grab a build below
What's new in 0.4.6
The release that speaks your language and updates itself. The interface now runs in Chinese and
Arabic, the auto-updater downloads and installs a new build end to end, fonts ship inside the app so
a blocked network never leaves you on a blank window, and the way agent engines are launched is
hardened. Plus the Settings rework, an IME fix for CJK typing, and 16 community pull requests.
- The interface speaks Chinese and Arabic. Pick zh-CN or Arabic in Settings — every string is
translated, with nothing falling back to English, and the terminals read right to left. Some
screens still need their padding and icons mirrored, and that is the next piece of work. - Updates install themselves. The badge advances check to available to downloading to downloaded
on its own, and the button at the end restarts into the new version. This is the release that
proves that path end to end. - Fonts ship inside the app. No Google Fonts fetch on launch, so the app opens at the same speed
on any network, including one where Google is blocked. The release drop's fonts are bundled too,
and it can no longer white-screen while a stylesheet loads. - Engine command launching is hardened. The name of the CLI an agent launches is validated
before it is ever resolved against your PATH, so nothing but a plain command name or an absolute
path reaches a shell. - IME typing no longer sends early. Pressing Enter to choose a Chinese or Japanese candidate
picks the word instead of firing the message with half-typed text. - Settings has one Save button. The Connections tab stops repeating itself; REST API, MCP,
Slack and webhooks each keep their place. - The app counts messages you send, not what they say. A single
message_sentevent closes the
activation funnel: a count and nothing else, no text, no length, no content of any kind.
TELEMETRY.mdlists it like every other event and the same opt-out applies. - The ASK ME card renders markdown. Questions with emphasis, bullets,
code, tables and links
now render instead of showing their raw asterisks.
A note on Pro
v0.5.0 launches with Pro and Teams plans alongside the community version. Community stays free, stays
open, and keeps getting updates. Pro ships with new features and integrations, with more posted
throughout the year, and it stays ahead of Community, for power users who want the full potential
of coding agents and agent harnesses. The Pro roadmap also includes a mobile app. The first 100 people on the
Founders' Wall get a month of Pro free, then 50% off the annual plan.
Thanks
16 community pull requests from 13 contributors landed in this release, one of them (#213)
re-implemented rather than merged. Thank you to @aaroncoville, @abo123v-glitch,
@BUGHUNTER-SACHIN, @djbiz,
@gpechieu, @HsienW,
@HundredBillion, @jhinzzz,
@L422Y, @LavaDMan,
@raifemre, @savvaskoualis and
@Schopenhauer-loves-Hegel, and to everyone who
reviewed a pull request or filed the bug that led to one.
Munder Difflin · v0.4.6
Speaks your language. Updates itself.
The interface now runs in Chinese and Arabic, the updater installs a new build end to end, and the fonts ship inside the app so a blocked network never leaves you on a blank screen. Plus the Settings rework, an IME fix for CJK typing, and 16 community pull requests.
<div class="announce">
<div class="card lilac">
<span class="tag">Coming soon</span>
<h2>Pro & Teams launch with v0.5.0.</h2>
<p><b>Community stays free, stays open, and keeps getting updates.</b> Pro ships with new
features and integrations, with more posted throughout the year, and it stays ahead of
Community — for power users who want the full potential of coding agents and agent
harnesses. A Teams plan launches alongside it, and the Pro roadmap also includes a mobile
app.</p>
</div>
<div class="band">
<div class="yr">50<small>% OFF</small></div>
<div><b>Join the supporters wall</b>
<span>One month of Munder Difflin Pro free, then 50% off the annual plan — for the
first 100 people on the wall.</span></div>
</div>
</div>
<h3>What's new in 0.4.6</h3>
<div class="grid">
<div class="card mint">
<span class="tag">i18n</span>
<h2>Chinese and Arabic.</h2>
<p>Pick a language in Settings. Every string is translated and the terminals read right to
left. Some screens still need their padding and icons mirrored — that is the next
piece of work.</p>
</div>
<div class="card sky">
<span class="tag">Updates</span>
<h2>Updates install themselves.</h2>
<p>The badge moves from check to available to downloading to downloaded on its own, and the
button at the end restarts you into the new version. This is the release that proves that
path end to end.</p>
</div>
<div class="card peach">
<span class="tag">Fonts</span>
<h2>Fonts ship inside the app.</h2>
<p>No Google Fonts fetch on launch, so the app opens at the same speed on any network,
including one where Google is blocked — and this page can no longer white-screen
while a stylesheet loads.</p>
</div>
<div class="card">
<span class="tag">Security</span>
<h2>Hardened command launching.</h2>
<p>The name of the CLI an agent launches is validated before it is ever resolved against
your PATH, so nothing but a plain command name or an absolute path reaches a shell.</p>
</div>
</div>
<h3>Also new</h3>
<ul class="rows">
<li><i>IME</i><div><b>Enter picks the candidate, not sends the message</b>
<p>Choosing a Chinese or Japanese candidate no longer fires half-typed text.</p></div></li>
<li><i>Settings</i><div><b>One Save button</b>
<p>The Connections tab stops repeating itself. REST API, MCP, Slack and webhooks each keep
their place.</p></div></li>
<li><i>Telemetry</i><div><b>Counts messages, never content</b>
<p>A single message_sent event closes the activation funnel. A count and nothing else.</p></div></li>
<li><i>Ask me</i><div><b>Questions render markdown</b>
<p>Emphasis, bullets, code, tables and links render instead of raw asterisks.</p></div></li>
</ul>
<div class="thanks">
<div class="head">
<div class="n">16<small>PULL REQUESTS</small></div>
<p><b>Thank you to every contributor.</b> 16 community pull requests from 13 contributors
landed in this release. If you opened one, reviewed one, or filed the bug that led to one,
this version has your fingerprints on it.</p>
</div>
<div class="wall">
<a href="https://github.com/aaroncoville" target="_blank" rel="noopener">@aaroncoville</a>
<a href="https://github.com/abo123v-glitch" target="_blank" rel="noopener">@abo123v-glitch</a>
<a href="https://github.com/BUGHUNTER-SACHIN" target="_blank" rel="noopener">@BUGHUNTER-SACHIN</a>
<a href="https://github.com/djbiz" target="_blank" rel="noopener">@djbiz</a>
<a href="https://github.com/gpechieu" target="_blank" rel="noopener">@gpechieu</a>
<a href="https://github.com/HsienW" target="_blank" rel="noopener">@HsienW</a>
<a href="https://github.com/HundredBillion" target="_blank" rel="noopener">@HundredBillion</a>
<a href="https://github.com/jhinzzz" target="_blank" rel="noopener">@jhinzzz</a>
<a href="https://github.com/L422Y" target="_blank" rel="noopener">@L422Y</a>
<a href="https://github.com/LavaDMan" target="_blank" rel="noopener">@LavaDMan</a>
<a href="https://github.com/raifemre" target="_blank" rel="noopener">@raifemre</a>
<a href="https://github.com/savvaskoualis" target="_blank" rel="noopener">@savvaskoualis</a>
<a href="https://github.com/Schopenhauer-loves-Hegel" target="_blank" rel="noopener">@Schopenhauer-loves-Hegel</a>
</div>
</div>
<p class="foot"><b>Restart to update</b> closes the app and every running agent, so finish or
pause what they are doing first.</p>
Still new in 0.4.5
The release that fixes the things you trusted and were quietly wrong. Cost reporting was off
by more than half after a restart, semantic memory never worked on Apple Silicon, and agents
could not talk to each other reliably. All three are fixed. Plus weekday scheduling, clickable
paths everywhere, one editor instead of two, and 23 community pull requests.
- Costs are reported right. The telemetry counter reset on every app restart while the
session id stayed the same, so the floor under reported spend by a wide margin. It is now folded
from the ledger, with a separate session figure kept alongside. - Semantic memory works on Apple Silicon. CoreML overflowed the quantized embedding graph,
every vector came back NaN, and chroma rejected every upsert. Embeddings are pinned to CPU
on macOS. - Agents talk to each other reliably. An inbox wake watchdog, no more stale nudges, mail to
a missing inbox is bounced and logged instead of dropped, a capped steer queue, atomic
webhook dispatch, and PROTOCOL.md refreshes on boot. - Workers are reliable to hire. Spawn, teardown, floor cards, and engine availability are
all checked before a hire is committed. - The renderer runs inside Chromium's sandbox.
- Windows agents quit when the app does.
- Restart to update no longer gets stuck when a running agent makes the app refuse to quit.
- Triggers run on weekdays at a time of day, not just on an interval, and they are DST safe.
- Focus mode survives a restart and you can edit an agent from inside it.
- Every path in terminal output is clickable. Markdown previews, source opens in the editor,
images and unknown types reveal in Finder or Explorer. - One editor. The fullscreen file overlay is gone, everything opens in the IDE, and the git
rail is collapsed by default. - Updating is one click. The title-bar badge downloads the build for your machine and tells
you how to install it, it sayslatestonce a check confirms you are current, and the first
run after an update opens that release's page. - Settings opens with a card carrying your version, your plan, and a way back to these notes.
- Terminals follow the window theme, Gemini CLI and Cursor Agent join the engine list, and
Michael hires on his own terms with editable agent names.
Still new in 0.4.4 · Windows joins the floor
If you use Windows, 0.4.4 is the release that made the app work. Agents could never message
each other there. They started, looked completely healthy, and quietly ignored one another
forever. It also fixed the first five minutes: setup could not be finished, and on a brand new
install the parts that carry messages between agents never started until you quit and reopened
the app.
- Windows agents talk to each other. The hive protocol reaches an agent as a multi-line
command-line argument, andcmd.execut it at the first newline, taking the block that names
inbox/andoutbox/with it. Spawns now hand the real interpreter an argument array. - Setup finishes. Accepting the suggested folder used to fail outright, and the folder box
was empty even though the text above promised a suggestion. - A fresh install works immediately. Messages between agents, live status on the cards, and
Restart & Continue all stayed dead until you restarted the app, and nothing said so. - Skills and Prerequisites. Every skill your agents can use, 227 more to browse and install,
and one page in Settings that says which supporting tools you have and which you do not. - Release drops. A release can carry its own designed page instead of a version number in
the corner. You are reading one. - Dark mode rebuilt. The one-pixel borders that draw every control measured under 2:1
against their background, so the whole app read as flat grey shapes. Re-tuned and measured
rather than picked by eye.
Still new in 0.4.3 — Michael is the logo
The mark is a face now. Munder Difflin has always been an office you watch people work in,
and the icon was a pair of script initials on a gradient. It's Michael — your clone — drawn in
the app's own pixel art, on the brand yellow, looking straight back at you.
- One mark, everywhere. The dock icon on macOS, Windows and Linux, the site favicon and
header, the in-app toolbar, and the README all render the same portrait. No variant is a
redrawing of another. - The SVG is the source of truth. The mark is authored as pure vector — every pixel of the
sprite is a rect, with no fonts, no gradients and no filters — and every raster inbuild/
anddocs/is generated from it bytools/make-logo.cjs.
The old icon depended on the Lobster webfont being installed to render correctly. - Icons are native at every size. A real multi-resolution
.icns(16→1024, with the macOS
drop shadow) and a.icocarrying six sizes, plus a 32px favicon and a 180px apple-touch-icon,
so nothing is a downscale of a 512px image any more. - Brighter call-to-action buttons. The download button took its fill from the same token as
accent text, which has to stay dark enough to read on a white page — so on the light theme
it came out brown. Fills now have their own token and start at what used to be the hover colour.
Note
Appearance only. No functional change in this release: the update carries the new icon into
your dock, and nothing else moves.
Still new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
Note
This release changes wording only. The god agent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
Note
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
Thanks
This release carries community work. All 23 of these landed in v0.4.5:
| #157 | @gpechieu | inherited Claude Code session markers are stripped from an agent's PTY env |
| #158 | @gpechieu | semantic memory works on Apple Silicon again: embeddings are pinned to CPU on macOS |
| #159 | @gpechieu | reliable spawn, teardown and floor cards for the workers Michael hires |
| #165 | @rajpreetcodes | a ~ in the harness home folder resolves, so setup cannot die on ENOENT |
| #171 | @KrushanPatel | CONTRIBUTING.md matches the platforms the app actually supports |
| #175 | @rekcilyssup | a main-process watchdog wakes an idle worker sitting on an undrained inbox |
| #176 | @FenjuFu | Gemini CLI joins the engine list |
| #177 | @TTAWDTT | each agent's live context-window occupancy shows in the roster |
| #178 | @gpechieu | a god-hired worker gets a floor card, and it archives when the worker dies |
| #179 | @kdahal7 | statAbs expands ~, so a path resolves the same way on every platform |
| #181 | @TTAWDTT | webhook dispatch goes through an atomic add, so a stale ledger cannot overwrite it |
| #184 | @TTAWDTT | the per-agent steer queue is capped, which bounds memory on a stalled agent |
| #185 | @hyperstream-pro | mail to an id with no inbox is bounced and logged instead of dropped |
| #186 | @BUGHUNTER-SACHIN | tests cover the Notifications and Stop idle-detection branches |
| #187 | @hyperstream-pro | a stale inbox nudge no longer wakes an agent against an inbox that is already empty |
| #190 | @swarnendu19 | agent names can be edited after spin-up |
| #199 | @amey-op | the Antigravity queue no longer wedges for 30 seconds |
| #203 | @lifelmy | the Crush config env points at the agent's own directory |
| #210 | @chaitanyagiri | the art licence claims are true again, Modern Interiors is bought |
| #214 | @pontusm | Windows agent processes quit when the app does |
| #219 | @chaitanyagiri | engine availability is checked before Michael's engine is committed |
| #226 | @chaitanyagiri | the floor reports lifetime spend, not spend since the last app restart |
| #227 | @scy73 | the renderer runs inside Chromium's sandbox |
Four of the fixes above are @gpechieu's and three are
@TTAWDTT's. Thank you, and thank you to everyone who reviewed a
pull request or filed the bug that led to one.
⤓ Downloads
Latest builds for every platform. The macOS build is universal, one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.6-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64), recommended | Munder-Difflin-0.4.6-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.6-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.6-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
详细ChangeLogv0.4.7-rc.2
2026年08月27日
Munder Difflin v0.4.5
A local hive of Claude Code, Antigravity, Codex, Gemini, Cursor, Grok & Copilot agents that run themselves.
Messaging, routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in · see it in action, then grab a build below
What's new in 0.4.5
The release that fixes the things you trusted and were quietly wrong. Cost reporting was off
by more than half after a restart, semantic memory never worked on Apple Silicon, and agents
could not talk to each other reliably. All three are fixed. Plus weekday scheduling, clickable
paths everywhere, one editor instead of two, and 23 community pull requests.
- Costs are reported right. The telemetry counter reset on every app restart while the
session id stayed the same, so the floor under reported spend by a wide margin. It is now folded
from the ledger, with a separate session figure kept alongside. - Semantic memory works on Apple Silicon. CoreML overflowed the quantized embedding graph,
every vector came back NaN, and chroma rejected every upsert. Embeddings are pinned to CPU
on macOS. - Agents talk to each other reliably. An inbox wake watchdog, no more stale nudges, mail to
a missing inbox is bounced and logged instead of dropped, a capped steer queue, atomic
webhook dispatch, and PROTOCOL.md refreshes on boot. - Workers are reliable to hire. Spawn, teardown, floor cards, and engine availability are
all checked before a hire is committed. - The renderer runs inside Chromium's sandbox.
- Windows agents quit when the app does.
- Restart to update no longer gets stuck when a running agent makes the app refuse to quit.
- Triggers run on weekdays at a time of day, not just on an interval, and they are DST safe.
- Focus mode survives a restart and you can edit an agent from inside it.
- Every path in terminal output is clickable. Markdown previews, source opens in the editor,
images and unknown types reveal in Finder or Explorer. - One editor. The fullscreen file overlay is gone, everything opens in the IDE, and the git
rail is collapsed by default. - Updating is one click. The title-bar badge downloads the build for your machine and tells
you how to install it, it sayslatestonce a check confirms you are current, and the first
run after an update opens that release's page. - Settings opens with a card carrying your version, your plan, and a way back to these notes.
- Terminals follow the window theme, Gemini CLI and Cursor Agent join the engine list, and
Michael hires on his own terms with editable agent names.
A note on Pro
v0.5.0 launches with a Pro version alongside the community version. Community stays free, stays
open, and keeps getting updates. Pro ships with new features and integrations, with more posted
throughout the year, and it stays ahead of Community, for power users who want the full potential
of coding agents and agent harnesses. The Pro roadmap also includes a mobile app. The first 100 people on the
Founders' Wall get a month of Pro free, then 50% off the annual plan.
Thanks
23 community pull requests landed in this release. Thank you to everyone who opened one,
reviewed one, or filed the bug that led to one. The full list is in CHANGELOG.md.
Munder Difflin · v0.4.5
Thank you for being here early.
Every bug you filed, every PR you sent, every floor screenshot you posted shaped what Munder Difflin is today. This release is built on that. So before the list of fixes, a proper thank you to the people who showed up first.
<div class="two">
<div class="card lilac">
<span class="tag">Announcement</span>
<h2>v0.5.0 launches with a Pro version.</h2>
<p><b>Community stays free, stays open, and keeps getting updates.</b> Pro ships with
new features and integrations, with more posted throughout the year, and it stays
ahead of Community, for power users who want the full potential of coding agents and
agent harnesses. The Pro roadmap also includes a mobile app.</p>
</div>
<div class="band">
<div class="yr">50<small>% OFF</small></div>
<div><b>On the Founders' Wall?</b>
<span>A month of Munder Difflin Pro free, then 50% off the annual plan. For the first
100 people on the wall.</span></div>
</div>
</div>
</div>
<div class="nav">
<span class="l step">01 / 02</span>
<label class="btn primary" for="pg2">See what's new in 0.4.5 →</label>
<span class="r step"> </span>
</div>
What's new in 0.4.5
The things you trusted and were quietly wrong.
Three fixes lead this release, and each one was under reporting, failing silently, or both. Then a solid list of things that are simply new.
<div class="grid">
<div class="card mint">
<span class="tag">Costs</span>
<h2>Spend is reported right.</h2>
<p>The counter reset on every app restart while the session id stayed the same, so the
floor under reported <b>by a wide margin</b>. It is now folded from the ledger, with a
session figure kept alongside.</p>
</div>
<div class="card sky">
<span class="tag">Memory</span>
<h2>Semantic memory on Apple Silicon.</h2>
<p>CoreML overflowed the embedding graph, every vector came back NaN, and nothing was
ever stored. Embeddings now run on CPU on macOS, so recall actually recalls.</p>
</div>
<div class="card peach">
<span class="tag">Hive</span>
<h2>Agents talk to each other, reliably.</h2>
<p>A watchdog wakes idle workers with mail waiting, stale nudges stop, mail to a missing
inbox bounces instead of vanishing, and webhook dispatch is atomic.</p>
</div>
<div class="card">
<span class="tag">Security</span>
<h2>The renderer runs in Chromium's sandbox.</h2>
<p>Privileged work stays behind the bridge. Release pages like this one render in a
sealed frame with no scripts at all.</p>
</div>
</div>
<h3>Also new</h3>
<ul class="rows">
<li><i>Triggers</i><div><b>Schedule on weekdays at a time of day</b>
<p>Not just on an interval, and DST safe by construction.</p></div></li>
<li><i>Terminal</i><div><b>Every path in output is clickable</b>
<p>Markdown previews, source opens in the editor, everything else reveals in Finder or Explorer.</p></div></li>
<li><i>Editor</i><div><b>One editor, not two</b>
<p>The fullscreen overlay is gone. Everything opens in the IDE, git rail collapsed by default.</p></div></li>
<li><i>Focus</i><div><b>Focus mode survives a restart</b>
<p>And you can edit an agent without leaving it.</p></div></li>
<li><i>Workers</i><div><b>Hiring is reliable</b>
<p>Spawn, teardown, floor cards and engine checks happen before a hire is committed.</p></div></li>
<li><i>Updates</i><div><b>Updating is one click, and you pick how</b>
<p>The version badge next to the logo downloads the build for your machine and walks you
through replacing the app, step by step for your OS. Auto update lives in Settings. Once
you are current the badge says latest, and the first launch after an update opens that
release's page. Restart to update no longer gets stuck either.</p></div></li>
<li><i>Windows</i><div><b>Quitting the app quits the agents</b></div></li>
<li><i>Engines</i><div><b>Gemini CLI and Cursor Agent join the floor</b></div></li>
<li><i>Terminal</i><div><b>TUIs follow the window theme</b></div></li>
<li><i>Agents</i><div><b>Michael hires on his own terms, and names are editable</b></div></li>
</ul>
<div class="thanks">
<div class="n">23<small>PULL REQUESTS</small></div>
<p><b>Thank you to every contributor.</b> 23 community pull requests landed in this
release. If you opened one, reviewed one, or filed the bug that led to one, this version
has your fingerprints on it. The full list is in the release notes on GitHub.</p>
</div>
<div class="meet">
<div class="card">
<span class="tag">Star</span>
<h2>If this has been useful, a star is the whole marketing budget.</h2>
<p>The <b>⭐ Star us on GitHub</b> button is just below this page.</p>
</div>
<div class="card sky">
<span class="tag">Discord</span>
<h2>Come hang out.</h2>
<p>Questions, floor screenshots, and a role when your PR lands. Click the address to select it, then copy.</p>
<a class="url" href="https://discord.gg/SEDzP5ZPk5" target="_blank" rel="noopener">discord.gg/SEDzP5ZPk5</a>
</div>
</div>
<p class="foot"><b>Restart to update</b> closes the app and every running agent, so finish or
pause what they are doing first. <b>Later</b> keeps the update waiting until you are ready.</p>
</div>
<div class="nav">
<label class="btn sm l" for="pg1">← Back</label>
<span class="step">02 / 02</span>
<span class="r step"> </span>
</div>
Still new in 0.4.4 · Windows joins the floor
If you use Windows, 0.4.4 is the release that made the app work. Agents could never message
each other there. They started, looked completely healthy, and quietly ignored one another
forever. It also fixed the first five minutes: setup could not be finished, and on a brand new
install the parts that carry messages between agents never started until you quit and reopened
the app.
- Windows agents talk to each other. The hive protocol reaches an agent as a multi-line
command-line argument, andcmd.execut it at the first newline, taking the block that names
inbox/andoutbox/with it. Spawns now hand the real interpreter an argument array. - Setup finishes. Accepting the suggested folder used to fail outright, and the folder box
was empty even though the text above promised a suggestion. - A fresh install works immediately. Messages between agents, live status on the cards, and
Restart & Continue all stayed dead until you restarted the app, and nothing said so. - Skills and Prerequisites. Every skill your agents can use, 227 more to browse and install,
and one page in Settings that says which supporting tools you have and which you do not. - Release drops. A release can carry its own designed page instead of a version number in
the corner. You are reading one. - Dark mode rebuilt. The one-pixel borders that draw every control measured under 2:1
against their background, so the whole app read as flat grey shapes. Re-tuned and measured
rather than picked by eye.
Still new in 0.4.3 — Michael is the logo
The mark is a face now. Munder Difflin has always been an office you watch people work in,
and the icon was a pair of script initials on a gradient. It's Michael — your clone — drawn in
the app's own pixel art, on the brand yellow, looking straight back at you.
- One mark, everywhere. The dock icon on macOS, Windows and Linux, the site favicon and
header, the in-app toolbar, and the README all render the same portrait. No variant is a
redrawing of another. - The SVG is the source of truth. The mark is authored as pure vector — every pixel of the
sprite is a rect, with no fonts, no gradients and no filters — and every raster inbuild/
anddocs/is generated from it bytools/make-logo.cjs.
The old icon depended on the Lobster webfont being installed to render correctly. - Icons are native at every size. A real multi-resolution
.icns(16→1024, with the macOS
drop shadow) and a.icocarrying six sizes, plus a 32px favicon and a 180px apple-touch-icon,
so nothing is a downscale of a 512px image any more. - Brighter call-to-action buttons. The download button took its fill from the same token as
accent text, which has to stay dark enough to read on a white page — so on the light theme
it came out brown. Fills now have their own token and start at what used to be the hover colour.
Note
Appearance only. No functional change in this release: the update carries the new icon into
your dock, and nothing else moves.
Still new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
Note
This release changes wording only. The god agent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
Note
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
Thanks
This release carries community work. All 23 of these landed in v0.4.5:
| #157 | @gpechieu | inherited Claude Code session markers are stripped from an agent's PTY env |
| #158 | @gpechieu | semantic memory works on Apple Silicon again: embeddings are pinned to CPU on macOS |
| #159 | @gpechieu | reliable spawn, teardown and floor cards for the workers Michael hires |
| #165 | @rajpreetcodes | a ~ in the harness home folder resolves, so setup cannot die on ENOENT |
| #171 | @KrushanPatel | CONTRIBUTING.md matches the platforms the app actually supports |
| #175 | @rekcilyssup | a main-process watchdog wakes an idle worker sitting on an undrained inbox |
| #176 | @FenjuFu | Gemini CLI joins the engine list |
| #177 | @TTAWDTT | each agent's live context-window occupancy shows in the roster |
| #178 | @gpechieu | a god-hired worker gets a floor card, and it archives when the worker dies |
| #179 | @kdahal7 | statAbs expands ~, so a path resolves the same way on every platform |
| #181 | @TTAWDTT | webhook dispatch goes through an atomic add, so a stale ledger cannot overwrite it |
| #184 | @TTAWDTT | the per-agent steer queue is capped, which bounds memory on a stalled agent |
| #185 | @hyperstream-pro | mail to an id with no inbox is bounced and logged instead of dropped |
| #186 | @BUGHUNTER-SACHIN | tests cover the Notifications and Stop idle-detection branches |
| #187 | @hyperstream-pro | a stale inbox nudge no longer wakes an agent against an inbox that is already empty |
| #190 | @swarnendu19 | agent names can be edited after spin-up |
| #199 | @amey-op | the Antigravity queue no longer wedges for 30 seconds |
| #203 | @lifelmy | the Crush config env points at the agent's own directory |
| #210 | @chaitanyagiri | the art licence claims are true again, Modern Interiors is bought |
| #214 | @pontusm | Windows agent processes quit when the app does |
| #219 | @chaitanyagiri | engine availability is checked before Michael's engine is committed |
| #226 | @chaitanyagiri | the floor reports lifetime spend, not spend since the last app restart |
| #227 | @scy73 | the renderer runs inside Chromium's sandbox |
Four of the fixes above are @gpechieu's and three are
@TTAWDTT's. Thank you, and thank you to everyone who reviewed a
pull request or filed the bug that led to one.
⤓ Downloads
Latest builds for every platform. The macOS build is universal, one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.5-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64), recommended | Munder-Difflin-0.4.5-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.5-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.5-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
详细ChangeLogv0.4.7-rc.1
2026年08月27日
Munder Difflin v0.4.5
A local hive of Claude Code, Antigravity, Codex, Gemini, Cursor, Grok & Copilot agents that run themselves.
Messaging, routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in · see it in action, then grab a build below
What's new in 0.4.5
The release that fixes the things you trusted and were quietly wrong. Cost reporting was off
by more than half after a restart, semantic memory never worked on Apple Silicon, and agents
could not talk to each other reliably. All three are fixed. Plus weekday scheduling, clickable
paths everywhere, one editor instead of two, and 23 community pull requests.
- Costs are reported right. The telemetry counter reset on every app restart while the
session id stayed the same, so the floor under reported spend by a wide margin. It is now folded
from the ledger, with a separate session figure kept alongside. - Semantic memory works on Apple Silicon. CoreML overflowed the quantized embedding graph,
every vector came back NaN, and chroma rejected every upsert. Embeddings are pinned to CPU
on macOS. - Agents talk to each other reliably. An inbox wake watchdog, no more stale nudges, mail to
a missing inbox is bounced and logged instead of dropped, a capped steer queue, atomic
webhook dispatch, and PROTOCOL.md refreshes on boot. - Workers are reliable to hire. Spawn, teardown, floor cards, and engine availability are
all checked before a hire is committed. - The renderer runs inside Chromium's sandbox.
- Windows agents quit when the app does.
- Restart to update no longer gets stuck when a running agent makes the app refuse to quit.
- Triggers run on weekdays at a time of day, not just on an interval, and they are DST safe.
- Focus mode survives a restart and you can edit an agent from inside it.
- Every path in terminal output is clickable. Markdown previews, source opens in the editor,
images and unknown types reveal in Finder or Explorer. - One editor. The fullscreen file overlay is gone, everything opens in the IDE, and the git
rail is collapsed by default. - Updating is one click. The title-bar badge downloads the build for your machine and tells
you how to install it, it sayslatestonce a check confirms you are current, and the first
run after an update opens that release's page. - Settings opens with a card carrying your version, your plan, and a way back to these notes.
- Terminals follow the window theme, Gemini CLI and Cursor Agent join the engine list, and
Michael hires on his own terms with editable agent names.
A note on Pro
v0.5.0 launches with a Pro version alongside the community version. Community stays free, stays
open, and keeps getting updates. Pro ships with new features and integrations, with more posted
throughout the year, and it stays ahead of Community, for power users who want the full potential
of coding agents and agent harnesses. The Pro roadmap also includes a mobile app. The first 100 people on the
Founders' Wall get a month of Pro free, then 50% off the annual plan.
Thanks
23 community pull requests landed in this release. Thank you to everyone who opened one,
reviewed one, or filed the bug that led to one. The full list is in CHANGELOG.md.
Munder Difflin · v0.4.5
Thank you for being here early.
Every bug you filed, every PR you sent, every floor screenshot you posted shaped what Munder Difflin is today. This release is built on that. So before the list of fixes, a proper thank you to the people who showed up first.
<div class="two">
<div class="card lilac">
<span class="tag">Announcement</span>
<h2>v0.5.0 launches with a Pro version.</h2>
<p><b>Community stays free, stays open, and keeps getting updates.</b> Pro ships with
new features and integrations, with more posted throughout the year, and it stays
ahead of Community, for power users who want the full potential of coding agents and
agent harnesses. The Pro roadmap also includes a mobile app.</p>
</div>
<div class="band">
<div class="yr">50<small>% OFF</small></div>
<div><b>On the Founders' Wall?</b>
<span>A month of Munder Difflin Pro free, then 50% off the annual plan. For the first
100 people on the wall.</span></div>
</div>
</div>
</div>
<div class="nav">
<span class="l step">01 / 02</span>
<label class="btn primary" for="pg2">See what's new in 0.4.5 →</label>
<span class="r step"> </span>
</div>
What's new in 0.4.5
The things you trusted and were quietly wrong.
Three fixes lead this release, and each one was under reporting, failing silently, or both. Then a solid list of things that are simply new.
<div class="grid">
<div class="card mint">
<span class="tag">Costs</span>
<h2>Spend is reported right.</h2>
<p>The counter reset on every app restart while the session id stayed the same, so the
floor under reported <b>by a wide margin</b>. It is now folded from the ledger, with a
session figure kept alongside.</p>
</div>
<div class="card sky">
<span class="tag">Memory</span>
<h2>Semantic memory on Apple Silicon.</h2>
<p>CoreML overflowed the embedding graph, every vector came back NaN, and nothing was
ever stored. Embeddings now run on CPU on macOS, so recall actually recalls.</p>
</div>
<div class="card peach">
<span class="tag">Hive</span>
<h2>Agents talk to each other, reliably.</h2>
<p>A watchdog wakes idle workers with mail waiting, stale nudges stop, mail to a missing
inbox bounces instead of vanishing, and webhook dispatch is atomic.</p>
</div>
<div class="card">
<span class="tag">Security</span>
<h2>The renderer runs in Chromium's sandbox.</h2>
<p>Privileged work stays behind the bridge. Release pages like this one render in a
sealed frame with no scripts at all.</p>
</div>
</div>
<h3>Also new</h3>
<ul class="rows">
<li><i>Triggers</i><div><b>Schedule on weekdays at a time of day</b>
<p>Not just on an interval, and DST safe by construction.</p></div></li>
<li><i>Terminal</i><div><b>Every path in output is clickable</b>
<p>Markdown previews, source opens in the editor, everything else reveals in Finder or Explorer.</p></div></li>
<li><i>Editor</i><div><b>One editor, not two</b>
<p>The fullscreen overlay is gone. Everything opens in the IDE, git rail collapsed by default.</p></div></li>
<li><i>Focus</i><div><b>Focus mode survives a restart</b>
<p>And you can edit an agent without leaving it.</p></div></li>
<li><i>Workers</i><div><b>Hiring is reliable</b>
<p>Spawn, teardown, floor cards and engine checks happen before a hire is committed.</p></div></li>
<li><i>Updates</i><div><b>Updating is one click, and you pick how</b>
<p>The version badge next to the logo downloads the build for your machine and walks you
through replacing the app, step by step for your OS. Auto update lives in Settings. Once
you are current the badge says latest, and the first launch after an update opens that
release's page. Restart to update no longer gets stuck either.</p></div></li>
<li><i>Windows</i><div><b>Quitting the app quits the agents</b></div></li>
<li><i>Engines</i><div><b>Gemini CLI and Cursor Agent join the floor</b></div></li>
<li><i>Terminal</i><div><b>TUIs follow the window theme</b></div></li>
<li><i>Agents</i><div><b>Michael hires on his own terms, and names are editable</b></div></li>
</ul>
<div class="thanks">
<div class="n">23<small>PULL REQUESTS</small></div>
<p><b>Thank you to every contributor.</b> 23 community pull requests landed in this
release. If you opened one, reviewed one, or filed the bug that led to one, this version
has your fingerprints on it. The full list is in the release notes on GitHub.</p>
</div>
<div class="meet">
<div class="card">
<span class="tag">Star</span>
<h2>If this has been useful, a star is the whole marketing budget.</h2>
<p>The <b>⭐ Star us on GitHub</b> button is just below this page.</p>
</div>
<div class="card sky">
<span class="tag">Discord</span>
<h2>Come hang out.</h2>
<p>Questions, floor screenshots, and a role when your PR lands. Click the address to select it, then copy.</p>
<a class="url" href="https://discord.gg/SEDzP5ZPk5" target="_blank" rel="noopener">discord.gg/SEDzP5ZPk5</a>
</div>
</div>
<p class="foot"><b>Restart to update</b> closes the app and every running agent, so finish or
pause what they are doing first. <b>Later</b> keeps the update waiting until you are ready.</p>
</div>
<div class="nav">
<label class="btn sm l" for="pg1">← Back</label>
<span class="step">02 / 02</span>
<span class="r step"> </span>
</div>
Still new in 0.4.4 · Windows joins the floor
If you use Windows, 0.4.4 is the release that made the app work. Agents could never message
each other there. They started, looked completely healthy, and quietly ignored one another
forever. It also fixed the first five minutes: setup could not be finished, and on a brand new
install the parts that carry messages between agents never started until you quit and reopened
the app.
- Windows agents talk to each other. The hive protocol reaches an agent as a multi-line
command-line argument, andcmd.execut it at the first newline, taking the block that names
inbox/andoutbox/with it. Spawns now hand the real interpreter an argument array. - Setup finishes. Accepting the suggested folder used to fail outright, and the folder box
was empty even though the text above promised a suggestion. - A fresh install works immediately. Messages between agents, live status on the cards, and
Restart & Continue all stayed dead until you restarted the app, and nothing said so. - Skills and Prerequisites. Every skill your agents can use, 227 more to browse and install,
and one page in Settings that says which supporting tools you have and which you do not. - Release drops. A release can carry its own designed page instead of a version number in
the corner. You are reading one. - Dark mode rebuilt. The one-pixel borders that draw every control measured under 2:1
against their background, so the whole app read as flat grey shapes. Re-tuned and measured
rather than picked by eye.
Still new in 0.4.3 — Michael is the logo
The mark is a face now. Munder Difflin has always been an office you watch people work in,
and the icon was a pair of script initials on a gradient. It's Michael — your clone — drawn in
the app's own pixel art, on the brand yellow, looking straight back at you.
- One mark, everywhere. The dock icon on macOS, Windows and Linux, the site favicon and
header, the in-app toolbar, and the README all render the same portrait. No variant is a
redrawing of another. - The SVG is the source of truth. The mark is authored as pure vector — every pixel of the
sprite is a rect, with no fonts, no gradients and no filters — and every raster inbuild/
anddocs/is generated from it bytools/make-logo.cjs.
The old icon depended on the Lobster webfont being installed to render correctly. - Icons are native at every size. A real multi-resolution
.icns(16→1024, with the macOS
drop shadow) and a.icocarrying six sizes, plus a 32px favicon and a 180px apple-touch-icon,
so nothing is a downscale of a 512px image any more. - Brighter call-to-action buttons. The download button took its fill from the same token as
accent text, which has to stay dark enough to read on a white page — so on the light theme
it came out brown. Fills now have their own token and start at what used to be the hover colour.
Note
Appearance only. No functional change in this release: the update carries the new icon into
your dock, and nothing else moves.
Still new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
Note
This release changes wording only. The god agent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
Note
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
Thanks
This release carries community work. All 23 of these landed in v0.4.5:
| #157 | @gpechieu | inherited Claude Code session markers are stripped from an agent's PTY env |
| #158 | @gpechieu | semantic memory works on Apple Silicon again: embeddings are pinned to CPU on macOS |
| #159 | @gpechieu | reliable spawn, teardown and floor cards for the workers Michael hires |
| #165 | @rajpreetcodes | a ~ in the harness home folder resolves, so setup cannot die on ENOENT |
| #171 | @KrushanPatel | CONTRIBUTING.md matches the platforms the app actually supports |
| #175 | @rekcilyssup | a main-process watchdog wakes an idle worker sitting on an undrained inbox |
| #176 | @FenjuFu | Gemini CLI joins the engine list |
| #177 | @TTAWDTT | each agent's live context-window occupancy shows in the roster |
| #178 | @gpechieu | a god-hired worker gets a floor card, and it archives when the worker dies |
| #179 | @kdahal7 | statAbs expands ~, so a path resolves the same way on every platform |
| #181 | @TTAWDTT | webhook dispatch goes through an atomic add, so a stale ledger cannot overwrite it |
| #184 | @TTAWDTT | the per-agent steer queue is capped, which bounds memory on a stalled agent |
| #185 | @hyperstream-pro | mail to an id with no inbox is bounced and logged instead of dropped |
| #186 | @BUGHUNTER-SACHIN | tests cover the Notifications and Stop idle-detection branches |
| #187 | @hyperstream-pro | a stale inbox nudge no longer wakes an agent against an inbox that is already empty |
| #190 | @swarnendu19 | agent names can be edited after spin-up |
| #199 | @amey-op | the Antigravity queue no longer wedges for 30 seconds |
| #203 | @lifelmy | the Crush config env points at the agent's own directory |
| #210 | @chaitanyagiri | the art licence claims are true again, Modern Interiors is bought |
| #214 | @pontusm | Windows agent processes quit when the app does |
| #219 | @chaitanyagiri | engine availability is checked before Michael's engine is committed |
| #226 | @chaitanyagiri | the floor reports lifetime spend, not spend since the last app restart |
| #227 | @scy73 | the renderer runs inside Chromium's sandbox |
Four of the fixes above are @gpechieu's and three are
@TTAWDTT's. Thank you, and thank you to everyone who reviewed a
pull request or filed the bug that led to one.
⤓ Downloads
Latest builds for every platform. The macOS build is universal, one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.5-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64), recommended | Munder-Difflin-0.4.5-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.5-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.5-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
详细ChangeLogv0.4.6-rc.1
2026年08月26日
Munder Difflin v0.4.5
A local hive of Claude Code, Antigravity, Codex, Gemini, Cursor, Grok & Copilot agents that run themselves.
Messaging, routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in · see it in action, then grab a build below
What's new in 0.4.5
The release that fixes the things you trusted and were quietly wrong. Cost reporting was off
by more than half after a restart, semantic memory never worked on Apple Silicon, and agents
could not talk to each other reliably. All three are fixed. Plus weekday scheduling, clickable
paths everywhere, one editor instead of two, and 23 community pull requests.
- Costs are reported right. The telemetry counter reset on every app restart while the
session id stayed the same, so the floor under reported spend by a wide margin. It is now folded
from the ledger, with a separate session figure kept alongside. - Semantic memory works on Apple Silicon. CoreML overflowed the quantized embedding graph,
every vector came back NaN, and chroma rejected every upsert. Embeddings are pinned to CPU
on macOS. - Agents talk to each other reliably. An inbox wake watchdog, no more stale nudges, mail to
a missing inbox is bounced and logged instead of dropped, a capped steer queue, atomic
webhook dispatch, and PROTOCOL.md refreshes on boot. - Workers are reliable to hire. Spawn, teardown, floor cards, and engine availability are
all checked before a hire is committed. - The renderer runs inside Chromium's sandbox.
- Windows agents quit when the app does.
- Restart to update no longer gets stuck when a running agent makes the app refuse to quit.
- Triggers run on weekdays at a time of day, not just on an interval, and they are DST safe.
- Focus mode survives a restart and you can edit an agent from inside it.
- Every path in terminal output is clickable. Markdown previews, source opens in the editor,
images and unknown types reveal in Finder or Explorer. - One editor. The fullscreen file overlay is gone, everything opens in the IDE, and the git
rail is collapsed by default. - Updating is one click. The title-bar badge downloads the build for your machine and tells
you how to install it, it sayslatestonce a check confirms you are current, and the first
run after an update opens that release's page. - Settings opens with a card carrying your version, your plan, and a way back to these notes.
- Terminals follow the window theme, Gemini CLI and Cursor Agent join the engine list, and
Michael hires on his own terms with editable agent names.
A note on Pro
v0.5.0 launches with a Pro version alongside the community version. Community stays free, stays
open, and keeps getting updates. Pro ships with new features and integrations, with more posted
throughout the year, and it stays ahead of Community, for power users who want the full potential
of coding agents and agent harnesses. The Pro roadmap also includes a mobile app. The first 100 people on the
Founders' Wall get a month of Pro free, then 50% off the annual plan.
Thanks
23 community pull requests landed in this release. Thank you to everyone who opened one,
reviewed one, or filed the bug that led to one. The full list is in CHANGELOG.md.
Munder Difflin · v0.4.5
Thank you for being here early.
Every bug you filed, every PR you sent, every floor screenshot you posted shaped what Munder Difflin is today. This release is built on that. So before the list of fixes, a proper thank you to the people who showed up first.
<div class="two">
<div class="card lilac">
<span class="tag">Announcement</span>
<h2>v0.5.0 launches with a Pro version.</h2>
<p><b>Community stays free, stays open, and keeps getting updates.</b> Pro ships with
new features and integrations, with more posted throughout the year, and it stays
ahead of Community, for power users who want the full potential of coding agents and
agent harnesses. The Pro roadmap also includes a mobile app.</p>
</div>
<div class="band">
<div class="yr">50<small>% OFF</small></div>
<div><b>On the Founders' Wall?</b>
<span>A month of Munder Difflin Pro free, then 50% off the annual plan. For the first
100 people on the wall.</span></div>
</div>
</div>
</div>
<div class="nav">
<span class="l step">01 / 02</span>
<label class="btn primary" for="pg2">See what's new in 0.4.5 →</label>
<span class="r step"> </span>
</div>
What's new in 0.4.5
The things you trusted and were quietly wrong.
Three fixes lead this release, and each one was under reporting, failing silently, or both. Then a solid list of things that are simply new.
<div class="grid">
<div class="card mint">
<span class="tag">Costs</span>
<h2>Spend is reported right.</h2>
<p>The counter reset on every app restart while the session id stayed the same, so the
floor under reported <b>by a wide margin</b>. It is now folded from the ledger, with a
session figure kept alongside.</p>
</div>
<div class="card sky">
<span class="tag">Memory</span>
<h2>Semantic memory on Apple Silicon.</h2>
<p>CoreML overflowed the embedding graph, every vector came back NaN, and nothing was
ever stored. Embeddings now run on CPU on macOS, so recall actually recalls.</p>
</div>
<div class="card peach">
<span class="tag">Hive</span>
<h2>Agents talk to each other, reliably.</h2>
<p>A watchdog wakes idle workers with mail waiting, stale nudges stop, mail to a missing
inbox bounces instead of vanishing, and webhook dispatch is atomic.</p>
</div>
<div class="card">
<span class="tag">Security</span>
<h2>The renderer runs in Chromium's sandbox.</h2>
<p>Privileged work stays behind the bridge. Release pages like this one render in a
sealed frame with no scripts at all.</p>
</div>
</div>
<h3>Also new</h3>
<ul class="rows">
<li><i>Triggers</i><div><b>Schedule on weekdays at a time of day</b>
<p>Not just on an interval, and DST safe by construction.</p></div></li>
<li><i>Terminal</i><div><b>Every path in output is clickable</b>
<p>Markdown previews, source opens in the editor, everything else reveals in Finder or Explorer.</p></div></li>
<li><i>Editor</i><div><b>One editor, not two</b>
<p>The fullscreen overlay is gone. Everything opens in the IDE, git rail collapsed by default.</p></div></li>
<li><i>Focus</i><div><b>Focus mode survives a restart</b>
<p>And you can edit an agent without leaving it.</p></div></li>
<li><i>Workers</i><div><b>Hiring is reliable</b>
<p>Spawn, teardown, floor cards and engine checks happen before a hire is committed.</p></div></li>
<li><i>Updates</i><div><b>Updating is one click, and you pick how</b>
<p>The version badge next to the logo downloads the build for your machine and walks you
through replacing the app, step by step for your OS. Auto update lives in Settings. Once
you are current the badge says latest, and the first launch after an update opens that
release's page. Restart to update no longer gets stuck either.</p></div></li>
<li><i>Windows</i><div><b>Quitting the app quits the agents</b></div></li>
<li><i>Engines</i><div><b>Gemini CLI and Cursor Agent join the floor</b></div></li>
<li><i>Terminal</i><div><b>TUIs follow the window theme</b></div></li>
<li><i>Agents</i><div><b>Michael hires on his own terms, and names are editable</b></div></li>
</ul>
<div class="thanks">
<div class="n">23<small>PULL REQUESTS</small></div>
<p><b>Thank you to every contributor.</b> 23 community pull requests landed in this
release. If you opened one, reviewed one, or filed the bug that led to one, this version
has your fingerprints on it. The full list is in the release notes on GitHub.</p>
</div>
<div class="meet">
<div class="card">
<span class="tag">Star</span>
<h2>If this has been useful, a star is the whole marketing budget.</h2>
<p>The <b>⭐ Star us on GitHub</b> button is just below this page.</p>
</div>
<div class="card sky">
<span class="tag">Discord</span>
<h2>Come hang out.</h2>
<p>Questions, floor screenshots, and a role when your PR lands. Click the address to select it, then copy.</p>
<a class="url" href="https://discord.gg/SEDzP5ZPk5" target="_blank" rel="noopener">discord.gg/SEDzP5ZPk5</a>
</div>
</div>
<p class="foot"><b>Restart to update</b> closes the app and every running agent, so finish or
pause what they are doing first. <b>Later</b> keeps the update waiting until you are ready.</p>
</div>
<div class="nav">
<label class="btn sm l" for="pg1">← Back</label>
<span class="step">02 / 02</span>
<span class="r step"> </span>
</div>
Still new in 0.4.4 · Windows joins the floor
If you use Windows, 0.4.4 is the release that made the app work. Agents could never message
each other there. They started, looked completely healthy, and quietly ignored one another
forever. It also fixed the first five minutes: setup could not be finished, and on a brand new
install the parts that carry messages between agents never started until you quit and reopened
the app.
- Windows agents talk to each other. The hive protocol reaches an agent as a multi-line
command-line argument, andcmd.execut it at the first newline, taking the block that names
inbox/andoutbox/with it. Spawns now hand the real interpreter an argument array. - Setup finishes. Accepting the suggested folder used to fail outright, and the folder box
was empty even though the text above promised a suggestion. - A fresh install works immediately. Messages between agents, live status on the cards, and
Restart & Continue all stayed dead until you restarted the app, and nothing said so. - Skills and Prerequisites. Every skill your agents can use, 227 more to browse and install,
and one page in Settings that says which supporting tools you have and which you do not. - Release drops. A release can carry its own designed page instead of a version number in
the corner. You are reading one. - Dark mode rebuilt. The one-pixel borders that draw every control measured under 2:1
against their background, so the whole app read as flat grey shapes. Re-tuned and measured
rather than picked by eye.
Still new in 0.4.3 — Michael is the logo
The mark is a face now. Munder Difflin has always been an office you watch people work in,
and the icon was a pair of script initials on a gradient. It's Michael — your clone — drawn in
the app's own pixel art, on the brand yellow, looking straight back at you.
- One mark, everywhere. The dock icon on macOS, Windows and Linux, the site favicon and
header, the in-app toolbar, and the README all render the same portrait. No variant is a
redrawing of another. - The SVG is the source of truth. The mark is authored as pure vector — every pixel of the
sprite is a rect, with no fonts, no gradients and no filters — and every raster inbuild/
anddocs/is generated from it bytools/make-logo.cjs.
The old icon depended on the Lobster webfont being installed to render correctly. - Icons are native at every size. A real multi-resolution
.icns(16→1024, with the macOS
drop shadow) and a.icocarrying six sizes, plus a 32px favicon and a 180px apple-touch-icon,
so nothing is a downscale of a 512px image any more. - Brighter call-to-action buttons. The download button took its fill from the same token as
accent text, which has to stay dark enough to read on a white page — so on the light theme
it came out brown. Fills now have their own token and start at what used to be the hover colour.
Note
Appearance only. No functional change in this release: the update carries the new icon into
your dock, and nothing else moves.
Still new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
Note
This release changes wording only. The god agent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
Note
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
Thanks
This release carries community work. All 23 of these landed in v0.4.5:
| #157 | @gpechieu | inherited Claude Code session markers are stripped from an agent's PTY env |
| #158 | @gpechieu | semantic memory works on Apple Silicon again: embeddings are pinned to CPU on macOS |
| #159 | @gpechieu | reliable spawn, teardown and floor cards for the workers Michael hires |
| #165 | @rajpreetcodes | a ~ in the harness home folder resolves, so setup cannot die on ENOENT |
| #171 | @KrushanPatel | CONTRIBUTING.md matches the platforms the app actually supports |
| #175 | @rekcilyssup | a main-process watchdog wakes an idle worker sitting on an undrained inbox |
| #176 | @FenjuFu | Gemini CLI joins the engine list |
| #177 | @TTAWDTT | each agent's live context-window occupancy shows in the roster |
| #178 | @gpechieu | a god-hired worker gets a floor card, and it archives when the worker dies |
| #179 | @kdahal7 | statAbs expands ~, so a path resolves the same way on every platform |
| #181 | @TTAWDTT | webhook dispatch goes through an atomic add, so a stale ledger cannot overwrite it |
| #184 | @TTAWDTT | the per-agent steer queue is capped, which bounds memory on a stalled agent |
| #185 | @hyperstream-pro | mail to an id with no inbox is bounced and logged instead of dropped |
| #186 | @BUGHUNTER-SACHIN | tests cover the Notifications and Stop idle-detection branches |
| #187 | @hyperstream-pro | a stale inbox nudge no longer wakes an agent against an inbox that is already empty |
| #190 | @swarnendu19 | agent names can be edited after spin-up |
| #199 | @amey-op | the Antigravity queue no longer wedges for 30 seconds |
| #203 | @lifelmy | the Crush config env points at the agent's own directory |
| #210 | @chaitanyagiri | the art licence claims are true again, Modern Interiors is bought |
| #214 | @pontusm | Windows agent processes quit when the app does |
| #219 | @chaitanyagiri | engine availability is checked before Michael's engine is committed |
| #226 | @chaitanyagiri | the floor reports lifetime spend, not spend since the last app restart |
| #227 | @scy73 | the renderer runs inside Chromium's sandbox |
Four of the fixes above are @gpechieu's and three are
@TTAWDTT's. Thank you, and thank you to everyone who reviewed a
pull request or filed the bug that led to one.
⤓ Downloads
Latest builds for every platform. The macOS build is universal, one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.5-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64), recommended | Munder-Difflin-0.4.5-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.5-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.5-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
详细ChangeLogv0.4.5
2026年08月22日
Munder Difflin v0.4.5
A local hive of Claude Code, Antigravity, Codex, Gemini, Cursor, Grok & Copilot agents that run themselves.
Messaging, routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in · see it in action, then grab a build below
What's new in 0.4.5
The release that fixes the things you trusted and were quietly wrong. Cost reporting was off
by more than half after a restart, semantic memory never worked on Apple Silicon, and agents
could not talk to each other reliably. All three are fixed. Plus weekday scheduling, clickable
paths everywhere, one editor instead of two, and 23 community pull requests.
- Costs are reported right. The telemetry counter reset on every app restart while the
session id stayed the same, so the floor under reported spend by a wide margin. It is now folded
from the ledger, with a separate session figure kept alongside. - Semantic memory works on Apple Silicon. CoreML overflowed the quantized embedding graph,
every vector came back NaN, and chroma rejected every upsert. Embeddings are pinned to CPU
on macOS. - Agents talk to each other reliably. An inbox wake watchdog, no more stale nudges, mail to
a missing inbox is bounced and logged instead of dropped, a capped steer queue, atomic
webhook dispatch, and PROTOCOL.md refreshes on boot. - Workers are reliable to hire. Spawn, teardown, floor cards, and engine availability are
all checked before a hire is committed. - The renderer runs inside Chromium's sandbox.
- Windows agents quit when the app does.
- Restart to update no longer gets stuck when a running agent makes the app refuse to quit.
- Triggers run on weekdays at a time of day, not just on an interval, and they are DST safe.
- Focus mode survives a restart and you can edit an agent from inside it.
- Every path in terminal output is clickable. Markdown previews, source opens in the editor,
images and unknown types reveal in Finder or Explorer. - One editor. The fullscreen file overlay is gone, everything opens in the IDE, and the git
rail is collapsed by default. - Updating is one click. The title-bar badge downloads the build for your machine and tells
you how to install it, it sayslatestonce a check confirms you are current, and the first
run after an update opens that release's page. - Settings opens with a card carrying your version, your plan, and a way back to these notes.
- Terminals follow the window theme, Gemini CLI and Cursor Agent join the engine list, and
Michael hires on his own terms with editable agent names.
A note on Pro
v0.5.0 launches with a Pro version alongside the community version. Community stays free, stays
open, and keeps getting updates. Pro ships with new features and integrations, with more posted
throughout the year, and it stays ahead of Community, for power users who want the full potential
of coding agents and agent harnesses. The Pro roadmap also includes a mobile app. The first 100 people on the
Founders' Wall get a month of Pro free, then 50% off the annual plan.
Thanks
23 community pull requests landed in this release. Thank you to everyone who opened one,
reviewed one, or filed the bug that led to one. The full list is in CHANGELOG.md.
Munder Difflin · v0.4.5
Thank you for being here early.
Every bug you filed, every PR you sent, every floor screenshot you posted shaped what Munder Difflin is today. This release is built on that. So before the list of fixes, a proper thank you to the people who showed up first.
<div class="two">
<div class="card lilac">
<span class="tag">Announcement</span>
<h2>v0.5.0 launches with a Pro version.</h2>
<p><b>Community stays free, stays open, and keeps getting updates.</b> Pro ships with
new features and integrations, with more posted throughout the year, and it stays
ahead of Community, for power users who want the full potential of coding agents and
agent harnesses. The Pro roadmap also includes a mobile app.</p>
</div>
<div class="band">
<div class="yr">50<small>% OFF</small></div>
<div><b>On the Founders' Wall?</b>
<span>A month of Munder Difflin Pro free, then 50% off the annual plan. For the first
100 people on the wall.</span></div>
</div>
</div>
</div>
<div class="nav">
<span class="l step">01 / 02</span>
<label class="btn primary" for="pg2">See what's new in 0.4.5 →</label>
<span class="r step"> </span>
</div>
What's new in 0.4.5
The things you trusted and were quietly wrong.
Three fixes lead this release, and each one was under reporting, failing silently, or both. Then a solid list of things that are simply new.
<div class="grid">
<div class="card mint">
<span class="tag">Costs</span>
<h2>Spend is reported right.</h2>
<p>The counter reset on every app restart while the session id stayed the same, so the
floor under reported <b>by a wide margin</b>. It is now folded from the ledger, with a
session figure kept alongside.</p>
</div>
<div class="card sky">
<span class="tag">Memory</span>
<h2>Semantic memory on Apple Silicon.</h2>
<p>CoreML overflowed the embedding graph, every vector came back NaN, and nothing was
ever stored. Embeddings now run on CPU on macOS, so recall actually recalls.</p>
</div>
<div class="card peach">
<span class="tag">Hive</span>
<h2>Agents talk to each other, reliably.</h2>
<p>A watchdog wakes idle workers with mail waiting, stale nudges stop, mail to a missing
inbox bounces instead of vanishing, and webhook dispatch is atomic.</p>
</div>
<div class="card">
<span class="tag">Security</span>
<h2>The renderer runs in Chromium's sandbox.</h2>
<p>Privileged work stays behind the bridge. Release pages like this one render in a
sealed frame with no scripts at all.</p>
</div>
</div>
<h3>Also new</h3>
<ul class="rows">
<li><i>Triggers</i><div><b>Schedule on weekdays at a time of day</b>
<p>Not just on an interval, and DST safe by construction.</p></div></li>
<li><i>Terminal</i><div><b>Every path in output is clickable</b>
<p>Markdown previews, source opens in the editor, everything else reveals in Finder or Explorer.</p></div></li>
<li><i>Editor</i><div><b>One editor, not two</b>
<p>The fullscreen overlay is gone. Everything opens in the IDE, git rail collapsed by default.</p></div></li>
<li><i>Focus</i><div><b>Focus mode survives a restart</b>
<p>And you can edit an agent without leaving it.</p></div></li>
<li><i>Workers</i><div><b>Hiring is reliable</b>
<p>Spawn, teardown, floor cards and engine checks happen before a hire is committed.</p></div></li>
<li><i>Updates</i><div><b>Updating is one click, and you pick how</b>
<p>The version badge next to the logo downloads the build for your machine and walks you
through replacing the app, step by step for your OS. Auto update lives in Settings. Once
you are current the badge says latest, and the first launch after an update opens that
release's page. Restart to update no longer gets stuck either.</p></div></li>
<li><i>Windows</i><div><b>Quitting the app quits the agents</b></div></li>
<li><i>Engines</i><div><b>Gemini CLI and Cursor Agent join the floor</b></div></li>
<li><i>Terminal</i><div><b>TUIs follow the window theme</b></div></li>
<li><i>Agents</i><div><b>Michael hires on his own terms, and names are editable</b></div></li>
</ul>
<div class="thanks">
<div class="n">23<small>PULL REQUESTS</small></div>
<p><b>Thank you to every contributor.</b> 23 community pull requests landed in this
release. If you opened one, reviewed one, or filed the bug that led to one, this version
has your fingerprints on it. The full list is in the release notes on GitHub.</p>
</div>
<div class="meet">
<div class="card">
<span class="tag">Star</span>
<h2>If this has been useful, a star is the whole marketing budget.</h2>
<p>The <b>⭐ Star us on GitHub</b> button is just below this page.</p>
</div>
<div class="card sky">
<span class="tag">Discord</span>
<h2>Come hang out.</h2>
<p>Questions, floor screenshots, and a role when your PR lands. Click the address to select it, then copy.</p>
<a class="url" href="https://discord.gg/SEDzP5ZPk5" target="_blank" rel="noopener">discord.gg/SEDzP5ZPk5</a>
</div>
</div>
<p class="foot"><b>Restart to update</b> closes the app and every running agent, so finish or
pause what they are doing first. <b>Later</b> keeps the update waiting until you are ready.</p>
</div>
<div class="nav">
<label class="btn sm l" for="pg1">← Back</label>
<span class="step">02 / 02</span>
<span class="r step"> </span>
</div>
Still new in 0.4.4 · Windows joins the floor
If you use Windows, 0.4.4 is the release that made the app work. Agents could never message
each other there. They started, looked completely healthy, and quietly ignored one another
forever. It also fixed the first five minutes: setup could not be finished, and on a brand new
install the parts that carry messages between agents never started until you quit and reopened
the app.
- Windows agents talk to each other. The hive protocol reaches an agent as a multi-line
command-line argument, andcmd.execut it at the first newline, taking the block that names
inbox/andoutbox/with it. Spawns now hand the real interpreter an argument array. - Setup finishes. Accepting the suggested folder used to fail outright, and the folder box
was empty even though the text above promised a suggestion. - A fresh install works immediately. Messages between agents, live status on the cards, and
Restart & Continue all stayed dead until you restarted the app, and nothing said so. - Skills and Prerequisites. Every skill your agents can use, 227 more to browse and install,
and one page in Settings that says which supporting tools you have and which you do not. - Release drops. A release can carry its own designed page instead of a version number in
the corner. You are reading one. - Dark mode rebuilt. The one-pixel borders that draw every control measured under 2:1
against their background, so the whole app read as flat grey shapes. Re-tuned and measured
rather than picked by eye.
Still new in 0.4.3 — Michael is the logo
The mark is a face now. Munder Difflin has always been an office you watch people work in,
and the icon was a pair of script initials on a gradient. It's Michael — your clone — drawn in
the app's own pixel art, on the brand yellow, looking straight back at you.
- One mark, everywhere. The dock icon on macOS, Windows and Linux, the site favicon and
header, the in-app toolbar, and the README all render the same portrait. No variant is a
redrawing of another. - The SVG is the source of truth. The mark is authored as pure vector — every pixel of the
sprite is a rect, with no fonts, no gradients and no filters — and every raster inbuild/
anddocs/is generated from it bytools/make-logo.cjs.
The old icon depended on the Lobster webfont being installed to render correctly. - Icons are native at every size. A real multi-resolution
.icns(16→1024, with the macOS
drop shadow) and a.icocarrying six sizes, plus a 32px favicon and a 180px apple-touch-icon,
so nothing is a downscale of a 512px image any more. - Brighter call-to-action buttons. The download button took its fill from the same token as
accent text, which has to stay dark enough to read on a white page — so on the light theme
it came out brown. Fills now have their own token and start at what used to be the hover colour.
Note
Appearance only. No functional change in this release: the update carries the new icon into
your dock, and nothing else moves.
Still new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
Note
This release changes wording only. The god agent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
Note
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
Thanks
This release carries community work. All 23 of these landed in v0.4.5:
| #157 | @gpechieu | inherited Claude Code session markers are stripped from an agent's PTY env |
| #158 | @gpechieu | semantic memory works on Apple Silicon again: embeddings are pinned to CPU on macOS |
| #159 | @gpechieu | reliable spawn, teardown and floor cards for the workers Michael hires |
| #165 | @rajpreetcodes | a ~ in the harness home folder resolves, so setup cannot die on ENOENT |
| #171 | @KrushanPatel | CONTRIBUTING.md matches the platforms the app actually supports |
| #175 | @rekcilyssup | a main-process watchdog wakes an idle worker sitting on an undrained inbox |
| #176 | @FenjuFu | Gemini CLI joins the engine list |
| #177 | @TTAWDTT | each agent's live context-window occupancy shows in the roster |
| #178 | @gpechieu | a god-hired worker gets a floor card, and it archives when the worker dies |
| #179 | @kdahal7 | statAbs expands ~, so a path resolves the same way on every platform |
| #181 | @TTAWDTT | webhook dispatch goes through an atomic add, so a stale ledger cannot overwrite it |
| #184 | @TTAWDTT | the per-agent steer queue is capped, which bounds memory on a stalled agent |
| #185 | @hyperstream-pro | mail to an id with no inbox is bounced and logged instead of dropped |
| #186 | @BUGHUNTER-SACHIN | tests cover the Notifications and Stop idle-detection branches |
| #187 | @hyperstream-pro | a stale inbox nudge no longer wakes an agent against an inbox that is already empty |
| #190 | @swarnendu19 | agent names can be edited after spin-up |
| #199 | @amey-op | the Antigravity queue no longer wedges for 30 seconds |
| #203 | @lifelmy | the Crush config env points at the agent's own directory |
| #210 | @chaitanyagiri | the art licence claims are true again, Modern Interiors is bought |
| #214 | @pontusm | Windows agent processes quit when the app does |
| #219 | @chaitanyagiri | engine availability is checked before Michael's engine is committed |
| #226 | @chaitanyagiri | the floor reports lifetime spend, not spend since the last app restart |
| #227 | @scy73 | the renderer runs inside Chromium's sandbox |
Four of the fixes above are @gpechieu's and three are
@TTAWDTT's. Thank you, and thank you to everyone who reviewed a
pull request or filed the bug that led to one.
⤓ Downloads
Latest builds for every platform. The macOS build is universal, one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.5-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64), recommended | Munder-Difflin-0.4.5-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.5-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.5-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
详细ChangeLogv0.4.4
2026年08月18日
Munder Difflin v0.4.4
A local hive of Claude Code, Antigravity, Codex, Grok & Copilot agents that run themselves — messaging,
routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in — see it in action, then grab a build below
What's new in 0.4.4
If you use Windows, this is the release that makes the app work. Agents could never
message each other there — they started, looked completely healthy, and quietly ignored one
another forever. That's fixed.
It's also the release that fixes the first five minutes. Setup could not be finished, and on a
brand-new install the parts that carry messages between agents never started until you quit and
reopened the app.
Windows
- Your agents can talk to each other. This never worked before. If you tried the app on
Windows and your team just sat there, that was this bug — not you. - Setup no longer runs off the edge of the screen.
The first five minutes
- Setup finishes. Accepting the suggested folder used to fail outright, and the folder box
was empty even though the text above promised a suggestion. Both fixed. - It tells you what's missing straight away, instead of walking you through four steps and
then sending you back to the first one. - A fresh install works immediately. Messages between agents, live status on the cards, and
"Restart & Continue" all used to stay dead until you restarted the app. Nothing said so.
New things
- Skills — see every skill your agents can use, browse 227 more, and install or remove them
in a click. - Prerequisites — one page in Settings that says which supporting tools you have, which you
don't, and what each one is for. A button asks Michael to set up whatever is missing. - Release notes you'll actually read — like this one. Updates can now bring a designed page
instead of a version number in the corner. - A card at the top of Settings with your version, plan, and a way to reopen these notes.
Dark mode
Rebuilt. Every button, box and input is drawn with a one-pixel border, and in dark mode
those borders were effectively invisible — so the whole app read as flat grey shapes. The
colours are re-tuned and checked for readability rather than picked by eye. Backgrounds are
softer, text is a warm off-white instead of glaring white, and the selected tab is legible again.
Everything else
Copy from a terminal comes back clean, with accents and dashes intact. Dictation pastes what you
just said. Images and screenshots open in the IDE. Michael sits first on the dock again and it's
obvious which agent you're looking at. Task cards stop going missing. Idle agents stop being told
to compact every hour. Grok 4.6 is selectable. The office stops drawing itself when nobody's
looking at it.
For the nerds — what actually happened, in detail
Windows: two separate bugs, one symptom.
The hive protocol reaches an agent as a command-line argument: multi-line, paren-heavy, ~6.1k
characters. A .cmd cannot be handed to CreateProcess, so any non-.exe target was spawned as
cmd.exe /d /s /c "<one pre-escaped string>". cmd.exe treats CR/LF as a statement separator
before quoting is considered, so the argument was truncated at its first newline — taking the
block that names inbox/ and outbox/ with it. Escaping cannot fix this: cmd.exe has no
backslash escape, every " toggles quote state, and no escape exists for a newline. The fix
decodes the npm shim to its interpreter and script and spawns that with an argv array, so
node-pty's MSDN/CRT escaping hands the whole prompt to CreateProcess (ceiling 32767, not 8191).
The first fix still missed OpenCode. opencode-ai's bin is ./bin/opencode.exe — a compiled
binary, not a JS script — so npm writes an interpreter-less shim ("%dp0%\..\opencode-ai\bin\opencode.exe" %*).
The resolver only modelled "interpreter + script" and returned null, falling straight back to the
truncating path for every Windows OpenCode install. Diagnosed on macOS by generating the exact
shim with npm's own cmd-shim package; the resolver now handles direct-executable shims, and the
previously silent fallback logs which target it could not decode.
First-run bootstrap. bootstrapHiveServices() runs once at app-ready and opens with
if (!hive.enabled()) return — and a fresh install has harnessHome: null at that moment.
Onboarding then sets it through config:update, which did not re-bootstrap. The message router
(hive.startRouter(), the poll loop draining outbox/ → inbox/), the hook server, the
telemetry collector and the mission scheduler all stayed dead for the entire session. changeHome
had always handled this by relaunching; onboarding does not relaunch. It now bootstraps on the
null → set transition. A second source also records the live session id, so "Restart & Continue"
has a resume key even when a hook never lands.
Onboarding. The folder field read window.process.env.HOME, which is always undefined
under contextIsolation: true with only cth bridged — so the "suggested" default could never
appear. It now suggests ~/HarnessAgents literally, which normalizeHiveHome/expandTilde
already expand at both the config-write boundary and ensureHarnessHome's mkdir. The overlay
also centres with margin: auto rather than align-items: center, because a centred flex item
that overflows is clipped at the top and unreachable by scrolling.
Dark mode. Text always measured fine (11–14:1). ink-300 measured 1.73–2.09:1 — and it is
the structural token, used 187 times, 93 of those as inset 0 0 0 1px. Below ~3:1 a one-pixel
line is not perceivable. It is now 3.4–4.0:1, the ground sits at luminance 0.009–0.020 rather than
near-black, and text is 0.71 rather than 0.84. The selected Command Center tab was painting
ink-900 (near-white in dark) on a light accent fill at 1.55–1.87:1; a new --cth-on-accent
token is dark in both themes and takes it to 7.0–8.5:1. The xterm palette re-states these values
because xterm takes literals, so it moved with them.
Release drops. A release body may carry an authored HTML page between `
<style> html, body { height: 100%; } body { overflow: hidden; } .stage { height: 100%; } .pg { position: absolute; opacity: 0; pointer-events: none; } .page { display: none; height: 100%; flex-direction: column; padding: clamp(24px, 4vw, 46px); } #pg1:checked ~ .stage .p1, #pg2:checked ~ .stage .p2, #pg3:checked ~ .stage .p3, #pg4:checked ~ .stage .p4, #pg5:checked ~ .stage .p5, #pg6:checked ~ .stage .p6 { display: flex; animation: rise .34s cubic-bezier(.2,.7,.3,1) both; } @Keyframes rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } } .content { flex: 1; min-height: 0; overflow-y: auto; } .center { display: flex; flex-direction: column; justify-content: center; } .nav { flex-shrink: 0; display: flex; align-items: center; gap: 12px; padding-top: 16px; margin-top: 12px; border-top: 1px solid var(--line); } .dots { display: flex; gap: 7px; flex: 1; } .dot { width: 7px; height: 7px; border-radius: 999px; background: rgba(20,19,26,.16); cursor: pointer; transition: background .2s, transform .2s; } .dot:hover { background: rgba(20,19,26,.34); } .dot.on { background: var(--accent); transform: scale(1.25); } .btn { cursor: pointer; border-radius: 999px; font-size: 13.5px; font-weight: 600; padding: 9px 18px; border: 1px solid var(--line); color: var(--ink-soft); user-select: none; transition: background .16s, color .16s; } .btn:hover { background: rgba(20,19,26,.04); } .btn.primary { background: var(--ink); border-color: var(--ink); color: #FBFAF8; } .btn.primary:hover { background: #2a2733; } .kicker { font-size: 11.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--accent); margin: 0 0 14px; } h1 { font-size: clamp(1.8rem, 4.4vw, 2.7rem); } .lede { margin-bottom: 1.4em; } .big { font-size: clamp(3.2rem, 10vw, 5.4rem); line-height: .92; letter-spacing: -.045em; font-weight: 700; margin: 0 0 .1em; background: linear-gradient(135deg, #14131A 20%, #1B7F5A 115%); -webkit-background-clip: text; background-clip: text; color: transparent; } .stat { display: flex; gap: 24px; flex-wrap: wrap; margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--line); } .stat b { display: block; font-size: 1.5rem; letter-spacing: -.03em; font-weight: 680; } .stat span { font-size: 12px; color: var(--ink-soft); } .tag { display: inline-block; font-size: 10.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--accent); background: rgba(27,127,90,.09); padding: 4px 9px; border-radius: 999px; } .quote { border-left: 2px solid var(--accent); padding-left: 15px; margin: 18px 0 0; color: var(--ink-soft); font-size: 14.5px; } .rows { list-style: none; padding: 0; margin: 0; } .rows li { display: grid; grid-template-columns: 96px 1fr; gap: 12px; align-items: baseline; padding: 7px 0; border-bottom: 1px solid var(--line); font-size: 13.5px; } .rows i { font-style: normal; font-size: 10px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-soft); } .rows b { font-weight: 620; } .rows p { margin: 1px 0 0; color: var(--ink-soft); font-size: 12.5px; } .card { border: 1px solid var(--line); border-radius: var(--radius); padding: 16px 18px; } .card h2 { margin: 10px 0 .2em; font-size: 1.15rem; } .card p { margin: 0; color: var(--ink-soft); font-size: 13.5px; } .split { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; } /* 16:10, not 4:3 — the taller ratio pushed the second row past the fold, and a drop page that scrolls cuts a sentence in half at the boundary. */ .split .placeholder { aspect-ratio: 16 / 10; } </style>Munder Difflin
0.4.4
The release where Windows finally joined the floor — and the first run stopped quietly failing.
The headline
Agents can talk to each other on Windows.
Roughly half of all downloads run on Windows, where agent-to-agent messaging had never worked at all.
Every agent booted, rendered, and looked completely healthy. None of them had been told they had an inbox.
Any CLI that is not an .exe was launched through cmd.exe, which cuts a multi-line argument at its first newline — taking the protocol block with it. Spawns now launch the real interpreter with an argument array, so the whole prompt survives.
The first five minutes
Setup finishes. The floor wakes up.
Four separate bugs sat on the very first thing a new user does.
- WizardThe suggested folder works
Accepting ~/HarnessAgents stored a literal tilde and died on ENOENT. It now resolves to a real path — and the field actually suggests it.
- WizardIt tells you at step one
An empty folder used to walk you through all four steps before bouncing you back. The panel no longer overflows a short screen either.
- HiveServices start at setup, not next launch
On a fresh install the message router, hooks and telemetry stayed dead until you restarted — so mail never moved and agents never reported.
- AgentsRestart & Continue has something to resume
The live session id is recorded from a second source, so continuing works even when a hook never lands.
New
Four things that were not here before.
Every skill your agents can use
What is installed across Claude Code, OpenCode and Codex — and a browsable catalog of 227 more, with search, filters, install and uninstall.
Whether you actually have the tools
MemPalace, uv, git and every agent engine, with live status and where each one sits on disk. One button asks Michael to fill in the gaps.
This page
Update notes used to be three clipped bullets in the corner. A release can now carry its own designed page, and you are reading the first one.
Rebuilt for reading
Every control border measured under 2:1 against its background, so the edges defining them were invisible. Re-tuned and measured, not eyeballed.
Everything else
The rest of the list.
- TerminalCopy comes back clean
The quote rail is stripped and terminals run in UTF-8, so an em dash survives the trip to another app.
- TerminalDictation pastes what you just said
- IDEImages open as images
PNG, SVG and embedded screenshots render. The title names the agent.
- AgentsRestart & Continue revives a dead agent
- AgentsGrok 4.6 in the model picker
- AgentsOpenCode runs the model you actually have
- BoardTask cards stop going missing
- HiveA wake nudge survives an odd message id
- HiveCompact fires once, not every hour
- HiveThe cost ledger is out of your git history
- OfficeThe floor stops rendering when nobody is looking
- LayoutMichael sits first on the dock again
One last thing
Thank you for running this on your own machine.
Every agent here starts on your hardware, in your folders, under your keys. Nothing about that changes.
If it has been useful, a star is the entire marketing budget. The button is just below this page.
Still new in 0.4.3 — Michael is the logo
The mark is a face now. Munder Difflin has always been an office you watch people work in,
and the icon was a pair of script initials on a gradient. It's Michael — your clone — drawn in
the app's own pixel art, on the brand yellow, looking straight back at you.
- One mark, everywhere. The dock icon on macOS, Windows and Linux, the site favicon and
header, the in-app toolbar, and the README all render the same portrait. No variant is a
redrawing of another. - The SVG is the source of truth. The mark is authored as pure vector — every pixel of the
sprite is a rect, with no fonts, no gradients and no filters — and every raster inbuild/
anddocs/is generated from it bytools/make-logo.cjs.
The old icon depended on the Lobster webfont being installed to render correctly. - Icons are native at every size. A real multi-resolution
.icns(16→1024, with the macOS
drop shadow) and a.icocarrying six sizes, plus a 32px favicon and a 180px apple-touch-icon,
so nothing is a downscale of a 512px image any more. - Brighter call-to-action buttons. The download button took its fill from the same token as
accent text, which has to stay dark enough to read on a white page — so on the light theme
it came out brown. Fills now have their own token and start at what used to be the hover colour.
[!NOTE]
Appearance only. No functional change in this release: the update carries the new icon into
your dock, and nothing else moves.
Still new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
[!NOTE]
This release changes wording only. Thegodagent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
[!NOTE]
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
Thanks
This release carries community work. Every one of these landed in v0.4.4:
| #129 | @gts-47 | "Restart & Continue" now works on an agent that already died |
| #130 | @gts-47 | one odd message id no longer silences an agent's wake nudge |
| #131 | @gts-47 | dictation pastes what you just said, not the clipboard's previous text |
| #132 | @gts-47 | a root cwd no longer resolves to the projects directory itself |
| #133 | @gts-47 | a frozen context reading no longer re-fires /compact forever |
| #134 | @gts-47 | the office floor stops rendering when nobody is looking at it |
| #143 | @gts-47 | Grok 4.6 in the model picker |
| #144 | @gts-47 | the cost ledger stays out of the hive's git history |
| #142 | @baziyer | renderer task-ledger lost updates — mutations are atomic now |
| #137 | @chaitanyagiri | the CLI's quote rail is stripped from copied selections |
Eight of the fixes above are @gts-47's. Thank you.
⤓ Downloads
Latest builds for every platform. The macOS build is universal — one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.4-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64) — recommended | Munder-Difflin-0.4.4-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.4-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.4-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
v0.4.4-rc.1
2026年08月18日
Munder Difflin v0.4.4
A local hive of Claude Code, Antigravity, Codex, Grok & Copilot agents that run themselves — messaging,
routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in — see it in action, then grab a build below
Important
If you are reading this on a -rc pre-release page, download from the Assets list at the
bottom of THIS page — not from the table further down. Those table links point at
releases/latest, and GitHub deliberately excludes pre-releases from that, so they would hand
you the previous stable build instead. The same exclusion is why installing an rc does not put
the rest of the world on it: the in-app updater reads the same endpoint.
This pre-release exists to verify Windows. Agent-to-agent messaging on Windows is fixed here,
but the fix was written and unit-tested on macOS and has never been executed on a Windows
machine. If you are testing it: spawn an npm-installed engine (OpenCode), ask the agent where its
inbox and outbox are, and have two agents message each other. Please report anything that
misbehaves on the issue tracker.
What's new in 0.4.4 — Windows agents can finally talk to each other
On Windows, agents were never told they could message each other. They started, rendered,
and looked perfectly healthy — but a multi-line prompt handed to a CLI through cmd.exe is cut
off at its first newline, and the part that got cut was the protocol block naming an agent's
inbox and outbox. So no agent ever wrote mail, and none ever arrived.
- Agent-to-agent messaging works on Windows. Prompt-carrying spawns now run the CLI's real
interpreter directly instead of routing throughcmd.exe, so the whole protocol survives.
Anything we can't decode falls back to exactly today's behaviour. - Setup can finish again. Accepting the suggested
~/HarnessAgentsfolder wrote a literal
~, and the wizard then died onENOENT: mkdir '~/HarnessAgents'with the interface pushed
off-screen — on the very first thing a new user does. - Copying from a terminal is clean. The Edit menu was intercepting ⌘C before the terminal
saw it, so copies came back with the wrong text and with—mangled into‚Äî. - Agent terminals are UTF-8. They ran with no locale at all, so tools inside them fell back
to a 1980s character set and miscounted any non-English text. - Screenshots are visible. Images open in the IDE instead of "binary file (not displayable)",
and agent-written markdown reports finally render the screenshots they embed. - The IDE says whose workspace you're in, and points out the search shortcuts (⌘F, F1) that
were already there. - This notice tells you what changed. Updates used to announce only a version number.
- Task cards no longer vanish when two things edit the board at once; idle agents stop being
asked to compact every hour; "Restart & Continue" works on an agent that already died; an
unusual message id no longer silences an agent's mail permanently; the office floor stops
rendering while you're in a fullscreen terminal; Grok 4.6 is selectable.
Note
Windows users: this is the release that makes multi-agent work on Windows at all. If you
tried it before and your agents sat there ignoring each other, that was this bug.
Still new in 0.4.3 — Michael is the logo
The mark is a face now. Munder Difflin has always been an office you watch people work in,
and the icon was a pair of script initials on a gradient. It's Michael — your clone — drawn in
the app's own pixel art, on the brand yellow, looking straight back at you.
- One mark, everywhere. The dock icon on macOS, Windows and Linux, the site favicon and
header, the in-app toolbar, and the README all render the same portrait. No variant is a
redrawing of another. - The SVG is the source of truth. The mark is authored as pure vector — every pixel of the
sprite is a rect, with no fonts, no gradients and no filters — and every raster inbuild/
anddocs/is generated from it bytools/make-logo.cjs.
The old icon depended on the Lobster webfont being installed to render correctly. - Icons are native at every size. A real multi-resolution
.icns(16→1024, with the macOS
drop shadow) and a.icocarrying six sizes, plus a 32px favicon and a 180px apple-touch-icon,
so nothing is a downscale of a 512px image any more. - Brighter call-to-action buttons. The download button took its fill from the same token as
accent text, which has to stay dark enough to read on a white page — so on the light theme
it came out brown. Fills now have their own token and start at what used to be the hover colour.
Note
Appearance only. No functional change in this release: the update carries the new icon into
your dock, and nothing else moves.
Still new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
Note
This release changes wording only. The god agent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
Note
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
⤓ Downloads
Latest builds for every platform. The macOS build is universal — one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.4-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64) — recommended | Munder-Difflin-0.4.4-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.4-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.4-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
详细ChangeLogv0.4.3
2026年08月13日
🎉 We are live on Product Hunt
It is the single best way to help other people find the project today — and
"here is what did not work for me" is a perfectly good comment.
Launch thread: Announcements #138
Munder Difflin v0.4.3
A local hive of Claude Code, Antigravity, Codex, Grok & Copilot agents that run themselves — messaging,
routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in — see it in action, then grab a build below
What's new in 0.4.3 — Michael is the logo
The mark is a face now. Munder Difflin has always been an office you watch people work in,
and the icon was a pair of script initials on a gradient. It's Michael — your clone — drawn in
the app's own pixel art, on the brand yellow, looking straight back at you.
- One mark, everywhere. The dock icon on macOS, Windows and Linux, the site favicon and
header, the in-app toolbar, and the README all render the same portrait. No variant is a
redrawing of another. - The SVG is the source of truth. The mark is authored as pure vector — every pixel of the
sprite is a rect, with no fonts, no gradients and no filters — and every raster inbuild/
anddocs/is generated from it bytools/make-logo.cjs.
The old icon depended on the Lobster webfont being installed to render correctly. - Icons are native at every size. A real multi-resolution
.icns(16→1024, with the macOS
drop shadow) and a.icocarrying six sizes, plus a 32px favicon and a 180px apple-touch-icon,
so nothing is a downscale of a 512px image any more. - Brighter call-to-action buttons. The download button took its fill from the same token as
accent text, which has to stay dark enough to read on a white page — so on the light theme
it came out brown. Fills now have their own token and start at what used to be the hover colour.
Note
Appearance only. No functional change in this release: the update carries the new icon into
your dock, and nothing else moves.
Still new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
Note
This release changes wording only. The god agent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
Note
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
⤓ Downloads
Latest builds for every platform. The macOS build is universal — one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.3-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64) — recommended | Munder-Difflin-0.4.3-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.3-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.3-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
详细ChangeLogv0.4.2
2026年08月13日
Munder Difflin v0.4.2
A local hive of Claude Code, Antigravity, Codex, Grok & Copilot agents that run themselves — messaging,
routing, and remembering, coordinated by your clone, Michael, who you talk to. Local-first and open source.
→ munderdiffl.in — see it in action, then grab a build below
What's new in 0.4.2 — Anonymous usage stats, done in the open
Munder Difflin now sends a small set of anonymous usage events (app opened, agent spawned,
feature used) so we can tell whether features are actually used. It is built the way an
open-source project should build it:
- TELEMETRY.md is the
complete contract. Every event and property is listed there, and the code enforces that list
as a hard allowlist — anything not in the table cannot be sent. No prompts, no transcripts, no
file paths, no repo names, no identifiers. Events are PostHog anonymous events (no person
profile, no identity), keyed by a random UUID you can delete. - Opt-out, three ways. Uncheck it during onboarding, flip Settings → General → Anonymous
usage stats, or set the standardDO_NOT_TRACKenv var. - Forks send nothing. The analytics key is injected only in release CI — building from
source produces a build where the analytics module is a complete no-op.
Still new in 0.4.1 — The app says what the site says
Michael is your clone. The website has been describing Munder Difflin as a clone of you that
works around the clock — the app still called it a "GOD agent." Now they match.
- Your clone, not the GOD agent. Michael is described as your clone throughout onboarding,
and his card on the floor carries a BOSS tag — he's the boss of the agents, you're still
the boss of him. - Onboarding was rewritten. It opens on what you actually get ("a clone of you, working
24/7") instead of a feature list, and the engine card no longer advertises three engines when
ten ship — Claude Code, Codex, Grok, Kimi, Antigravity, Qwen, OpenCode, Crush, pi and Copilot
are all named.
Note
This release changes wording only. The god agent id, the hive folder layout, and message
routing are untouched, so existing hives, memory, and running agents carry over exactly as they
are. Nothing to migrate.
Note
Auto-update carries you here from v0.3.7 or later. If you are still on v0.3.5 or v0.3.6,
those builds shipped the broken updater and need one manual install — grab the download below,
once.
Previously
- 0.4.0 — the brand grew up: one yellow "MD" mark across the dock icon, in-app logo, site
favicon, and munderdiffl.in; the landing page rebuilt around real screenshots and a live
pixel-floor sim; pricing reframed around Private Cloud and Private Network. - 0.3.9 — Settings → General answers "am I up to date?" directly, and removes 0.3.8's
usage-limit guard that never released held agents. - 0.3.8 — memory condensation works for the first time; a Triggers hub; one compaction
schedule instead of two; a readable commit history. - 0.3.7 — auto-update actually runs: a CommonJS/ESM import bug meant the native updater never
fired in any packaged build since v0.3.4, and the failure was swallowed by acatch. - 0.3.6 — a machine with nothing on it can run agents: Node and npm install themselves
(verified against the officialSHASUMS256.txt), hooks stopped dying with exit 127,~/dev/foo
paths resolve, and the office floor rebuilds itself after losing its GPU context. - 0.3.5 — a send now escape hatch for a paused message queue, and a compact Command
Center header. - 0.3.4 — talk mode that knows the floor, markdown previews, the IDE git time-machine
(history + branch compare), redesigned Settings, xAI Grok and Kimi Code, and a single
delivery gate for every automatic writer. Community work by
@gts-47 and @qschmick. - 0.3.3 — the built-in Monaco IDE, and GitHub Copilot CLI as the first community-contributed
engine (@anxkhn). - 0.3.2 — Realtime Michael: a voice channel to the GOD orchestrator.
- 0.3.1 — three more engines: OpenCode, Crush, and pi.dev.
Full history in the CHANGELOG.
⤓ Downloads
Latest builds for every platform. The macOS build is universal — one DMG that runs on both
Apple Silicon and Intel.
🍎 macOS
| Build | File |
|---|---|
| Universal (Apple Silicon + Intel) | Munder-Difflin-0.4.2-mac-universal.dmg |
🪟 Windows
| Build | File |
|---|---|
| Installer (x64) — recommended | Munder-Difflin-0.4.2-win-x64-setup.exe |
| Portable (x64, no install) | Munder-Difflin-0.4.2-win-x64-portable.exe |
🐧 Linux
| Build | File |
|---|---|
| AppImage (x86_64) | Munder-Difflin-0.4.2-linux-x86_64.AppImage |
📦 Source
Source code (zip) ·
Source code (tar.gz)
Verify your download:
SHA256SUMS.txt— thenshasum -a 256 -c SHA256SUMS.txt(macOS/Linux) orGet-FileHash(Windows).
The filenames above carry a version number, so they only resolve while this is the
latest release. If a link 404s you are reading an old release page — grab the current
build from the releases page,
which is always right.
First launch
- macOS — the build is signed with a Developer ID (hardened runtime). If macOS
still shows an "unidentified developer" warning on first open, right-click the app →
Open → Open once. After that, the first time agents touch a folder you'll get a
single macOS privacy prompt for Documents/Desktop/Downloads — allow it once and the
grant sticks (it covers theclaudeagents the app spawns), because the grant is bound
to the app's stable signature. - Windows — not code-signed yet; SmartScreen may show "Windows protected your PC" →
More info → Run anyway. - Linux — make the AppImage executable:
chmod +x Munder-Difflin-*.AppImage, then run it.
Requirements
- macOS 12+, Windows 10/11, or a modern Linux desktop
- Claude Code installed and on your
PATH(and/or the Antigravityagyor OpenAIcodexCLI for those providers) - A Claude Code subscription (Munder Difflin drives your existing
claudeCLI — it doesn't replace it) - For Realtime Michael (voice): your own OpenAI key with Realtime API access — without it the Talk button stays disabled
🛠 Build from source
git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install # rebuilds node-pty for Electron
npm run dev # launches the app with hot reloadNode 18+ and a C/C++ toolchain are required (Xcode CLT on macOS, Build Tools on Windows).
To produce installers yourself: npm run dist (current OS), or dist:mac / dist:win / dist:linux.
What's inside
- The simulation — every agent is a real
claude(oragy/codex/ local-provider) pseudo-terminal, visualized as an avatar on a watchable office floor (node-pty·xterm.js· Pixi.js). - Talk to Michael — a realtime voice channel to the GOD orchestrator that reads the hive and acts behind spoken echo-back confirmation, BYOK and main-only.
- Selectable engines + per-hire capabilities — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
- MemPalace — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~12ms.
- GOD orchestrator + hive — one agent you talk to routes work to specialists and stays autonomous, escalating only critical items (spend, destructive ops, scope) to you natively, through human-in-the-loop prompts. It can also spawn an ephemeral worker straight from Slack and tear it down safely.
- Plugs into your setup — your subscription, settings, skills, and MCP servers, plus an integrations registry with a write-only secret broker;
/remote-controlreaches the whole floor from your phone.
Full notes in the CHANGELOG.
Links
Website ·
Repo ·
Issues ·
Contribute ·
Become a patron
MIT-licensed. An affectionate parody — not affiliated with NBC's The Office or Dunder Mifflin.
详细ChangeLog