Skip to content

Releases: chaitanyagiri/munder-difflin

v0.4.5

Choose a tag to compare

@github-actions github-actions released this 22 Aug 07:11

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 says latest once 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.

<style> /* Self-contained on purpose. This page is rendered by the app people already have (0.4.4), whose frame knows nothing about the landing site palette, so every token, font and shadow is declared here rather than inherited. */ @import url("https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600&family=JetBrains+Mono:wght@400;500;600;700&display=swap"); :root { --paper: #FFFDF7; --cream: #F5F2E8; --cream-2: #F5ECD7; --white: #FFFFFF; --ink: #1B1B1B; --ink-dim: #57544C; --ink-faint: #8A867A; --yellow: #FFCA54; --sky: #72C2DF; --maroon: #B23A4E; --lilac: #E4DEFB; --peach: #FBDDBE; --mint: #D6F3E1; --sky-soft: #DCEFF7; --line: rgba(27,27,27,0.16); --mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace; --sans: "Geist", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } html, body { height: 100%; margin: 0; } body { overflow: hidden; background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 14.5px; line-height: 1.5; -webkit-font-smoothing: antialiased; } * { box-sizing: border-box; } /* Two pages, no JavaScript. Radio inputs plus :checked ~ sibling selectors do the paging; a is a real click target inside the sandbox. */ .pg { position: absolute; opacity: 0; pointer-events: none; } .stage { height: 100%; position: relative; } .page { display: none; height: 100%; flex-direction: column; position: relative; padding: clamp(20px, 3.6vw, 32px) clamp(20px, 4vw, 34px) clamp(14px, 2.2vw, 20px); } #pg1:checked ~ .stage .p1, #pg2:checked ~ .stage .p2 { display: flex; } @media (prefers-reduced-motion: no-preference) { #pg1:checked ~ .stage .p1, #pg2:checked ~ .stage .p2 { animation: rise .38s 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; padding: 0 12px 10px 0; } .content::-webkit-scrollbar { width: 8px; } .content::-webkit-scrollbar-thumb { background: var(--ink); } .content::-webkit-scrollbar-track { background: var(--cream); } .p1 .content { display: flex; flex-direction: column; justify-content: center; } /* Dotted paper grid behind the hero page, same as the site. */ .p1 { background: radial-gradient(var(--ink-faint) 1px, transparent 1px) 0 0 / 22px 22px var(--paper); } .p1::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(ellipse at 50% 40%, rgba(255,253,247,0) 25%, var(--paper) 85%); } .p1 > * { position: relative; } .eyebrow { font-family: var(--mono); font-size: 11px; font-weight: 500; letter-spacing: .26em; text-transform: uppercase; color: var(--ink-faint); margin: 0 0 12px; } h1 { font-family: var(--mono); font-weight: 600; letter-spacing: -.04em; line-height: 1.06; font-size: clamp(1.55rem, 4.4vw, 2.25rem); margin: 0 0 .5em; text-wrap: balance; } h1 .hl { color: var(--sky); } h1 .mr { color: var(--maroon); } .lede { font-size: clamp(.92rem, 1.8vw, 1.02rem); line-height: 1.55; color: var(--ink-dim); max-width: 60ch; margin: 0 0 18px; text-wrap: pretty; } .lede b, .card p b, .thanks p b, .foot b { color: var(--ink); font-weight: 600; } /* Cards: white or pastel, bold ink border, hard offset shadow. No radius. */ .card { background: var(--white); border: 3px solid var(--ink); box-shadow: 6px 6px 0 var(--ink); padding: 14px 16px 13px; border-radius: 0; } .card.lilac { background: var(--lilac); } .card.mint { background: var(--mint); } .card.peach { background: var(--peach); } .card.sky { background: var(--sky-soft); } .tag { display: inline-block; font-family: var(--mono); font-size: 9.5px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; background: var(--ink); color: var(--paper); padding: 4px 8px; } .card h2 { font-family: var(--mono); font-size: .98rem; letter-spacing: -.02em; font-weight: 600; margin: 9px 0 4px; line-height: 1.2; } .card p { font-size: 12.8px; line-height: 1.5; color: var(--ink-dim); margin: 0; } .two { display: grid; grid-template-columns: 1fr; gap: 16px; margin: 2px 0 0; } /* The wall ribbon: the site's dark band. */ .band { display: flex; align-items: center; gap: 16px; padding: 13px 16px; background: var(--ink) radial-gradient(rgba(255,255,255,.14) 1px, transparent 1px) 0 0 / 14px 14px; color: var(--paper); border: 3px solid var(--ink); box-shadow: 6px 6px 0 var(--ink); } .band .yr { font-family: var(--mono); font-size: 2.6rem; font-weight: 700; letter-spacing: -.05em; line-height: .9; color: var(--yellow); flex-shrink: 0; text-align: center; } .band .yr small { display: block; font-size: 9px; letter-spacing: .2em; font-weight: 500; color: var(--paper); opacity: .7; margin-top: 6px; } .band b { display: block; font-family: var(--mono); font-size: 13.5px; font-weight: 600; margin-bottom: 3px; } .band span { font-size: 12.5px; line-height: 1.45; opacity: .85; } /* Nav. The big next button sits centered at the bottom. */ .nav { flex-shrink: 0; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 12px; padding-top: 12px; margin-top: 12px; border-top: 2px solid var(--ink); } .nav .l { justify-self: start; } .nav .r { justify-self: end; } .btn { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; font-family: var(--mono); font-weight: 700; font-size: 13px; color: var(--ink); background: var(--white); border: 2px solid var(--ink); box-shadow: 4px 4px 0 var(--ink); padding: 10px 16px; text-decoration: none; white-space: nowrap; border-radius: 0; transition: transform .12s, box-shadow .12s; } .btn:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 var(--ink); } .btn:active { transform: translate(1px, 1px); box-shadow: 2px 2px 0 var(--ink); } .btn.primary { background: var(--yellow); font-size: 14.5px; padding: 13px 28px; } .btn.sm { font-size: 12px; padding: 7px 12px; box-shadow: 3px 3px 0 var(--ink); } .btn.sm:hover { box-shadow: 4px 4px 0 var(--ink); } .step { font-family: var(--mono); font-size: 10.5px; letter-spacing: .2em; color: var(--ink-faint); text-transform: uppercase; } /* Page two: the list. */ .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 2px; } ...
Read more

v0.4.4

Choose a tag to compare

@github-actions github-actions released this 18 Aug 02:38

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,...
Read more

v0.4.4-rc.1

v0.4.4-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 17 Aug 16:34

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 through cmd.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 ~/HarnessAgents folder wrote a literal
    ~, and the wizard then died on ENOENT: 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 in build/
    and docs/ is generated from it by tools/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 .ico carrying 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 standard DO_NOT_TRACK env 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.0the 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 a catch.
  • 0.3.6a machine with nothing on it can run agents: Node and npm install themselves
    (verified against the official SHASUMS256.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
Read more

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 13 Aug 11:23
fc0cd3a

🎉 We are live on Product Hunt

Upvote / leave a comment →

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 in build/
    and docs/ is generated from it by tools/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 .ico carrying 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 standard DO_NOT_TRACK env 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.0the 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 a catch.
  • 0.3.6a machine with nothing on it can run agents: Node and npm install themselves
    (verified against the official SHASUMS256.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 — then shasum -a 256 -c SHA256SUMS.txt (macOS/Linux) or Get-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 →
    OpenOpen 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 the claude agents 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 infoRun 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 Antigravity agy or OpenAI codex CLI for those providers)
  • A Claude Code subscription (Munder Difflin drives your existing claude CLI — 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 reload

Node 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 (or agy / codex / local-provider) pseudo-terminal, visualized as ...
Read more

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 13 Aug 09:43

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 standard DO_NOT_TRACK env 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.0the 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 a catch.
  • 0.3.6a machine with nothing on it can run agents: Node and npm install themselves
    (verified against the official SHASUMS256.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 — then shasum -a 256 -c SHA256SUMS.txt (macOS/Linux) or Get-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 →
    OpenOpen 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 the claude agents 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 infoRun 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 Antigravity agy or OpenAI codex CLI for those providers)
  • A Claude Code subscription (Munder Difflin drives your existing claude CLI — 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 reload

Node 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 (or agy / 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-control reaches 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.1

Choose a tag to compare

@github-actions github-actions released this 13 Aug 07:26

Munder Difflin v0.4.1

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.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.


Still new in 0.4.0 — The brand grew up

Munder Difflin looks like one product now. The dock icon, the in-app logo, the site favicon,
and munderdiffl.in all carry the same yellow "MD" mark — and the landing page was rebuilt to show
the real app instead of describing it.

  • New app icon on every platform. macOS gets a proper margined-and-shadowed .icns, Windows a
    full-bleed .ico, Linux a 1024px .png — all cut from the same yellow tile as the in-app logo.
  • The landing page shows the product. A looping screen recording in the hero, real screenshots
    of the Add Agent dialog, the memory panel, and Autonomy & Budgets, and a live pixel-floor sim in
    a yellow Pokédex shell.
  • Bright by default. The site now opens in light mode; dark is one click away and remembered.
  • Pricing, reframed. Two services carry the Teams story: Private Cloud (a dedicated
    sandbox VM per clone, 24/7) and Private Network (E2E-encrypted clone-to-clone wire).

Still new in 0.3.9 — Ask the app whether it's up to date

Settings → General now answers the question directly. It names the version you're running,
tells you whether that's the latest, and gives you one button that says what pressing it does:
Check for updatesDownload v0.4.0Restart to update. The toolbar chip beside the
logo has always carried this, but it goes blank when everything is fine — which is not somewhere
you go to ask.

  • The avatars in the fullscreen roster are bigger. They were drawn at 1× — an 18-pixel figure,
    too small to tell two hires apart at a glance, which is the tile's whole job.

Important

If you are on 0.3.8, update. That build shipped a usage-limit guard that never let go: agents
held behind a limit stayed held, the reset never landed, and resume now dropped them straight
back into the hold. The guard is removed entirely — 0.3.9 delivers messages the way 0.3.7 did.


Note

Auto-update carries you here from v0.3.7 or v0.3.8. 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.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 a catch.
  • 0.3.6a machine with nothing on it can run agents: Node and npm install themselves
    (verified against the official SHASUMS256.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.1-mac-universal.dmg

🪟 Windows

Build File
Installer (x64) — recommended Munder-Difflin-0.4.1-win-x64-setup.exe
Portable (x64, no install) Munder-Difflin-0.4.1-win-x64-portable.exe

🐧 Linux

Build File
AppImage (x86_64) Munder-Difflin-0.4.1-linux-x86_64.AppImage

📦 Source

Source code (zip) ·
Source code (tar.gz)

Verify your download: SHA256SUMS.txt — then shasum -a 256 -c SHA256SUMS.txt (macOS/Linux) or Get-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 →
    OpenOpen 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 the claude agents 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 infoRun 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 Antigravity agy or OpenAI codex CLI for those providers)
  • A Claude Code subscription (Munder Difflin drives your existing claude CLI — 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 reload

Node 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 (or agy / 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-control reaches 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 Mi...

Read more

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 11 Aug 23:20

Munder Difflin v0.4.0

A local hive of Claude Code, Antigravity, Codex, Grok & Copilot agents that run themselves — messaging,
routing, and remembering, coordinated by a GOD orchestrator 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.0 — The brand grew up

Munder Difflin looks like one product now. The dock icon, the in-app logo, the site favicon,
and munderdiffl.in all carry the same yellow "MD" mark — and the landing page was rebuilt to show
the real app instead of describing it.

  • New app icon on every platform. macOS gets a proper margined-and-shadowed .icns, Windows a
    full-bleed .ico, Linux a 1024px .png — all cut from the same yellow tile as the in-app logo.
  • The landing page shows the product. A looping screen recording in the hero, real screenshots
    of the Add Agent dialog, the memory panel, and Autonomy & Budgets, and a live pixel-floor sim in
    a yellow Pokédex shell.
  • Bright by default. The site now opens in light mode; dark is one click away and remembered.
  • Pricing, reframed. Two services carry the Teams story: Private Cloud (a dedicated
    sandbox VM per clone, 24/7) and Private Network (E2E-encrypted clone-to-clone wire).

Still new in 0.3.9 — Ask the app whether it's up to date

Settings → General now answers the question directly. It names the version you're running,
tells you whether that's the latest, and gives you one button that says what pressing it does:
Check for updatesDownload v0.4.0Restart to update. The toolbar chip beside the
logo has always carried this, but it goes blank when everything is fine — which is not somewhere
you go to ask.

  • The avatars in the fullscreen roster are bigger. They were drawn at 1× — an 18-pixel figure,
    too small to tell two hires apart at a glance, which is the tile's whole job.

Important

If you are on 0.3.8, update. That build shipped a usage-limit guard that never let go: agents
held behind a limit stayed held, the reset never landed, and resume now dropped them straight
back into the hold. The guard is removed entirely — 0.3.9 delivers messages the way 0.3.7 did.


Note

Auto-update carries you here from v0.3.7 or v0.3.8. 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.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 a catch.
  • 0.3.6a machine with nothing on it can run agents: Node and npm install themselves
    (verified against the official SHASUMS256.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.0-mac-universal.dmg

🪟 Windows

Build File
Installer (x64) — recommended Munder-Difflin-0.4.0-win-x64-setup.exe
Portable (x64, no install) Munder-Difflin-0.4.0-win-x64-portable.exe

🐧 Linux

Build File
AppImage (x86_64) Munder-Difflin-0.4.0-linux-x86_64.AppImage

📦 Source

Source code (zip) ·
Source code (tar.gz)

Verify your download: SHA256SUMS.txt — then shasum -a 256 -c SHA256SUMS.txt (macOS/Linux) or Get-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 →
    OpenOpen 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 the claude agents 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 infoRun 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 Antigravity agy or OpenAI codex CLI for those providers)
  • A Claude Code subscription (Munder Difflin drives your existing claude CLI — 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 reload

Node 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 (or agy / 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-control reaches 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.3.9

Choose a tag to compare

@github-actions github-actions released this 11 Aug 17:32

Munder Difflin v0.3.9

A local hive of Claude Code, Antigravity, Codex, Grok & Copilot agents that run themselves — messaging,
routing, and remembering, coordinated by a GOD orchestrator you talk to. Local-first and open source.

munderdiffl.in — see it in action, then grab a build below


What's new in 0.3.9 — Ask the app whether it's up to date

Settings → General now answers the question directly. It names the version you're running,
tells you whether that's the latest, and gives you one button that says what pressing it does:
Check for updatesDownload v0.4.0Restart to update. The toolbar chip beside the
logo has always carried this, but it goes blank when everything is fine — which is not somewhere
you go to ask.

  • The avatars in the fullscreen roster are bigger. They were drawn at 1× — an 18-pixel figure,
    too small to tell two hires apart at a glance, which is the tile's whole job.

Important

If you are on 0.3.8, update. That build shipped a usage-limit guard that never let go: agents
held behind a limit stayed held, the reset never landed, and resume now dropped them straight
back into the hold. The guard is removed entirely — 0.3.9 delivers messages the way 0.3.7 did.


Still new in 0.3.8

Memory condensation works for the first time. Claude Code changed how it names per-project
transcript directories, and the harness kept reading the old spelling. Nothing errored — an absent
directory reads as "no transcripts yet" — so the summarizer was blamed for a silence it had nothing
to do with, and every condense attempt still wrote a full backup before giving up.

  • Transcripts are found again, so condensation, the offline usage reconciler, and cross-cwd
    session resume all read the path Claude Code actually writes to. Found and diagnosed by
    @gts-47.
  • Triggers, in one place. Schedules, inbound webhooks, context rules and peer messaging now
    share a home in Settings, with a history of what fired and what it did.
  • Compaction stopped running twice. The hourly standup and the 2-hour context trigger were
    both asking for it, and turning the trigger off left the standup compacting anyway. One control
    now, and its off-switch means off. Duplicate /compact messages can no longer stack up in a
    queue and fire together.
  • The commit history is readable. It rendered through a library that overlapped its own rows,
    reserved a fixed 500px for the graph no matter how narrow the panel was, and never showed the
    commit message at all. It is drawn directly now and fits any width.
  • Dark mode fixes worth the name. Disabled buttons had labels at roughly 1.4:1 against their
    own fill, and the arrow on Send was painted in the same colour as the button behind it.
  • Panels fold. The IDE's git rail collapses to give the file tree its height back; the
    fullscreen roster collapses for a full-width terminal.
  • Codex hooks stopped timing out after one secondtimeout: 0 means one second to Codex,
    not "no timeout".

Note

Auto-update carries you here from v0.3.7 or v0.3.8. 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.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 a catch.
  • 0.3.6a machine with nothing on it can run agents: Node and npm install themselves
    (verified against the official SHASUMS256.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.3.9-mac-universal.dmg

🪟 Windows

Build File
Installer (x64) — recommended Munder-Difflin-0.3.9-win-x64-setup.exe
Portable (x64, no install) Munder-Difflin-0.3.9-win-x64-portable.exe

🐧 Linux

Build File
AppImage (x86_64) Munder-Difflin-0.3.9-linux-x86_64.AppImage

📦 Source

Source code (zip) ·
Source code (tar.gz)

Verify your download: SHA256SUMS.txt — then shasum -a 256 -c SHA256SUMS.txt (macOS/Linux) or Get-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 →
    OpenOpen 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 the claude agents 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 infoRun 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 Antigravity agy or OpenAI codex CLI for those providers)
  • A Claude Code subscription (Munder Difflin drives your existing claude CLI — 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 reload

Node 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 (or agy / 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-control reaches 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.3.8 — memory condensation works for the first time

Choose a tag to compare

@github-actions github-actions released this 11 Aug 17:20

Munder Difflin v0.3.8

A local hive of Claude Code, Antigravity, Codex, Grok & Copilot agents that run themselves — messaging,
routing, and remembering, coordinated by a GOD orchestrator you talk to. Local-first and open source.

munderdiffl.in — see it in action, then grab a build below


What's new in 0.3.8 — Memory condensation works for the first time

The floor has been forgetting everything, quietly, for months. Claude Code changed how it
names per-project transcript directories, and the harness kept reading the old spelling. Nothing
errored — an absent directory reads as "no transcripts yet" — so the summarizer was blamed for a
silence it had nothing to do with, and every condense attempt still wrote a full backup before
giving up.

  • Transcripts are found again, so condensation, the offline usage reconciler, and cross-cwd
    session resume all read the path Claude Code actually writes to. Found and diagnosed by
    @gts-47.
  • Triggers, in one place. Schedules, inbound webhooks, context rules and peer messaging now
    share a home in Settings, with a history of what fired and what it did.

Also in this release

  • Compaction stopped running twice. The hourly standup and the 2-hour context trigger were
    both asking for it, and turning the trigger off left the standup compacting anyway. One control
    now, and its off-switch means off. Duplicate /compact messages can no longer stack up in a
    queue and fire together.
  • The commit history is readable. It rendered through a library that overlapped its own rows,
    reserved a fixed 500px for the graph no matter how narrow the panel was, and never showed the
    commit message at all. It is drawn directly now and fits any width.
  • Dark mode fixes worth the name. Disabled buttons had labels at roughly 1.4:1 against their
    own fill, and the arrow on Send was painted in the same colour as the button behind it.
  • Panels fold. The IDE's git rail collapses to give the file tree its height back; the
    fullscreen roster collapses for a full-width terminal.
  • Codex hooks stopped timing out after one secondtimeout: 0 means one second to Codex,
    not "no timeout".

Note

Auto-update carries you here from v0.3.7. 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.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 a catch.
  • 0.3.6a machine with nothing on it can run agents: Node and npm install themselves
    (verified against the official SHASUMS256.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.3.8-mac-universal.dmg

🪟 Windows

Build File
Installer (x64) — recommended Munder-Difflin-0.3.8-win-x64-setup.exe
Portable (x64, no install) Munder-Difflin-0.3.8-win-x64-portable.exe

🐧 Linux

Build File
AppImage (x86_64) Munder-Difflin-0.3.8-linux-x86_64.AppImage

📦 Source

Source code (zip) ·
Source code (tar.gz)

Verify your download: SHA256SUMS.txt — then shasum -a 256 -c SHA256SUMS.txt (macOS/Linux) or Get-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 →
    OpenOpen 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 the claude agents 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 infoRun 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 Antigravity agy or OpenAI codex CLI for those providers)
  • A Claude Code subscription (Munder Difflin drives your existing claude CLI — 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 reload

Node 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 (or agy / 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-control reaches 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.3.7

Choose a tag to compare

@github-actions github-actions released this 08 Aug 15:19
7aba9ab

Munder Difflin v0.3.7

A local hive of Claude Code, Antigravity, Codex, Grok & Copilot agents that run themselves — messaging,
routing, and remembering, coordinated by a GOD orchestrator you talk to. Local-first and open source.

munderdiffl.in — see it in action, then grab a build below


What's new in 0.3.7 — Auto-update, fixed

Auto-update never actually ran. Not once, in any packaged build, since it shipped in
v0.3.4. electron-updater is a CommonJS module that exposes autoUpdater through a lazy
getter, which Node's module lexer can't see — so await import('electron-updater') handed
back undefined, and the very first line of setup threw
TypeError: Cannot set properties of undefined (setting 'autoDownload'). That landed in a
catch that silently switched the app to notify-only mode, which is why the only thing it
could ever offer was a link to the releases page. It never showed up in testing because the
whole path is skipped in development.

  • The native updater works. New releases download in the background and wait for your
    click. macOS builds are Developer ID signed, notarized, and stapled, so the update installs
    cleanly.
  • The version in the toolbar is now the update button. Top-left, next to the logo: it
    shows checking…, then v0.3.8 ready to install, then live download progress, then
    restart to update. With nothing pending, clicking it checks on demand — previously the
    app only ever checked 30 seconds after launch and then every six hours, with no way to ask.
  • Nothing fails silently any more. Update errors now reach the UI and an updater.log
    in the app's data folder. The old code threw the error away, which is exactly why this
    survived three releases.
  • One network blip no longer disables updates for the session. The fallback to
    notify-only is now per-check instead of a permanent latch, and a re-check can't wipe out an
    update you've already got staged.

Important

If you're on v0.3.5 or v0.3.6, this one is a manual install. Those builds carry the
broken updater, so they can't fetch this fix by themselves — grab the download below once.
From v0.3.7 onward, updates arrive on their own.


Previously

  • 0.3.6a machine with nothing on it can run agents: Node and npm install themselves
    (verified against the official SHASUMS256.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.3.2-mac-universal.dmg

🪟 Windows

Build File
Installer (x64) — recommended Munder-Difflin-0.3.2-win-x64-setup.exe
Portable (x64, no install) Munder-Difflin-0.3.2-win-x64-portable.exe

🐧 Linux

Build File
AppImage (x86_64) Munder-Difflin-0.3.2-linux-x86_64.AppImage

📦 Source

Source code (zip) ·
Source code (tar.gz)

Verify your download: SHA256SUMS.txt — then shasum -a 256 -c SHA256SUMS.txt (macOS/Linux) or Get-FileHash (Windows).

The links above always point at the latest release (/releases/latest/download/…),
so this page stays correct across versions.


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 →
    OpenOpen 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 the claude agents 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 infoRun 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 Antigravity agy or OpenAI codex CLI for those providers)
  • A Claude Code subscription (Munder Difflin drives your existing claude CLI — 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 reload

Node 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 (or agy / 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-control reaches 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.