Changelog

Every Mandeck release, newest first — the notes exactly as they shipped, with the download and update sizes read off the release itself.

RSS · /appcast.xml — the Sparkle feed the app already updates from.

2026-09-04
v0.1.6

Drive from your phone, and a settings that reads like sentences

Update from the pill, or Mandeck → Check for Updates. On 0.1.5 you get a ~0.5 MB delta.

  • Drive the deck from your phone. The paired-phone view (Away) is now full control, not just watch-and-reply: press real keys (^C, Esc, arrows, and digits to answer a picker), bring a pane to the Mac, resume an ended session, and start an agent with a first task. Two reading modes — a chat summary and the raw terminal. Still end-to-end encrypted, no account.
  • Settings, redesigned. Every setting is one row: a label, a plain-English line saying what it does, one control. Your agent CLIs live in one place (Agents) with their signed-in identity read straight from each tool's own login and their version. Updates is now just Mandeck itself — the app and the CLIs update on separate schedules and never get confused for each other.
  • A new pane opens beside the one you're in, not at the far edge.
  • Opening a project that's already running reveals it instead of stacking a duplicate.

Signed, notarized, stapled. Agent-facing reference: https://mandeck.dev/agents.

Mandeck.dmg · 19.2 MB·delta from 0.1.5 · 0.8 MB·notes on GitHub →
2026-09-03
v0.1.5

MCP to spec, and the deck won't close your panes

Update from the pill, or Mandeck → Check for Updates. Existing 0.1.4 users get a ~0.5 MB delta.

  • MCP server now speaks the current spec (2026-07-28): stateless, server/discover, tool annotations so a client can auto-approve reads and ask before actions, and job-lifecycle tools (deck_jobs, deck_job_done, deck_job_fail). A legacy initialize client still works.
  • The deck won't close a pane you opened. DELETE /v1/sessions now refuses a pane that an agent did not spawn through the API unless it passes force — closing the fix for a stale-address close that shut a live session.
  • CLI (mandeck): honest 409 on job spawn (one parseable line, exit 2), no more Python traceback when the deck is unreachable, new read verbs agents / jobs / events / messages, ps shows the stable pane uuid, and close --force.
`mandeck close p6` answered "not spawned by the API — this pane was opened by the human; pass ?force=1 … to close it anyway", and the raw `DELETE /v1/sessions/p6` returned the same refusal as JSON, carrying the pane's stable uuid. Run inside a pane of an isolated test deck, against that deck's own port.
mandeck close p6 answered "not spawned by the API — this pane was opened by the human; pass ?force=1 … to close it anyway", and the raw DELETE /v1/sessions/p6 returned the same refusal as JSON, carrying the pane's stable uuid. Run inside a pane of an isolated test deck, against that deck's own port.

Signed, notarized, stapled. Full agent-facing reference: https://mandeck.dev/agents.

Mandeck.dmg · 19.2 MB·delta from 0.1.4 · 0.5 MB·notes on GitHub →
2026-09-03
v0.1.4

The deck knows its engines

The ⌘N launcher now shows each agent CLI's real version and, where the CLI can answer for itself, whether it is signed in — with the CLI's own login command a hover away. The daily background self-update now refreshes the exact binary your panes run (login-shell PATH truth), and codex, copilot, and grok joined the auto-update table.

Mandeck.dmg · 19.2 MB·delta from 0.1.3 · 0.8 MB·notes on GitHub →
2026-09-01
v0.1.3

Self-documenting deck

The deck opens to agents.

  • Self-documenting deck — the API serves its own reference and clients: GET /agents.md, GET /cli/mandeck, GET /cli/mandeck-mcp.mjs (zero-dep stdio MCP server, 20 tools). Discovery chain: health → docs → everything.
  • Follow-up contracts — a spawn that hands over a task must be checked; unchecked work is reminded into the spawner's own terminal, then escalated to your attention bell. needs-review events for bots.
  • Job lifecycle — every spawn returns a job; done/failed come only from explicit signals (never inferred from silence); mandeck job spawn|send|wait|report|done|fail for orchestrators.
  • Safe spawncwd required, 409 (with the existing session) on duplicate agent+cwd unless forced.
  • Reactive permission grant — a blocked screen capture in a pane opens the drag-and-drop grant flow instead of stranding you at the OS dialog.
  • Every API-spawned pane exports MANDECK_PANE / MANDECK_JOB.
