chaitanyagiri/munder-difflinPublic

A local multi-agent harness that works with your existing Claude Code, Codex subscriptions, allows you to run an office of agents

AI summary: Multi-agent harness that runs an office of AI coding clones coordinated locally on your machine.

Stars
6.6K
+152 today
Forks
853
Watchers
27
Open issues
94
Open PRs
74
Contributors
~43
Commits
1.1K
Branches
70

TypeScriptMITCreated May 31, 2026Last push 2d agoLatest release v0.4.6+1.1K stars this week+4K this month

Star history

since May 31, 2026
02K4K6KMay 2026Jul 2026Aug 2026Sep 2026
6.6K stars as of Sep 8, 2026, tracked back to May 31, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 3 commits2026-06-01: 13 commits2026-06-02: 2 commits2026-06-03: 8 commits2026-06-04: 71 commits2026-06-05: 12 commits2026-06-06: 39 commits2026-06-07: 76 commits2026-06-08: 19 commits2026-06-09: 21 commits2026-06-10: 17 commits2026-06-11: 11 commits2026-06-12: 1 commit2026-06-13: 18 commits2026-06-14: 2 commits2026-06-15: 4 commits2026-06-16: 5 commits2026-06-17: 0 commits2026-06-18: 8 commits2026-06-19: 22 commits2026-06-20: 0 commits2026-06-21: 3 commits2026-06-22: 12 commits2026-06-23: 13 commits2026-06-24: 0 commits2026-06-25: 3 commits2026-06-26: 24 commits2026-06-27: 19 commits2026-06-28: 0 commits2026-06-29: 3 commits2026-06-30: 1 commit2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 12 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 2 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 2 commits2026-07-23: 6 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 3 commits2026-07-28: 2 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 4 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 13 commits2026-08-05: 1 commit2026-08-06: 20 commits2026-08-07: 4 commits2026-08-08: 7 commits2026-08-09: 1 commit2026-08-10: 4 commits2026-08-11: 10 commits2026-08-12: 4 commits2026-08-13: 18 commits2026-08-14: 10 commits2026-08-15: 9 commits2026-08-16: 11 commits2026-08-17: 30 commits2026-08-18: 11 commits2026-08-19: 33 commits2026-08-20: 26 commits2026-08-21: 21 commits2026-08-22: 67 commits2026-08-23: 9 commits2026-08-24: 16 commits2026-08-25: 5 commits2026-08-26: 20 commits2026-08-27: 32 commits2026-08-28: 1 commit2026-08-29: 1 commit2026-08-30: 1 commit2026-08-31: 4 commits2026-09-01: 2 commits2026-09-02: 3 commits2026-09-03: 2 commits2026-09-04: 1 commit2026-09-05: 2 commits2026-09-06: 1 commit2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits
861 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Breakout launch

    6,638 stars in 102 days

  • Rising fast

    +1,069 stars this week

  • Very active

    861 commits in 52 weeks

  • Well documented

    High community health score

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

  • Repeat trending

    8 trending appearances

What munder-difflin does

Munder Difflin is a powerful local desktop application that transforms standalone, single-agent CLIs into an organized, collaborative office of AI workers. It effectively wraps existing subscriptions and coding CLIs (such as Claude Code, Codex, Grok, and Pi) into independent, headless workers. A centralized AI clone named Michael serves as the orchestrator, intelligently routing tasks, coordinating communication, and managing a shared memory space. It visualizes this complex system through a dynamic virtual office floor using a React and Pixi.js frontend. Under the hood, it utilizes a highly performant, markdown-first semantic memory layer to ensure instant recall across sessions.

Developers aiming to manage multiple autonomous coding agents simultaneously without relying on expensive, centralized multi-agent cloud platforms. It is tailored for advanced users requiring parallel execution and visual coordination across diverse toolsets.

  • Multi-agent coordination: Utilizes a master orchestrator agent to intelligently route and assign tasks across multiple specialized worker agents.
  • Provider wrapping: Seamlessly wraps standard terminal CLIs like Claude Code, Gemini, and GitHub Copilot into fully capable, headless workers.
  • Local execution: Runs entirely on your own machine using Electron, React, and node-pty to ensure privacy and low latency.
  • Visualized office floor: Represents active background agents as interactive avatars working dynamically in a shared virtual workspace.
  • Bring-your-own keys: Leverages user-provided API keys or local LLMs to efficiently bypass centralized subscription constraints.
  • Instant semantic recall: Maintains a markdown-first memory layer providing agents with immediate access to cross-session knowledge.
  • Isolated git worktrees: Ensures parallel agents never collide by providing each with optional, isolated git worktrees.

