1- # Munder Difflin v0.3.1
1+ # Munder Difflin v0.3.2
22
33** A local hive of Claude Code, Antigravity & Codex agents that run themselves** — messaging,
44routing, and remembering, coordinated by a GOD orchestrator you talk to. Local-first and open source.
@@ -7,72 +7,65 @@ routing, and remembering, coordinated by a GOD orchestrator you talk to. Local-f
77
88---
99
10- ## What's new in 0.3.1 — * Three more engines: OpenCode · Crush · pi.dev*
11-
12- The floor gets three new coding CLIs, each usable as a ** worker and as Michael** , with
13- ** bring-your-own keys + local LLMs** :
14-
15- - ** OpenCode** (` opencode ` , the TypeScript agent) — wired via a ** native plugin** bridge
16- (` session.idle ` ): no traffic interception, provider-agnostic, works with local models.
17- - ** Crush** (` crush ` , Charmbracelet's Go TUI) — a ** proxy** bridge routes its LLM traffic through a
18- per-agent config so a hookless CLI still reports status and drains mail.
19- - ** pi.dev** (` pi ` , the Pi Coding Agent) — a ** hooks** bridge: a bundled extension maps Pi's
20- ` pi.on(event) ` lifecycle onto the hive, and auto-approves tools only when the floor is in auto mode.
21-
22- A new ** Settings → AI Engines** panel collects per-provider ** API keys** (stored * write-only* ,
23- encrypted, never shown again) and ** local base-URLs** (Ollama / LM Studio / vLLM) for these engines.
24-
25- > ** Heads-up:** these engines are integrated and selectable as god, but ** live end-to-end
26- > verification with real model calls is pending your BYOK keys / a local LLM** — verify on-device.
27- > Mail delivery doesn't wait on that: a new ** provider-agnostic PTY-quiescence idle fallback** flips
28- > any silent-but-busy agent back to idle, so the idle wake-nudge drains a god even if a bridge's
29- > turn-end signal never fires.
30-
31- Plus two reliability fixes: the ** message router now survives system sleep** (it re-arms and drains
32- the backlog on wake, so god→worker and agent↔agent mail keeps flowing after the laptop's been
33- closed), and ** Codex workers get full filesystem + auto-approval from spawn** (parity with Claude),
34- so a fresh Codex hive worker can do its protocol housekeeping without a permission prompt.
10+ ## What's new in 0.3.2 — * Realtime Michael: talk to the GOD orchestrator*
11+
12+ ** Talk to Michael.** The headline is ** Realtime Michael** — a low-latency ** voice channel to the
13+ GOD orchestrator** , running alongside the async terminal floor. Press ** Talk** , and Michael listens,
14+ answers, and * acts* in real time.
15+
16+ - ** Talk to the GOD orchestrator by voice.** A new low-latency realtime channel (OpenAI Realtime API
17+ over WebRTC) sits next to the async terminal. A ** Talk** toggle — on Michael's card and in any
18+ fullscreen terminal — opens a mic session with echo-cancellation, semantic-VAD turn-taking +
19+ barge-in, and a device picker. Michael runs his own persona and answers in a natural voice, with an
20+ ` Off → Connecting → Listening → Responding → Working ` state machine live on his card.
21+ - ** Reads the hive, acts behind echo-back confirm.** He reads the floor (tasks, board, memory,
22+ agents, activity, cost) and — behind a spoken ** echo-back confirmation** for anything destructive —
23+ creates and assigns work, dispatches agents, spawns and kills workers, and steers the floor. Every
24+ voice action is attributed to a distinct ** michael-voice** actor that pings the GOD terminal, so a
25+ voice-driven dispatch is auditable; there are hard refusals for killing the GOD agent or targeting
26+ all agents at once.
27+ - ** Voice read-layer over hive messages.** Michael can now read message * content* , not just
28+ metadata: a read/brief-only ` get_messages ` tool surfaces a ** full message by id, one mailbox, or
29+ the latest across the floor** — with ** all secret redaction done main-side** so the voice layer
30+ only ever receives already-redacted bodies (no provider / Slack / GitHub / AWS / Google key, JWT,
31+ PEM block, or ` Bearer ` token can leak). Read-only — it adds no new write path.
32+ - ** "Respond when done."** Voice-dispatched work reports back on its own: a completion watcher
33+ detects when a dispatched task finishes and ** pushes the event into the live session so Michael
34+ speaks it unprompted** ; if the session is closed, completions queue to a desktop notification and a
35+ warm-start on reconnect.
36+ - ** BYOK, main-only.** Bring-your-own OpenAI key: the key is decrypted ** main-only** , minted into
37+ short-lived ephemeral session tokens, and ** never reaches the renderer** . A live session cost meter
38+ sits by the Talk toggle, with a hard ** spend cap** and an ** idle auto-disconnect** so a
39+ forgotten-open mic can't run up a bill.
40+ - ** Slack hardening + maintenance.** Proactive Slack posting is ** off by default** (no sends without
41+ an explicit channel + thread), auto-compaction becomes a ** dedicated maintenance schedule**
42+ decoupled from standups (so editing standups can't silently drop it), and each agent now carries
43+ queryable ** per-agent environment metadata** with a working-directory validity guard.
44+
45+ > ** Live verification note.** The realtime voice loop is ** human-verified end-to-end** on a real
46+ > OpenAI key — connect → mic → Michael answers via the read tools, and the full destructive path
47+ > (spoken echo-back confirm → spawn / kill / dispatch → worker appears on the floor → completion
48+ > spoken back) was exercised live. It requires ** your own OpenAI key with Realtime API access** ;
49+ > without one the ** Talk** button stays visibly disabled with a "needs OpenAI key" cue. The new
50+ > voice-message read-layer's redaction battery is unit-tested in lockstep with the main process; its
51+ > end-to-end voice read is human-gated like all realtime work.
3552
3653---
3754
38- ## What's new in 0.3.0 — * Selectable engines, integrations, and Slack-spawned workers*
39-
40- The biggest platform release yet: the floor stops being Claude-shaped. Every hire — and Michael
41- himself — becomes a ** pluggable engine** , each with its own consented skills + MCP catalog. A new
42- ** integrations registry** turns "connect a service" into a write-only, registry-driven Settings
43- flow. And Michael can now ** spawn an ephemeral worker straight from a Slack message** , reply, and
44- tear it down safely.
45-
46- - ** Selectable agent engines + per-hire capabilities.** A new engine abstraction makes the runtime
47- behind each agent pluggable — Claude Code, Antigravity, Codex, or a ** local provider** (a
48- claw/qwen backend proxy). Each hire carries its own ** manifest** of allowed skills + MCP servers
49- (default-deny over a shared catalog), with ** bundled skills** shipped in the app and a ** consent
50- UI** that surfaces every skill/MCP a hire wants before it can use it. Even ** Michael's own
51- engine** is swappable, with an Onboarding engine picker and a change-engine flow.
52- - ** Integrations registry + loopback secret broker.** A declarative integrations registry plus a
53- ** loopback secret broker** : secrets are ** write-only** (set once, never read back into the
54- renderer) and reached only through the broker. A ** registry-driven Settings UI** renders each
55- integration's config form from the spec, with a first wave of declarative templates.
56- - ** God-triggered ephemeral Slack worker loop.** Michael spawns an isolated worker in response to a
57- Slack request, the worker posts its reply back into the thread, and it's then ** torn down
58- safely** — with ** worktree GC** , ** per-worker token caps** , and a teardown gate that never
59- auto-discards unintegrated work. Live workers show up in a new ** Workers tab** .
60- - ** Temporal date-range skills + worker capability catalog.** Date-range skills (today / yesterday /
61- thisWeek / lastWeek / thisMonth / thisQuarter / thisYear / lastMonth / last7Days / last30Days …)
62- resolve a named window to concrete ISO dates, and each spawned worker can read a ** capability
63- catalog** of exactly which skills and brokered integrations it has.
64- - ** Provider / Hive picker + Agent Gallery.** A visual ` HivePicker ` with real provider logos lands
65- in onboarding and add-agent, * The Hiring Fair* is rebranded to the ** Agent Gallery** with ** six
66- off-the-shelf hires** , onboarding is now feature-aware (with a permissions & reliability step),
67- and the engine-CLI installer runs ** visibly** when a binary is missing.
68- - ** Wake-reliability hardening.** Wedged terminals are ** auto-revived on wake** , and ** missed
69- schedules are caught up** when the machine wakes instead of being silently skipped.
70- - ** Security:** the ` integrations:test ` probe path is ** confined** so it can't be turned into a
71- secret-exfiltration or SSRF primitive.
72-
73- Everything from ** v0.2.8** (shareable hires + the gallery) and earlier — Free Flow voice dictation,
74- the enterprise Knowledge Graph, multi-window "floors", the rich message composer, agent session
75- resume, and drag-a-file path injection — is included.
55+ ## What's new in 0.3.1 — * Three more engines: OpenCode · Crush · pi.dev*
56+
57+ The floor gained three new coding CLIs, each usable as a ** worker and as Michael** , with
58+ ** bring-your-own keys + local LLMs** : ** OpenCode** (` opencode ` ) via a native-plugin bridge,
59+ ** Crush** (` crush ` , Charmbracelet's Go TUI) via a per-agent proxy bridge, and ** pi.dev** (` pi ` ) via a
60+ hooks bridge. A new ** Settings → AI Engines** panel collects per-provider ** API keys** (stored
61+ write-only, encrypted) and ** local base-URLs** (Ollama / LM Studio / vLLM). Plus two reliability
62+ fixes: the ** message router now survives system sleep** (re-arms and drains the backlog on wake), and
63+ ** Codex workers get full filesystem + auto-approval from spawn** (parity with Claude).
64+
65+ Everything from ** v0.3.0** (selectable engines, integrations registry + loopback secret broker,
66+ Slack-spawned ephemeral workers, Agent Gallery) and earlier — Free Flow voice dictation, the
67+ enterprise Knowledge Graph, multi-window "floors", the rich message composer, agent session resume,
68+ and drag-a-file path injection — is included.
7669See the [ CHANGELOG] ( https://github.com/chaitanyagiri/munder-difflin/blob/main/CHANGELOG.md ) for full detail.
7770
7871---
@@ -85,22 +78,22 @@ Apple Silicon and Intel.
8578### 🍎 macOS
8679| Build | File |
8780| ---| ---|
88- | Universal (Apple Silicon + Intel) | [ ` Munder-Difflin-0.3.0 -mac-universal.dmg ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.0 -mac-universal.dmg ) |
81+ | Universal (Apple Silicon + Intel) | [ ` Munder-Difflin-0.3.2 -mac-universal.dmg ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.2 -mac-universal.dmg ) |
8982
9083### 🪟 Windows
9184| Build | File |
9285| ---| ---|
93- | Installer (x64) — * recommended* | [ ` Munder-Difflin-0.3.0 -win-x64-setup.exe ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.0 -win-x64-setup.exe ) |
94- | Portable (x64, no install) | [ ` Munder-Difflin-0.3.0 -win-x64-portable.exe ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.0 -win-x64-portable.exe ) |
86+ | Installer (x64) — * recommended* | [ ` Munder-Difflin-0.3.2 -win-x64-setup.exe ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.2 -win-x64-setup.exe ) |
87+ | Portable (x64, no install) | [ ` Munder-Difflin-0.3.2 -win-x64-portable.exe ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.2 -win-x64-portable.exe ) |
9588
9689### 🐧 Linux
9790| Build | File |
9891| ---| ---|
99- | AppImage (x86_64) | [ ` Munder-Difflin-0.3.0 -linux-x86_64.AppImage ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.0 -linux-x86_64.AppImage ) |
92+ | AppImage (x86_64) | [ ` Munder-Difflin-0.3.2 -linux-x86_64.AppImage ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/Munder-Difflin-0.3.2 -linux-x86_64.AppImage ) |
10093
10194### 📦 Source
102- [ Source code (zip)] ( https://github.com/chaitanyagiri/munder-difflin/archive/refs/tags/v0.3.0 .zip ) ·
103- [ Source code (tar.gz)] ( https://github.com/chaitanyagiri/munder-difflin/archive/refs/tags/v0.3.0 .tar.gz )
95+ [ Source code (zip)] ( https://github.com/chaitanyagiri/munder-difflin/archive/refs/tags/v0.3.2 .zip ) ·
96+ [ Source code (tar.gz)] ( https://github.com/chaitanyagiri/munder-difflin/archive/refs/tags/v0.3.2 .tar.gz )
10497
10598> ** Verify your download:** [ ` SHA256SUMS.txt ` ] ( https://github.com/chaitanyagiri/munder-difflin/releases/latest/download/SHA256SUMS.txt ) — then ` shasum -a 256 -c SHA256SUMS.txt ` (macOS/Linux) or ` Get-FileHash ` (Windows).
10699
@@ -127,6 +120,7 @@ Apple Silicon and Intel.
127120- macOS 12+, Windows 10/11, or a modern Linux desktop
128121- [ Claude Code] ( https://claude.com/claude-code ) installed and on your ` PATH ` (and/or the Antigravity ` agy ` or OpenAI ` codex ` CLI for those providers)
129122- A Claude Code subscription (Munder Difflin drives your existing ` claude ` CLI — it doesn't replace it)
123+ - For ** Realtime Michael** (voice): your own ** OpenAI key with Realtime API access** — without it the ** Talk** button stays disabled
130124
131125---
132126
@@ -144,6 +138,7 @@ To produce installers yourself: `npm run dist` (current OS), or `dist:mac` / `di
144138
145139## What's inside
146140- ** 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).
141+ - ** 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.
147142- ** Selectable engines + per-hire capabilities** — each hire (and Michael himself) runs on a pluggable engine, with its own consented skills + MCP catalog.
148143- ** MemPalace** — a markdown-first, semantic memory layer the whole office shares; cross-session recall in ~ 12ms.
149144- ** 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.
0 commit comments