The reminder landing in the spawner's own terminal a minute after a tasked spawn nobody looked at — a `mandeck follow-up` line naming the pane (1.2, shell), how long ago it was spawned, that it is still running and that nobody has checked it, then "Read its screen (mandeck screen 1.2), verify the result, report back." plus the task. The spawner here is a plain shell, so zsh answers the reminder with `bad pattern`; an agent pane reads the same line as a prompt. Isolated test deck, `check_after` set to 1 minute.
The reminder landing in the spawner's own terminal a minute after a tasked spawn nobody looked at — a mandeck follow-up line naming the pane (1.2, shell), how long ago it was spawned, that it is still running and that nobody has checked it, then "Read its screen (mandeck screen 1.2), verify the result, report back." plus the task. The spawner here is a plain shell, so zsh answers the reminder with bad pattern; an agent pane reads the same line as a prompt. Isolated test deck, check_after set to 1 minute.

Docs: https://mandeck.dev/agents · Changelog: https://mandeck.dev/changelog

Mandeck.dmg · 19.1 MB·delta from 0.1.2 · 0.9 MB·notes on GitHub →
2026-08-29
v0.1.2

Agents resume on launch

Your work comes back when the app does.

  • Agents resume on launch. Reopen Mandeck — after a quit, an update, or an overnight reboot — and each pane that was running an agent re-attaches to that exact conversation, instead of showing dead history under a fresh shell. The prior output stays on top for context; the live agent picks up beneath it. On by default; turn it off in Settings → Updates. (Agents that can't truly resume are left as-is rather than silently started fresh.)
  • Updates without a second restart. Automatic updates now install when you quit, so the next launch is already the new version. Nothing installs mid-session, so a live pane is never interrupted.

Updates arrive automatically via the in-app updater.

Mandeck.dmg · 19.0 MB·delta from 0.1.1 · 0.6 MB·notes on GitHub →
2026-08-29
v0.1.1

Permissions that actually take

Reliability and polish.

  • Permissions that actually take. Granting Screen Recording or Accessibility now clears any stale grant pinned to an old build before the drag, so dropping Mandeck into the list works the first time instead of leaving a checked box that does nothing. The panel dismisses itself once the grant lands, the rows are ordered so the permanent ones come first, and there is no first-run popup — permissions live in Settings and wait until you need them.
  • Easier on the eyes at night. One calmer white point across the app chrome and the terminal, so the sidebar no longer reads brighter than the text it labels.
  • Under the hood: debug builds are isolated as “Mandeck Dev” with their own bundle id, so a local build can never disturb the installed app's permissions.

Updates from here arrive automatically via the in-app updater.

Mandeck.dmg · 19.0 MB·notes on GitHub →
2026-07-05
v0.1.0

First public release

First public build of Mandeck — the multi-agent terminal for Mac.

Three panes side by side in one deck, each in its own project folder: `git log --oneline` and the README of an `api-server` repo, a README with a `src/` listing and `package.json` in `web-app`, and a `docs` folder counting the lines in its markdown pages. Each pane header carries its own folder. Captured from an isolated test deck, panes opened over the Deck API.
Three panes side by side in one deck, each in its own project folder: git log --oneline and the README of an api-server repo, a README with a src/ listing and package.json in web-app, and a docs folder counting the lines in its markdown pages. Each pane header carries its own folder. Captured from an isolated test deck, panes opened over the Deck API.
  • Run Claude Code, Codex, Gemini, OpenCode, Cursor and any installed CLI agent in side-by-side native terminal panes (libghostty).
  • Manager (⌘I): an orchestrator chat that spawns agents, routes tasks, and answers waiting panes on autopilot.
  • Sessions: every run logged per project, ⌘K search, one-click resume.
  • Rides your existing subscriptions via your own CLI logins — no API key required, no token resale.
  • Built-in file viewer/editor, markdown rendering, voice dictation, bottom shell drawer.

Install: download Mandeck.dmg, open, drag to Applications. macOS 14+, Apple Silicon & Intel. Signed & notarized; auto-updates via Sparkle.

Mandeck.dmg · 12.9 MB·notes on GitHub →

Before 0.1.0

Every milestone since the first line of code — May 18, 2026, an Electron spike called mandeck-lite that was rebuilt native less than a month later. Curated: what shipped and stayed, not every commit.

September 2026
Sep 1

The deck doesn't let work slip

A spawn that hands over a task now opens a contract: check the work within check_after minutes or the deck collects — a follow-up reminder typed into the spawner's own terminal, a needs-review event for bots, and the human's attention bell if it's still ignored. Every agent pane knows its own name ($MANDECK_PANE), so reminders find the right orchestrator.

August 2026
Aug 31

The deck opens itself to agents

AGENTS.md becomes the canonical API reference; a zero-dependency MCP server and a CLI installer ship alongside. Then the deck starts serving its own docs and clients: GET /agents.md, GET /cli/mandeck, GET /cli/mandeck-mcp.mjs — any agent that can reach port 7717 gets the reference and a ready-to-run client from the same door. Public docs land at mandeck.dev/agents.

Aug 29

Two subscriptions, one deck v0.1.2

Per-account fuel gauges and in-place Claude account switching: a pane can move to your other plan without losing its conversation. Permission grants now survive app updates, a restarted pane opens with its history, and agents resume on launch.

Aug 16

Everything an agent needs, reachable by an agent

The API grows to the full loop — spawn, fan out one task across every repo, read screens and transcripts, press keys, answer a TUI picker from a phone tap. The phone view is served by the deck itself; permissions are asked once, at first run, never again.

Aug 14

The Deck API — one local door

One HTTP API on 127.0.0.1:7717 replaces every ad-hoc way into a running deck. Telegram becomes its first client; panes learn which subscription they spend.

July 2026
Jul 25

Phone pairing, end-to-end encrypted

Pair by QR + six-digit code (P-256, sealed frames). The phone lists sessions, shows the agent's own conversation — not a photograph of a terminal — and can rename, stop, start, and answer waiting agents. Proven on a real iPhone.

Jul 23

Voice, and a green build gate

The hands-free voice Manager merges after a 93-commit run: dictation, spoken attention announcements, on-device by default. The repo gets CI — every push builds the real app on a macOS runner.

Jul 10

Away MVP + the Fuel Gauge

First phone control for every CLI, and live quota meters for Claude and Codex — see what a session costs you in plan headroom, not vibes.

Jul 4

v0.1.0 — public v0.1.0

mandeck.dev goes live with a signed, notarized DMG and a Sparkle auto-update channel. The landing says what the product is for: build the thing that builds.

Jul 2

The Manager

⌘I opens an orchestrator that rides your own CLI logins — no proxy, no markup. It sees pane screens, hands work to agents, keeps a persistent brain in ~/.mandeck, takes dictation, and on autopilot answers waiting panes itself.

Jul 1

Sessions that survive

A session ledger with live status sync: the deck remembers what ran, where, and how it ended — the foundation every later surface (phone, API, history) reads from.

June 2026
Jun 30

The agent launcher

A spawn-ready catalog of 30 CLI agents with real logos and frecency ordering. Pick an agent, pick a folder, it's running — the deck's core gesture.

Jun 14

It becomes a Mac app

Titlebar tabs with smooth AppKit drag, pane drag-and-drop with edge washes, ⌘F find, Finder drops into terminals, Sparkle auto-update, notarized builds.

Jun 13

The native rebuild

The deck starts over in Swift: a native shell embeds libghostty and by nightfall runs a live terminal with a split-pane multiplexer. Day one of the rebuild ends with the decision that defines the product: own the surface — fork and vendor the terminal core.

Jun 11

The glass pass

A two-day design push on the Electron deck: window vibrancy and glass tokens, workspaces with versioned persistence, ⌘K command palette, settings, a file browser pane, terminal themes. By June 12 it is public-ready — and it is the last Electron commit. The next day, the rebuild.

May 2026
May 19

A deck you can rearrange

One day after birth: tabs move into the titlebar, panes drag by their header to rearrange the workspace, files drop from Finder into terminals, ⌘Q asks twice, and tabs/panes/cwd survive a restart. First packaged build ships the same day.

May 18

Mandeck is born

The first deck: an Electron spike called mandeck-lite — real terminal panes, a written spec, and the thesis that still holds: many coding agents, side by side, in one window you can actually run.