Where teams use it

Coordinating complex coding tasks

Breaking down a large repository refactor into smaller tasks and routing them to distinct LLM workers based on their strengths.

Background development

Setting up a persistent team of coding agents to continuously work on feature branches while you are away from the keyboard.

Visualizing AI workflows

Using the Pixi.js avatar interface to graphically monitor which AI provider is actively executing commands in real-time.

Avoiding single-model limits

Distributing workloads across various provider APIs (Claude, Grok, Gemini) to maximize overall hourly rate limits.

Getting started: git clone https://github.com/chaitanyagiri/munder-difflin.git

README

main branch
Munder Difflin — agent harness to run an office of your clones

Munder Difflin

Agent harness to run an office of your clones

GitHub Trending — #1 Repository of the Day Munder Difflin — #5 Product of the Day on Product Hunt

The Munder Difflin office floor: agents at desks working in parallel, with the Command Center and a live agent terminal on the right

Free, open source and performant — a multi-agent harness that works with the subscriptions you already pay for, on their hourly limits. It turns the terminal coding CLI you already run into a clone of you, one that keeps working while you're away and coordinates a whole office of agents on your own machine.

Wraps Claude Code, Antigravity (Gemini), OpenAI Codex, xAI Grok, Kimi Code, Gemini CLI, Qwen, OpenCode, Crush, pi.dev, GitHub Copilot CLI, and Cursor — with bring-your-own keys and local LLMs. Agents that message, route, and remember, coordinated by your clone (Michael) and visualized as avatars at work on a shared office floor.

Electron · React · TypeScript · Pixi.js · xterm.js · node-pty

License: MIT Version: 0.4.6 Downloads across all releases Status: pre-release Platform: macOS | Windows | Linux PRs welcome Blog Discord




⬇ Download for macOS, Windows or Linux

macOS builds are signed and notarized. You do not need to build from source to use it.


Note

The world's best agents. The world's worst paper company. Munder Difflin takes the terminal-agent CLIs you already run — claude, agy, codex, grok, kimi, qwen, opencode, crush, pi, and copilot — and turns them into a self-coordinating team: each agent gets long-term memory, a mailbox, and a desk on a 2D office floor — and your clone (Michael) routes work between them while you watch. He's the boss of the floor; you're still the boss of him.

Contents

Supported agents

Bring the CLI you already pay for. Every one of these runs as a real process in its own terminal, with your existing subscription and its hourly limits. If it runs in a terminal, it can run here.

Claude Code Codex · GPT Grok · xAI Kimi Code Gemini CLI Antigravity · Gemini Qwen OpenCode Crush · Charm Pi GitHub Copilot Cursor + any custom command

Plus bring your own keys and local models through Ollama, LM Studio or vLLM.

What it is

Munder Difflin is a desktop app that wraps real terminal-agent CLIs as fully-capable agents, wires them into a hive mind, and puts your clone in charge — Michael, the one agent you talk to in order to get things done. Under the hood it runs the fastest memory layer in the world so every agent remembers what it learns and recalls it instantly.

  • Every terminal is an agent. Each claude, agy, codex, grok, kimi, qwen, opencode, crush, pi, copilot, or custom session runs as a real process in a pseudo-terminal (node-pty), byte-for-byte authentic, rendered with xterm.js.
  • Every agent is an avatar. Sessions appear as characters on a Pixi.js office floor — they walk to stations as they work, and envelopes fly desk-to-desk when they message each other.
  • The hive coordinates them. Agents read their memory and drain a mailbox; the router moves messages between inboxes; the GOD agent adjudicates, assigns, and escalates only when it needs you.
  • Memory that's instant. A markdown-first memory layer with a semantic recall index means agents remember across sessions and recall in milliseconds.

How it works

            you ── talk to ──►  ┌─────────────┐
                                │  GOD agent  │  orchestrator / supervisor
                                │ (Michael's  │  roster · routing · adjudication
                                │   office)   │  blackboard · task ledger
                                └──────┬──────┘
                                       │ assigns · routes · escalates
              ┌────────────────────────┼────────────────────────┐
              ▼                         ▼                         ▼
        ┌───────────┐            ┌───────────┐            ┌───────────┐
        │  agent A  │  message   │  agent B  │  message   │  agent C  │
        │ provider  │ ─────────► │ provider  │ ─────────► │ provider  │
        │  + memory │            │  + memory │            │  + memory │
        └───────────┘            └───────────┘            └───────────┘
              └──────── shared hive: memory · mailbox · blackboard · log ───────┘
  1. You spawn agents — each is a normal terminal process (claude, agy, codex, or custom) with its own working directory, identity, and provider-specific lifecycle.
  2. Agents collaborate through the hive — a local git repo of plain files. They write to their own outbox/; the harness's router delivers into recipients' inbox/. No agent ever touches git (single-committer design avoids index.lock corruption).
  3. The GOD agent runs the floor — it reads every request, resolves routine ones itself (keeping the system fully autonomous), and only escalates critical items (spend, destructive ops, scope changes) into an approvals queue you act on.
  4. Everything is visible — you watch avatars move, envelopes fly, and the live terminal stream; you can type back into any session, browse its files, and read its git history.

See HIVE.md for the full multi-agent design, SPEC.md for the terminal/event plane, and DESIGN.md for the visual system.

Features

Talk to one agent, not twelve

Michael is your clone and the only agent you brief. He assigns the work, routes the traffic, and escalates the few things that actually need you.

Briefing Michael, the orchestrator agent, from the Command Center

Hire an agent in a few clicks

Pick the CLI, the model and the autonomy, give it a desk, and it starts working. Import a ready made role from the Agent Gallery if you would rather not start from scratch.

The add agent dialog: choosing a provider, model and role

Memory that survives the session

Every agent keeps markdown memory that is mined into a shared, searchable palace. Close the app, come back tomorrow, and they still know what they learned.

Searching the shared memory palace across every agent

Autonomy with a leash

Set how far each agent may go on its own. Spend, scope and destructive operations come back to you, and a circuit breaker steers, constrains, then stops anything that loops or runs away.

Per agent autonomy and approval settings

Watch the whole floor work

Agents walk to stations as they work and envelopes fly desk to desk when they message each other. Click any desk to read that terminal live, and type straight back into it.

Agents working in parallel on the office floor

Set up once

The onboarding wizard checks what you already have, and offers to install what is missing rather than sending you to a docs page.

The first run setup wizard

The floor

  • Every terminal is a real agent. Claude Code, Antigravity (Gemini), OpenAI Codex, xAI Grok, Kimi Code, Gemini CLI, Qwen, OpenCode, Crush, pi.dev, GitHub Copilot CLI, Cursor, or a custom command — each in its own node-pty PTY, rendered with xterm.js.
  • Every agent is an avatar. A Pixi.js office floor where agents walk to stations, envelopes fly desk to desk, and avatar state reflects real work.
  • A GOD orchestrator you talk to. It routes tasks, adjudicates traffic, and escalates only what needs a human. Or press Talk and run the floor by voice.
  • Per-agent git worktrees. Optional isolation so parallel agents never collide on branches.

Memory & coordination

  • The hive — per-agent memory, atomic-file mailboxes, a shared blackboard, an append-only event log, single-committer git.
  • Semantic recall — markdown memory mined into a shared palace, searchable from the UI, with condensation so it doesn't grow forever.
  • Enterprise Knowledge Graph — your own documents and policies, queryable by any agent.

Control & safety

  • Human gates — spend, scope, and destructive ops escalate to you. Steer mid-run or stop gracefully.
  • Circuit breaker — a steer → constrain → stop ladder for agents that loop, storm errors, or blow their budget.
  • Budgets & telemetry — per-agent token budgets, real cost from transcripts, a durable ledger, OTel spans, and a tool waterfall.

Command Center

  • Kanban tasks with dependencies, scheduled missions + heartbeat, live fleet monitoring, memory search, activity log, and a CI watcher.
  • Skills — what every agent can already do across Claude Code, OpenCode and Codex, plus a browsable catalog of 227 more with search, filters, install and uninstall.
  • Built-in Monaco IDE — file tree, editor tabs, save, plus CHANGES · HISTORY · COMPARE git rails with commit graph, diffs, branch compare, and guarded checkout. All fs/git access brokered through main.

Getting work in and out

  • Slack & webhooks — message a channel or POST a webhook; Michael can spawn an ephemeral worker, reply in-thread, and tear it down.
  • Shareable hires + Agent Gallery — import a role from a munderdifflin://hire link; import only pre-fills the form, a human still spawns it. Browse roles at the Agent Gallery.
  • BYOK keys + local LLMs — per-provider keys in a write-only secret broker, plus Ollama / LM Studio / vLLM base URLs. Guides: open models · Mac Mini.
  • Updates in one click: the title-bar badge runs the real update. It downloads the build for your machine, then restarts and installs it, and it reads latest once a check confirms you are current. A manual download is the fallback for when the updater cannot fetch the build itself. The first run afterwards opens that release's notes as a designed page rather than a version number.
  • Your language: English, Simplified Chinese and Arabic, with right to left layout for Arabic. English is the default and nothing changes until you pick another one in Settings. The app does not read your OS locale. All three app fonts ship inside the bundle, so nothing is fetched at boot.
  • Prerequisites — one Settings page showing which supporting tools (uv, git, Node, MemPalace, each agent CLI) you have, what each is for, and a button that asks Michael to install what is missing.

Note

Status: v0.4.6, the release where the app stops assuming everyone reads English left to right. The interface now runs in Simplified Chinese and Arabic, with right to left support. English stays the default and nothing changes until you pick a language in Settings, under General; the app never reads your operating system locale. All three app fonts now ship inside the bundle instead of loading from Google, which is blocked in mainland China and was breaking the interface for exactly the people the Chinese translation was for. An input method Enter no longer fires a send, a search or a rename while a candidate word is still being composed. 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. No Arabic reader has reviewed the wording yet. Also in this release: the update badge runs the real download and restart instead of handing you a disk image, the update check can no longer spin forever, Settings persists through one Save button, the model lists moved into a checked in catalog, and the ASK ME card renders markdown. On the security side: the name of the CLI an agent launches is validated before it is resolved against your PATH, the OS sandbox stays on in auto mode, and analytics stopped sending IP and derived location. Telemetry now counts the messages you send to an agent, a count and nothing else, with no text, length or hash of the body in any shape. 16 community pull requests from 13 contributors landed in this release, one of them (#213) re-implemented rather than merged. If you're on 0.3.8, update: that build's usage-limit guard never released the agents it held, and it has been removed entirely. macOS (signed & notarized), Windows, and Linux builds are on the releases page.

Getting started

Download the app

Most people want this one. Signed and notarized macOS builds, plus Windows and Linux, are on the latest release. Install it, open it, and the wizard takes you the rest of the way. You do not need Node, a toolchain, or this repository.

You do still need at least one agent CLI on your machine, and the app can install missing ones for you from Settings → Prerequisites.

Build from source

Everything below is for contributors and for people who want to run an unreleased build.

Prerequisites

  • macOS, Windows, or Linux.
  • Node.js 18+ and npm.
  • A C/C++ toolchain for node-pty's native addon — on macOS, install Xcode Command Line Tools:
    xcode-select --install
  • At least one supported agent CLI on your PATHClaude Code (claude, the default), Antigravity (agy), OpenAI Codex (codex), xAI Grok (grok), Kimi Code (kimi), Gemini CLI (gemini), Qwen (qwen), OpenCode (opencode), Crush (crush), pi.dev (pi), GitHub Copilot (copilot), or Cursor (cursor-agent). Most missing CLIs self-heal: the harness runs the installer in the terminal and continues into the new binary.
  • Optional: your own API keys and local LLMs in Settings → AI Engines (Ollama / LM Studio / vLLM).
  • Optional: the semantic memory index for instant cross-session recall — markdown memory works without it.

Install & run

git clone https://github.com/chaitanyagiri/munder-difflin.git
cd munder-difflin
npm install        # postinstall rebuilds node-pty against Electron's ABI
npm run dev        # launches the Electron app with hot reload

On first launch you'll go through the onboarding wizard, then land on the floor. Use Add agent to spawn your first session — the GOD agent seats itself in Michael's office automatically.

Other scripts

npm run build      # production build via electron-vite
npm run preview    # preview the production build
npm run typecheck  # type-check the node (main/preload) and web (renderer) projects

If node-pty fails to load after an Electron upgrade, re-run npm install (the postinstall hook runs electron-rebuild against the current Electron ABI).

Architecture

Two data planes feed one renderer: a terminal plane that owns the PTYs, the filesystem and git, and an event plane that runs the hive, the hook server and the router. The renderer talks to both only through a typed bridge.

The full diagrams, the module by module project structure, and the design system live in docs/ARCHITECTURE.md. They moved out of this file so it can explain the product rather than the codebase. Also see HIVE.md for the multi-agent design, SPEC.md for the terminal and event plane, and DESIGN.md for the visual system.

Roadmap

Shipped through v0.4.6: a Simplified Chinese and Arabic interface with right to left support and self-hosted fonts, twelve agent engines with BYOK keys and local LLMs, voice orchestration, the hive (memory · mailboxes · blackboard · event log), Command Center with kanban and weekday schedules, a built-in Monaco IDE with git rails, integrations registry + secret broker, Slack-spawned workers, shareable hires and the Agent Gallery, observability and the circuit breaker, durable persistence, session resume, multi-window floors, one click updates, a Skills browser, a live Prerequisites check, cost reporting folded from the ledger, semantic memory that works on Apple Silicon, and an updater that installs the build instead of pointing at it. Full history in CHANGELOG.md.

Next up:

  • More chat integrations — Telegram and richer chat bridges that pipe a channel into Michael's queue and route replies back out.
  • More engines & integration templates — keep growing the engine roster and the integrations registry.
  • Fuller avatar coverage — drive the remaining station visits and tool-bubbles entirely from real hook events.
  • Durable layout & command history — extend persistence to agent layout and per-session history.

Contributing

Contributions are welcome — this is pre-release software with a lot of surface area. Start with CONTRIBUTING.md. The short version: fork, npm install && npm run dev, keep npm run typecheck green, and derive any new UI from DESIGN.md tokens. Good first areas: wiring real hook events, the add-agent flow, the config drawer, and cross-platform work.

Important

Every pull request must show a before and an after — screenshots, or a recording when the thing moves — under the ### Before and ### After headings in the PR template. This is checked automatically and a PR without it does not merge. "My change has no UI" is not an exemption; it just changes what the evidence looks like. See Evidence is mandatory.

Questions, bugs, or want to show off your office? Join the Discord: https://discord.gg/SEDzP5ZPk5. Add your Discord handle to a PR and you'll get the employee of the month role when it merges.

Looking for somewhere to start? The good first issue list is kept stocked with small, self contained work that has a clear finish line.

Everyone whose code is in Munder Difflin is listed in CONTRIBUTORS.md. If that is you, it is yours to point at. The list is generated from the pull requests themselves and updates on its own, so you appear without having to ask. It also names the contributions that are in main but that GitHub shows as closed rather than merged, because that was our mistake to record and not theirs to explain.

Munder Difflin contributors

Telemetry

Official builds send a small set of anonymous usage events (app opened, agent spawned, feature used) — never prompts, code, file paths, or agent output. The complete event list, the anonymity guarantees, and the three ways to opt out (Settings toggle, DO_NOT_TRACK, or building from source — forks compile with no key and send nothing) are documented in TELEMETRY.md.

License

Important

Asset licensing. The bundled pixel art (tilesets and maps) is Modern Interiors - RPG Tileset [16X16] by LimeZu, used under the Complete Version licence, which permits editing and use in commercial and non-commercial projects. Credit to LimeZu is required by that licence and must stay in place. The Office cast is not LimeZu art. It is drawn procedurally in portraitArt.ts. See src/renderer/src/assets/ATTRIBUTION.md.

The source code is licensed under the MIT License — see LICENSE. The MIT grant covers the code only; the bundled pixel art is licensed separately from LimeZu and is carved out in LICENSE-ASSETS. Munder Difflin is an affectionate parody and is not affiliated with NBC's The Office or Dunder Mifflin.

Acknowledgements

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

39 total
  1. v0.4.6v0.4.6Aug 27, 202654.3K downloads

    <!-- RELEASE RUNNER, REQUIRED BEFORE YOU TAG: run RELEASE-CHECKLIST.md. Rehearse the updater on 0.4.6-rc.1 -> 0.4.7-rc.1 prereleases and pass the fault-injection checks BEFORE tagging the real release. This comment is not rendered in the published notes. --> # 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**](https://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 termina

  2. v0.4.7-rc.2v0.4.7-rc.2Aug 26, 2026pre-release154 downloads

    <!-- RELEASE RUNNER, REQUIRED BEFORE YOU TAG: run RELEASE-CHECKLIST.md. Rehearse the updater on 0.4.6-rc.1 -> 0.4.7-rc.1 prereleases and pass the fault-injection checks BEFORE tagging the real release. This comment is not rendered in the published notes. --> # 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**](https://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 fro

  3. v0.4.7-rc.1v0.4.7-rc.1Aug 26, 2026pre-release28 downloads

    <!-- RELEASE RUNNER, REQUIRED BEFORE YOU TAG: run RELEASE-CHECKLIST.md. Rehearse the updater on 0.4.6-rc.1 -> 0.4.7-rc.1 prereleases and pass the fault-injection checks BEFORE tagging the real release. This comment is not rendered in the published notes. --> # 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**](https://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 fro

  4. v0.4.6-rc.1v0.4.6-rc.1Aug 25, 2026pre-release85 downloads

    <!-- RELEASE RUNNER, REQUIRED BEFORE YOU TAG: run RELEASE-CHECKLIST.md. Rehearse the updater on 0.4.6-rc.1 -> 0.4.7-rc.1 prereleases and pass the fault-injection checks BEFORE tagging the real release. This comment is not rendered in the published notes. --> # 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**](https://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 fro

  5. v0.4.5v0.4.5Aug 22, 202627.2K downloads

    # 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**](https://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

Commits per week

last 52 weeks
1990Week of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 148 commitsWeek of 2026-06-07: 163 commitsWeek of 2026-06-14: 41 commitsWeek of 2026-06-21: 74 commitsWeek of 2026-06-28: 16 commitsWeek of 2026-07-05: 2 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 8 commitsWeek of 2026-07-26: 9 commitsWeek of 2026-08-02: 45 commitsWeek of 2026-08-09: 56 commitsWeek of 2026-08-16: 199 commitsWeek of 2026-08-23: 84 commitsWeek of 2026-08-30: 15 commitsWeek of 2026-09-06: 1 commitsSep 14, 2025Sep 6, 2026
861 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 1 commitsSun 1:00 — 4 commitsSun 2:00 — 10 commitsSun 3:00 — 13 commitsSun 4:00 — 6 commitsSun 5:00 — 2 commitsSun 6:00 — 0 commitsSun 7:00 — 2 commitsSun 8:00 — 4 commitsSun 9:00 — 7 commitsSun 10:00 — 2 commitsSun 11:00 — 7 commitsSun 12:00 — 1 commitsSun 13:00 — 2 commitsSun 14:00 — 2 commitsSun 15:00 — 1 commitsSun 16:00 — 7 commitsSun 17:00 — 3 commitsSun 18:00 — 7 commitsSun 19:00 — 2 commitsSun 20:00 — 1 commitsSun 21:00 — 6 commitsSun 22:00 — 3 commitsSun 23:00 — 14 commitsMon 0:00 — 9 commitsMon 1:00 — 10 commitsMon 2:00 — 11 commitsMon 3:00 — 10 commitsMon 4:00 — 4 commitsMon 5:00 — 0 commitsMon 6:00 — 1 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 1 commitsMon 11:00 — 4 commitsMon 12:00 — 1 commitsMon 13:00 — 10 commitsMon 14:00 — 3 commitsMon 15:00 — 2 commitsMon 16:00 — 4 commitsMon 17:00 — 7 commitsMon 18:00 — 13 commitsMon 19:00 — 3 commitsMon 20:00 — 4 commitsMon 21:00 — 4 commitsMon 22:00 — 4 commitsMon 23:00 — 3 commitsTue 0:00 — 11 commitsTue 1:00 — 3 commitsTue 2:00 — 14 commitsTue 3:00 — 7 commitsTue 4:00 — 0 commitsTue 5:00 — 1 commitsTue 6:00 — 0 commitsTue 7:00 — 7 commitsTue 8:00 — 2 commitsTue 9:00 — 1 commitsTue 10:00 — 2 commitsTue 11:00 — 3 commitsTue 12:00 — 4 commitsTue 13:00 — 4 commitsTue 14:00 — 0 commitsTue 15:00 — 6 commitsTue 16:00 — 2 commitsTue 17:00 — 0 commitsTue 18:00 — 1 commitsTue 19:00 — 1 commitsTue 20:00 — 0 commitsTue 21:00 — 4 commitsTue 22:00 — 8 commitsTue 23:00 — 4 commitsWed 0:00 — 3 commitsWed 1:00 — 4 commitsWed 2:00 — 11 commitsWed 3:00 — 6 commitsWed 4:00 — 6 commitsWed 5:00 — 1 commitsWed 6:00 — 4 commitsWed 7:00 — 0 commitsWed 8:00 — 2 commitsWed 9:00 — 4 commitsWed 10:00 — 0 commitsWed 11:00 — 5 commitsWed 12:00 — 5 commitsWed 13:00 — 2 commitsWed 14:00 — 3 commitsWed 15:00 — 1 commitsWed 16:00 — 2 commitsWed 17:00 — 6 commitsWed 18:00 — 1 commitsWed 19:00 — 9 commitsWed 20:00 — 2 commitsWed 21:00 — 0 commitsWed 22:00 — 5 commitsWed 23:00 — 8 commitsThu 0:00 — 11 commitsThu 1:00 — 5 commitsThu 2:00 — 27 commitsThu 3:00 — 4 commitsThu 4:00 — 15 commitsThu 5:00 — 21 commitsThu 6:00 — 4 commitsThu 7:00 — 1 commitsThu 8:00 — 1 commitsThu 9:00 — 5 commitsThu 10:00 — 22 commitsThu 11:00 — 10 commitsThu 12:00 — 6 commitsThu 13:00 — 6 commitsThu 14:00 — 3 commitsThu 15:00 — 5 commitsThu 16:00 — 9 commitsThu 17:00 — 7 commitsThu 18:00 — 4 commitsThu 19:00 — 8 commitsThu 20:00 — 4 commitsThu 21:00 — 6 commitsThu 22:00 — 9 commitsThu 23:00 — 4 commitsFri 0:00 — 5 commitsFri 1:00 — 22 commitsFri 2:00 — 19 commitsFri 3:00 — 6 commitsFri 4:00 — 7 commitsFri 5:00 — 2 commitsFri 6:00 — 1 commitsFri 7:00 — 0 commitsFri 8:00 — 1 commitsFri 9:00 — 1 commitsFri 10:00 — 1 commitsFri 11:00 — 2 commitsFri 12:00 — 0 commitsFri 13:00 — 4 commitsFri 14:00 — 5 commitsFri 15:00 — 0 commitsFri 16:00 — 1 commitsFri 17:00 — 4 commitsFri 18:00 — 0 commitsFri 19:00 — 1 commitsFri 20:00 — 2 commitsFri 21:00 — 22 commitsFri 22:00 — 3 commitsFri 23:00 — 3 commitsSat 0:00 — 5 commitsSat 1:00 — 6 commitsSat 2:00 — 7 commitsSat 3:00 — 3 commitsSat 4:00 — 9 commitsSat 5:00 — 3 commitsSat 6:00 — 9 commitsSat 7:00 — 0 commitsSat 8:00 — 3 commitsSat 9:00 — 6 commitsSat 10:00 — 15 commitsSat 11:00 — 9 commitsSat 12:00 — 12 commitsSat 13:00 — 2 commitsSat 14:00 — 3 commitsSat 15:00 — 13 commitsSat 16:00 — 4 commitsSat 17:00 — 1 commitsSat 18:00 — 9 commitsSat 19:00 — 18 commitsSat 20:00 — 16 commitsSat 21:00 — 5 commitsSat 22:00 — 4 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits814 (76%)
Community commits264 (24%)

1,078 commits in total over the last year.

DateListRankStars gained
Aug 30, 2026weekly#14+1,853
Aug 29, 2026weekly#14+1,853
Aug 28, 2026weekly#14+2,017
Aug 27, 2026weekly#11+2,192
Aug 22, 2026daily#6+507
Aug 21, 2026daily#6+507
Aug 20, 2026daily#3+795
Aug 19, 2026daily#2+306
  • codecrafters-io/build-your-own-x

    Master programming by recreating your favorite technologies from scratch.

    546.4K stars · Markdown

  • public-apis/public-apis

    A collective list of free APIs

    478.6K stars · Python

  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    455.3K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    389.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript