Skip to content
Install

Changelog

Read from GitHub Releases every half hour, so this page says what actually shipped.

Subscribe: RSS

Source: GitHub releases

MendCode Nightly — 2026-11-02 · Build 25

On GitHub

**v0.0.4-nightly.20261102.25** · Nightly · since v0.0.4-nightly.20261102.23 · built from ed8d2cdb87c7 15 changes since v0.0.4-nightly.20261102.23.

New

  • /pr setup checks prerequisites and configures repository reviews and publishing with one confirmation; a headless setup command is also available.
  • /voice setup guides dictation readiness and explicitly confirms audio uploads before enabling an API provider.
  • /graph setup enables and builds the project's code graph with one confirmation, without changing global defaults.

Changed

  • A terminal that hosts the daemon, and a separate daemon, hold less memory at the prompt.
  • The current-task row above the prompt is gone; the dock's Jobs panel is opt-in and Todos wrap with more room.
  • Completed streaming output uses less session storage while preserving historical cuts and reconnect replay.
  • Session history takes less disk: each event stores its session, number, time and type once, and existing history is converted in the background while the daemon is idle. Forked sessions also store less. Short sessions now take less disk than a Pi session file.
  • A finished short session stores fewer rows: settled state snapshots, empty file snapshots and request profiles take less room.

Fixed

  • OpenCode Go answers again: every request carries the session it belongs to, as Go now requires. OpenCode Zen gets it too.
  • Preserve terminal preferences and settings across versions, keep recovery history, and guard against accidental downgrades.

Upgrade notes

  • Earlier versions cannot read session history written or converted by this one. Keep a copy of the data directory before upgrading if you may need to go back.

Verify

  • ed8d2cdb Tests run on Linux again: process CPU from /proc, real-session disk test in the system temp directory
  • 6fd1d105 OpenCode Go answers again: requests carry x-opencode-session
  • 0fbb5960 README: current measurements
  • 1af97fbf Less memory at the prompt, shorter ids, smaller sessions on disk
  • a6172f88 Sessions store less: settled state snapshots keep only the newest, turns that change no file write no snapshot, usage request profiles are stored compactly

Binaries: macOS, Apple silicon 71.9 MB · macOS, Intel 77.1 MB · Linux, arm64 110.2 MB · Linux, x64 109.7 MB · Windows, x64 126.4 MB

MendCode Nightly — 2026-11-02 · Build 23

On GitHub

**v0.0.4-nightly.20261102.23** · Nightly · since v0.0.4-nightly.20261102.22 · built from d43f91ccfb80 3 changes since v0.0.4-nightly.20261102.22.

New

  • mendcode usage recover adds the token usage of a Claude Code, Codex or Pi session log to Usage, with a preview first and an undo. See usage recovery.

Changed

  • Long command replies open a readable page (F4 shows the full text of a cut notice), and /pr repos lists repository watches in a page where they can be stopped and restarted.
  • Compaction uses the session's own model by default, so it reuses the prompt cache; the built-in recipes no longer set a compaction role, and /models notes when a separate compaction model gives that up.

Verify

  • d43f91cc Long command replies open a readable page and /pr repos manages repository watches; mendcode usage recover adds an external harness log's token usage to Usage
  • 2d46d159 Compaction follows the session model by default and reuses the prompt cache

Binaries: macOS, Apple silicon 71.9 MB · macOS, Intel 77.1 MB · Linux, arm64 110.1 MB · Linux, x64 109.7 MB · Windows, x64 126.4 MB

MendCode Nightly — 2026-11-02 · Build 22

On GitHub

**v0.0.4-nightly.20261102.22** · Nightly · since v0.0.3 · built from 8c227c25a916 4 changes since v0.0.3.

Changed

  • The working row's token count shows new input and the context read from the provider's prompt cache separately.
  • The code graph autopilot refreshes the graph when a lot of code has changed, not after a number of edited files. See code graph.
  • The full view's footer shows the rows preset by default: directory, model and session figures, quota per provider and the code graph, each on its own row. /footer preset classic brings back the single-row footer. Balanced and minimalist are unchanged. See layout.

Fixed

  • Changes to a file saved twice in quick succession are no longer missed by model lists, config files, the file viewer or code graph excerpts.

Verify

  • 8c227c25 Graph autopilot refreshes by changed code; full footer shows the rows preset by default
  • f170d9dd Working row shows new input and cache reads apart; shorter CHANGELOG items
  • cec5056f Cache freshness compares inode, size, mtime and ctime, not mtime alone
  • ef9195af Checks: the AppArmor switch only where the kernel has it
  • 93d9765a CHECKS_RUNNER can move the test rows to another runner; builds, signing and attestation stay GitHub-hosted

Binaries: macOS, Apple silicon 71.9 MB · macOS, Intel 77.1 MB · Linux, arm64 110.1 MB · Linux, x64 109.6 MB · Windows, x64 126.4 MB

MendCode v0.0.3

On GitHub

**v0.0.3** · Stable · since v0.0.2 · built from bd04f6edeb02 /memory follows the same page standard as /changes with a graph drawn in braille links, mendcode --version names its channel, and the code graph autopilot can be turned on in the full tier.

New

  • **Code graph autopilot (nightly only by default).** In the full tier, MendCode builds and refreshes the code graph of a real project by itself, in the background, so the model finds code through the graph without having to remember to build it. It never builds in the home folder, system folders or very large projects, and /graph on|off still decides. The footer's graph segment shows the progress. It is on by default only in nightly, dev and local builds; in beta and stable turn it on with /tier graph_autopilot on. Minimalist and balanced are unchanged. See code graph.

Changed

  • mendcode --version says which channel the binary is from: stable, beta, nightly, or a local build.
  • /memory follows the same page standard as /changes: every tab has the same header with the keys and counts, and the History, Loops and Memory sub-pages are titled like the other pages. The Graph tab shows a **Graph** box beside a **Memory** box for the selected memory, with links drawn between memories, colors by category and a legend.
  • The README screenshots are full-screen renders of the real views.

Upgrade notes

  • Same code as v0.0.3-beta.1. The code graph autopilot is off in beta and stable; /tier graph_autopilot on turns it on in the full tier.

Verify

  • bd04f6ed Release v0.0.3-beta.1 and v0.0.3
  • bad916e0 Release test: a gate step has a name
  • 8e337a1e Code graph autopilot (nightly), --version names the channel, the release gate runs on parallel runners
  • 8a98023b README screenshots at full-screen size from the real views, /memory follows the page standard with a braille graph, --version names the channel
  • a790fb89 README: packages and profiles replace the approvals section, with a screenshot of what a package takes over; the why table says what a package and a profile are

Binaries: macOS, Apple silicon 71.9 MB · macOS, Intel 77.1 MB · Linux, arm64 110.1 MB · Linux, x64 109.6 MB · Windows, x64 126.4 MB

MendCode Nightly — 2026-11-02 · Build 21

On GitHub

**v0.0.3-nightly.20261102.21** · Nightly · since v0.0.2 · built from bad916e00d74 4 changes since v0.0.2.

New

  • **Code graph autopilot (nightly only by default).** In the full tier, MendCode now builds the code graph of a real project by itself, in the background, when a session opens or a turn begins there, and refreshes it once ten files (or 3% of the project) are new, changed or deleted, looking at the disk at most every two minutes. The model no longer has to remember to build it: a graph lookup on a project with no graph starts the build and answers building (42%) ... use grep meanwhile, then call again instead of giving up, and the system prompt carries one ~70-token line telling it to locate code with graph_find/graph_callers/graph_file_api first and read only the spans they return. Claude Code, Codex and ACP agents get the same line with MendCode's graph tools. It never builds in the home folder, the filesystem root, operating system folders, node_modules, a folder with no git repository or project manifest, or a project over 10,000 files (/graph on|off still decides). The footer's graph segment shows indexing… 40%. On by default only in nightly, dev and local builds while it is tested; in beta and stable it is off until /tier graph_autopilot on. Minimalist and balanced are unchanged. See code graph.

Changed

  • mendcode --version says which channel the binary is from: 0.0.2 (stable), 0.0.2-beta.4 (beta), 0.0.2-nightly.20261101.19 (nightly), or (local build) for one built from a checkout.
  • /memory follows the same page standard as /changes: every tab has the Memory · dir … header with the keys on the right and the counts under it, and the keys no longer repeat esc back. The Graph tab is a **Graph** box beside a **Memory** box for the selected memory (scope, category, project, origin and its links); links are braille lines (dotted for related, solid with an arrow for supports and supersedes, dashed for conflicts), dots take their category's color, and a legend names them. The History, Loops and Memory sub-pages say History · Turn, Loops · New and Memory · Projects, as the other pages do.
  • The README screenshots (docs/assets/readme) are drawn from the real views at 200 × 56 cells, a full-screen terminal, by scripts/readme-images.ts; a test fails when a view changes and the images do not.

Verify

  • bad916e0 Release test: a gate step has a name
  • 8e337a1e Code graph autopilot (nightly), --version names the channel, the release gate runs on parallel runners
  • 8a98023b README screenshots at full-screen size from the real views, /memory follows the page standard with a braille graph, --version names the channel
  • a790fb89 README: packages and profiles replace the approvals section, with a screenshot of what a package takes over; the why table says what a package and a profile are

Binaries: macOS, Apple silicon 71.9 MB · macOS, Intel 77.1 MB · Linux, arm64 110.1 MB · Linux, x64 109.6 MB · Windows, x64 126.4 MB

MendCode v0.0.3 Beta 1

On GitHub

**v0.0.3-beta.1** · Beta · since v0.0.2 · built from bd04f6edeb02 /memory follows the same page standard as /changes with a graph drawn in braille links, mendcode --version names its channel, and the full tier gains a code graph autopilot (on by default only in nightly builds).

New

  • **Code graph autopilot (nightly only by default).** In the full tier, MendCode builds and refreshes the code graph of a real project by itself, in the background, so the model finds code through the graph without having to remember to build it. It never builds in the home folder, system folders or very large projects, and /graph on|off still decides. The footer's graph segment shows the progress. It is on by default only in nightly, dev and local builds; in beta and stable turn it on with /tier graph_autopilot on. Minimalist and balanced are unchanged. See code graph.

Changed

  • mendcode --version says which channel the binary is from: stable, beta, nightly, or a local build.
  • /memory follows the same page standard as /changes: every tab has the same header with the keys and counts, and the History, Loops and Memory sub-pages are titled like the other pages. The Graph tab shows a **Graph** box beside a **Memory** box for the selected memory, with links drawn between memories, colors by category and a legend.
  • The README screenshots are full-screen renders of the real views.

Verify

  • bd04f6ed Release v0.0.3-beta.1 and v0.0.3
  • bad916e0 Release test: a gate step has a name
  • 8e337a1e Code graph autopilot (nightly), --version names the channel, the release gate runs on parallel runners
  • 8a98023b README screenshots at full-screen size from the real views, /memory follows the page standard with a braille graph, --version names the channel
  • a790fb89 README: packages and profiles replace the approvals section, with a screenshot of what a package takes over; the why table says what a package and a profile are

Binaries: macOS, Apple silicon 71.9 MB · macOS, Intel 77.1 MB · Linux, arm64 110.1 MB · Linux, x64 109.6 MB · Windows, x64 126.4 MB

MendCode v0.0.2

On GitHub

**v0.0.2** · Stable · since v0.0.1 · built from a4016f614676 The second stable release: everything in the v0.0.2 betas, from MendCode's own ChatGPT login and an advisor model to a visible plan, plan mode as in v1, voice dictation, credentials pasted into /env and fewer prompt-cache misses.

New

  • Advisor: /advisor <model>[#effort] names a second model that the main model consults through an advisor tool and that is also consulted before a plan is shown, after the same call fails twice and before a turn that edited files closes. It is available in balanced and full and off until you pick a model; /advisor off turns it off and /advisor shows its status. A Claude Code model (/advisor claude-opus) can also advise a native session on your Claude subscription. /model has an advisor row and the AI config page shows the status (advisor).
  • A visible plan (balanced and full, /tier visible_plan off hides it): while the agent's task list has open items, one muted row above the prompt shows the item in progress and how far the list is (▸ Fix the parser · 3/7). Ctrl+t opens the whole plan. Claude Code, Codex and ACP agent plans show in the same row. Minimalist has no plan row.
  • Plan mode works as it did in v1: Shift+Tab or /plan enters it read-only, the footer names the plan model, and the plan opens a review where Enter switches to the build agent and its model and continues. Claude Code's ExitPlanMode opens the same review.
  • Paste credentials into /env: paste one NAME=value or a whole .env and MendCode lists the variables it found (names only, with their status); choose all or a subset with space, a and Enter, and they are saved encrypted for the project (Ctrl+S for session or global). The pasted text stays in memory until you save or press Esc.
  • Sessions know what MendCode can do: the model is told which tools it can load (image generation, computer use, memory, web, workflows and others) and what this terminal can draw, so it uses them instead of saying it cannot. Codex, pi and ACP agents get the same information and the mendcode docs pointer.

Changed

  • The start screen's title is MendCode's infinity logo, drawn in half blocks (plain ASCII under glyphs ascii) with the name under it. A logo text or font of your own still draws those letters; a small terminal shows the name.
  • Setup uses the whole terminal: the preview takes the rest of the width and the full height with its prompt at the foot, as in the chat. The Tier row says what its value gives even unfocused, and lists the tiers when focused.
  • Computer use: tools.batch({revision, steps}) in computer_code runs up to 16 actions on one observation in one call. Every step is checked before the first is sent, the first failing step stops the batch, and each step reports its outcome, delivery and whether a retry is safe (batches).
  • Computer use shows a new cursor: a white dart with a pill naming the action, a click ripple, an outline around the element acted on and a trail for drags. It moves like a hand, faster than before, and rests when idle.
  • Computer use observes windows faster.

Fixed

  • Fewer requests miss the prompt cache: repeated tool_search calls on the ChatGPT backend, pruning of old tool results and the memory chosen for the system prompt no longer change the start of the request in the middle of a turn. MENDCODE_DEBUG_PROMPT_PREFIX=1 makes the daemon log hashes of each provider request's parts, without content, to find what changed (prompt cache).
  • mendcode attach <session id> opens that session in the terminal again; an HTTP URL still attaches to a server.
  • On-device dictation with no language set listens in the first two languages of Language & Region at once (English and Spanish on a bilingual Mac). /voice language lists every language the on-device model hears by name, and takes one (/voice language es) or two to hear at once (/voice language es en).
  • While dictating on this Mac the words appear as you speak, not only at a pause, and the row shows the language actually spoken.
  • Dictation says when to start talking: holding space shows starting… wait to speak until the microphone listens. If the transcript does not come back, the words already heard stay in the prompt as a draft.

Upgrade notes

  • Stable installs move from v0.0.1 with mendcode upgrade; beta and nightly installs already have this code from v0.0.2-beta.4 and the nightly of the same day.

Known limitations

  • PR review: a Codex review child still reads your own ~/.codex/AGENTS.md; MendCode never moves or copies ~/.codex. A Claude Code turn killed with the daemon reports no usage, so its spend stays unknown.
  • Sign in with ChatGPT has no device code: sign in on the machine that runs the daemon. On that login there is no native compaction (MendCode's own summary is used), no hosted image generation and no /fast priority. Device code remains for a Codex-style client id you set yourself (MENDCODE_OPENAI_OAUTH_CLIENT_ID).
  • Mermaid subgraphs are told apart by title: two subgraphs with the same title are drawn as one frame. In a left-to-right flowchart, a connection back to an earlier box shares the last stretch of the arrow going into it.

Verify

  • a4016f61 Release v0.0.2-beta.4 and v0.0.2
  • 14cf2f41 Advisor, visible plan, /usage auxiliary calls, plan mode, prompt-cache fixes, /env paste
  • ab2b1934 README: logo, why table, full install section (options, what the installer prints, manual verification), first run and feature sections with screenshots drawn from the real views
  • 169ced11 Voice, setup, sub-agents across harnesses, session read, hidden costs, default model, footer
  • fc166507 zod 4.6.6

Binaries: macOS, Apple silicon 71.8 MB · macOS, Intel 77.0 MB · Linux, arm64 110.0 MB · Linux, x64 109.6 MB · Windows, x64 126.4 MB

MendCode Nightly — 2026-11-01 · Build 19

On GitHub

**v0.0.2-nightly.20261101.19** · Nightly · since v0.0.2-nightly.20261101.18 · built from 14cf2f41eae4 MendCode signs in to ChatGPT for itself with OpenAI's Sign in with ChatGPT, keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in; the setup no longer leaves you at a prompt with no model, and the pull request reviewer keeps working when the daemon starts with a short PATH.

New

  • Advisor: /advisor <model>[#effort] names a second model (balanced and full, off until you pick one; /advisor off, /advisor shows status) that the main model consults through an advisor tool and the engine consults at three checkpoints (before a plan is shown, after the same call fails twice, before a turn that edited files closes), at most once each per turn. The model sees a bounded 24k-token summary with secrets redacted; consultations are counted under the advisor's model. Claude Code sessions pass a Claude advisor to --advisor. /model has an advisor row and the AI config page shows the real status (advisor). A Claude Code model (/advisor claude-opus) can also advise a native session on your Claude subscription, one headless claude -p per consultation with no tools; the AI status lists the advisor and the permission reviewer as off when unset, not as the main model.
  • A visible plan (balanced and full, /tier visible_plan off): while the agent's task list has open items, one muted row above the prompt shows the item in progress and how far the list is (▸ Fix the parser · 3/7); it cuts the item first on a narrow terminal, uses > and | with ASCII chrome, reads Plan: Fix the parser, 3 of 7 done in screen-reader mode, steps aside while the dock is open (ctrl+t, which lists the whole plan) and goes when every item is done. todo is now listed in every request of balanced and full, and its description and one prompt line tell the model the user follows it there: use it for work of three or more steps, before the first edit, and do not repeat it in the answer. Claude Code's TodoWrite (the item in progress as its activeForm) and TaskCreate/TaskUpdate, Codex's update_plan and an ACP agent's plan show in the same row, dock and Todos card, and those engines are told in one line that their list is pinned. Minimalist has no todo tool at all and no row.
  • Plan mode works as it did in v1: entering it (Shift+Tab, /plan) says Plan mode: read-only · <plan model> plans · you review first and the footer names the plan model instead of the build one; the model is told it is read-only and to finish with the plan review, and a plan it writes as plain text opens that review anyway, where Enter switches to the build agent and its model and continues (leaving plan mode says which model runs now). Claude Code's ExitPlanMode opens the same review page.
  • Paste credentials into /env: paste one NAME=value or a whole .env and MendCode lists the variables it found (names only, with new / replaces / refused / empty status and counts); choose all or a subset with space, a and Enter, and they are saved encrypted for the project (Ctrl+S for session or global). Pasting NAME=value lines into the value field offers the same list. The pasted text stays in memory until you save or press Esc.
  • /usage shows the model calls MendCode makes outside your turns: session titles and summaries, /recap, memory extraction, the Memory assistant, Dream and its consolidation, the permission reviewer, prompt hooks, generated agents and the setup helper. The Models tab has an "Auxiliary calls" panel per role and model (summary · gpt-6-luna · 12 calls · 74K in), and mendcode usage, mendcode stats and --json (auxiliary) list them too. They stay out of the turn totals, so nothing is counted twice; before, they reached only the budget ledger (usage).

Fixed

  • Repeated tool_search calls on the ChatGPT backend keep each tool definition in its first successful search result. Later searches append an already-loaded notice instead of moving the definition and invalidating the earlier prompt prefix. Mixed searches still load new tools; the function-based formats of other providers are unchanged.
  • Fewer full re-reads of the conversation in the middle of a turn: old tool results are pruned once per turn (decided by its first request) instead of again whenever the context crossed 80 % of the compaction point or a queued prompt or a background notice joined the turn, and the memory in the system prompt is chosen by the prompt the turn started with, not by a prompt that joins it. Each of those used to change something early in the request, so the provider read the whole context again, uncached. MENDCODE_DEBUG_PROMPT_PREFIX=1 makes the daemon log, per provider request, hashes of its instructions, tools, cache route and input items and the first one that differs from the request before (no content; prompt cache).

Verify

  • 14cf2f41 Advisor, visible plan, /usage auxiliary calls, plan mode, prompt-cache fixes, /env paste
  • ab2b1934 README: logo, why table, full install section (options, what the installer prints, manual verification), first run and feature sections with screenshots drawn from the real views

Binaries: macOS, Apple silicon 71.8 MB · macOS, Intel 77.0 MB · Linux, arm64 110.0 MB · Linux, x64 109.6 MB · Windows, x64 126.4 MB

MendCode Nightly — 2026-11-01 · Build 18

On GitHub

**v0.0.2-nightly.20261101.18** · Nightly · since v0.0.2-nightly.20261101.16 · built from 169ced11ccf6 MendCode signs in to ChatGPT for itself with OpenAI's Sign in with ChatGPT, keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in; the setup no longer leaves you at a prompt with no model, and the pull request reviewer keeps working when the daemon starts with a short PATH.

New

  • Setup: sign in from the page. Up from the Model row reaches the ChatGPT login and API keys; Enter runs /connect chatgpt or opens /connect, and closing it (or m after signing in) comes back to setup, checked again, with the new models on the Model row. Ready now groups MendCode's own engine (ChatGPT login, API keys) apart from the external harnesses that keep their own login (Claude Code, Codex, pi). Nothing is saved but what /connect saves itself.
  • Setup: Space on the Model row lists every model found, grouped by who runs it: MendCode's own engine (the ChatGPT subscription, then each provider you have a key for), then the Claude Code, Codex, pi and ACP harnesses. Enter picks one; the list also holds Sign in to ChatGPT and Add an API-key provider, which run /connect and come back to the list with the new models in it. A harness found without models says what lists them (claude auth login, /tier thread_mcp on codex). The Model row names who runs the model (Opus · Claude Code).
  • The model can read another session's conversation in one call: sessions read=<session id> returns its messages, oldest first, with one line per tool call and no tool output or reasoning, in pages of up to 40,000 bytes (more: cursor=… asks for the next). An exact id may name a session of any project of this MendCode; the list stays this project's. Before, a model asked to read a chat by its id searched ~/.claude and MendCode's database for minutes (peers).

Changed

  • The start screen's title is MendCode's infinity logo, drawn in half blocks (plain ASCII under glyphs ascii) with the name under it, in place of the pixel MENDCODE. A logo text or font of your own still draws those letters; a small terminal shows the name.
  • Setup uses the whole terminal: the choices grow to 64 columns, the preview takes the rest of the width and the full height with its prompt at the foot, as in the chat, and the Enter line stands at the bottom. The Tier row says what its value gives (tool cards, code graph, sub-agents) even unfocused, and lists the tiers when focused. Mend in the preview is its compact three-row form instead of the chat's seven-row sprite, which covered the card.
  • Computer use: tools.batch({revision, steps}) in computer_code runs up to 16 actions on one observation in one call, without observing between them, the way agent-desktop batches commands. Every step is checked before the first is sent, each node is re-resolved right before its step, the first failing step stops the batch, and each step reports its outcome, delivery and whether a retry is safe (batches).
  • Computer use takes agent-desktop's cursor (Apache-2.0, ported to Swift): a white dart with a dark rim and a pill naming the action, a click ripple, an outline around the element acted on and a trail for drags. It moves like a hand (overshoot and correction, a slight bow) and a move takes 90–320 ms instead of 280–750 ms; it rests after six idle seconds.
  • Computer use observes faster: the helper reads each node in one accessibility call instead of one per attribute, measured 6–7 times faster on the same windows (Ghostty 239 nodes, about 500 ms to about 65 ms).

Fixed

  • mendcode attach <session id> opens that session in the terminal again; it stopped at attach needs an HTTP URL because the remote attach took every attach first. An HTTP URL still attaches to a server, and a bare attach names both forms.
  • On-device dictation with no language set no longer hears with the model of the Mac's region: English (Panama) picked Apple's Irish English model and turned Spanish into nonsense. It now listens in the first two languages of Language & Region at once (English and Spanish on a bilingual Mac) and keeps the transcript the models are surer of. /voice language now lists every language the on-device model hears by name, and takes one (/voice language es) or two to hear at once (/voice language es en).
  • While dictating on this Mac the words show about a second after they are said, not only at a pause or when the recording ends, and the row shows the language actually spoken: with English and Spanish listening, Spanish speech no longer shows the English model's misspelled guess until the end. The transcript placed in the prompt is unchanged.
  • Dictation says when to start talking: holding space shows starting… wait to speak at once, until the microphone listens, and the on-device helper is built as soon as the key repeats instead of after the recording was asked for. If the transcript does not come back, the words already heard stay in the prompt as a draft rather than being lost.
  • Setup's default model offered only the first two models of each source (Fable and Haiku, or Opus and Fable, of Claude Code's four), one per API-key provider and none of the Codex harness's: the Model row now steps through every model found. ACP agents' models are no longer listed as the ChatGPT subscription's, and the Codex harness's models, which run on the Codex CLI's own login, are offered with ownLogins too.

Verify

  • 169ced11 Voice, setup, sub-agents across harnesses, session read, hidden costs, default model, footer

Binaries: macOS, Apple silicon 71.8 MB · macOS, Intel 77.0 MB · Linux, arm64 110.0 MB · Linux, x64 109.6 MB · Windows, x64 126.3 MB

MendCode Nightly — 2026-11-01 · Build 16

On GitHub

**v0.0.2-nightly.20261101.16** · Nightly · since v0.0.2-nightly.20261101.15 · built from fc1665076d83 MendCode signs in to ChatGPT for itself with OpenAI's Sign in with ChatGPT, keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in; the setup no longer leaves you at a prompt with no model, and the pull request reviewer keeps working when the daemon starts with a short PATH.

Fixed

  • Zod is 4.6.6: 4.6.5 could exhaust memory validating an oversized constrained collection (GHSA-mrhx-c7xc-m3w5), and the daemon validates what reaches it over its socket, HTTP and ACP with it.

Verify

  • fc166507 zod 4.6.6

Binaries: macOS, Apple silicon 71.7 MB · macOS, Intel 76.9 MB · Linux, arm64 110.0 MB · Linux, x64 109.5 MB · Windows, x64 126.3 MB

MendCode Nightly — 2026-11-01 · Build 15

On GitHub

**v0.0.2-nightly.20261101.15** · Nightly · since v0.0.2-nightly.20261101.14 · built from 0dd7dcb616da MendCode signs in to ChatGPT for itself with OpenAI's Sign in with ChatGPT, keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in; the setup no longer leaves you at a prompt with no model, and the pull request reviewer keeps working when the daemon starts with a short PATH.

Fixed

  • A daemon started by a terminal in a tuios pane no longer carries that pane's identity and token (TUIOS_PANE_ID, TUIOS_PANE_TOKEN and the rest), so the commands of every session stop speaking to tuios as that one pane. A terminal that hosts the daemon in its own process keeps them: it is that pane.
  • mendcode daemon status no longer says stopped when a daemon holds the data directory but does not answer: it says not answering · process N holds the data directory, and daemon start, stop and restart name that process at once instead of waiting 5 seconds for a new daemon that could only fail on the lock.
  • A Claude Code, Codex or ACP session gets MendCode's notices (a PR review's summary and findings) with their line breaks, not as one paragraph; each line after the first is indented, so none can pass for a User: line of the handoff.
  • /reviews says updated just now, not updated now ago.

Verify

  • 0dd7dcb6 Daemon environment, status and handoff fixes

Binaries: macOS, Apple silicon 71.7 MB · macOS, Intel 76.9 MB · Linux, arm64 110.0 MB · Linux, x64 109.5 MB · Windows, x64 126.2 MB

MendCode Nightly — 2026-11-01 · Build 14

On GitHub

**v0.0.2-nightly.20261101.14** · Nightly · since v0.0.2-nightly.20261101.12 · built from 2e6bb6f4942b MendCode signs in to ChatGPT for itself with OpenAI's Sign in with ChatGPT, keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in; the setup no longer leaves you at a prompt with no model, and the pull request reviewer keeps working when the daemon starts with a short PATH.

New

  • The model is told what MendCode can do: a native session's prompt names, in one line, the tools it can load (image generation, computer use, memory, web, workflows and others behind tool_search), taken from the session's real catalogue, so the model uses them instead of saying it cannot. The rendering lines say what this terminal draws (colour swatches, callouts, clickable paths, diff cards; a Markdown image is not drawn). Codex, pi and ACP agents get those lines and the mendcode docs pointer too.
  • Codex sessions get MendCode's own tools (code graph, image generation, computer use, memory and the rest) through the same loopback bridge as Claude Code, with one approval: MendCode's. Gated like Claude Code by harness_tools (balanced and full).

Verify

  • 2e6bb6f4 changelog: the model is told what MendCode can do; Codex sessions get MendCode's tools
  • f3dee311 The model is told what MendCode can do: a native session's prompt names its deferred tools (image generation, computer use, memory, web) from the real catalogue, the rendering block covers swatches, callouts, clickable paths and diff cards, and Codex, pi and ACP get it with the docs pointer; Codex sessions get MendCode's tools through the loopback bridge like Claude Code, with one approval

Binaries: macOS, Apple silicon 71.7 MB · macOS, Intel 76.9 MB · Linux, arm64 110.0 MB · Linux, x64 109.5 MB · Windows, x64 126.2 MB

MendCode Nightly — 2026-11-01 · Build 12

On GitHub

**v0.0.2-nightly.20261101.12** · Nightly · since v0.0.2-nightly.20261031.11 · built from 06d908a9faf9 MendCode signs in to ChatGPT for itself with OpenAI's Sign in with ChatGPT, keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in; the setup no longer leaves you at a prompt with no model, and the pull request reviewer keeps working when the daemon starts with a short PATH.

New

  • PR review: prReview.concurrency (1 to 4, default 2) sets how many reviews this device runs at once, across every watched repository. It is a per-device setting that a config bundle or a remote client never changes, and /pr watch-repo list, the status and /reviews show it (concurrency).
  • PR review: an opt-in offline fallback (routing.offline_fallback in .mendcode/reviewers.yaml) lets a global reviewer take a PR a personal reviewer has not claimed or reviewed within the set minutes. The waiting job names the reviewer and the time, and a personal reviewer that comes back after the fallback posted posts nothing. Without the key nothing changes.

Fixed

  • PR review: the verification line of a "No findings" review says what happened: no candidates and no separate pass, or N candidates checked again and none confirmed. It no longer says every finding was checked when there were none.
  • PR review: a requested watch takes an @mendcode comment addressed to no one on a PR that area or label routing gives its login's personal reviewer.
  • PR review: /pr review (and your own @mendcode review) on an all watch reviews as the repository's default global reviewer from .mendcode/reviewers.yaml (such as team), not as global, so a head the watch already reviewed is not posted twice.
  • PR review: a review that posts nothing (this head's review was already posted, or nothing is new on it) says so in its notice instead of a bare "published", and that the pull request keeps the earlier review.
  • PR review: a fix session waiting for your approval was stopped as stalled after 10 minutes: the session's own "waiting for approval" state ended the wait. The wait now lasts until the approval is answered.

Known limitations

  • PR review: a Codex review child still reads your own ~/.codex/AGENTS.md; codex-cli 0.162.1 has no switch for it, and MendCode never moves or copies ~/.codex. A Claude Code turn killed with the daemon reports no usage, so its spend stays unknown.

Verify

  • 06d908a9 PR review: the No findings verification line says what the verify pass did; prReview.concurrency sets reviews per device; an opt-in offline fallback lets a global reviewer take a PR an offline personal reviewer has not; failed or cut-off calls are accounted; /pr review of a reviewed head posts no second review and says nothing was posted; a fix session waiting for approval is not stopped as stalled; a Claude Code child that never answered initialize is retried

Binaries: macOS, Apple silicon 71.7 MB · macOS, Intel 76.9 MB · Linux, arm64 110.0 MB · Linux, x64 109.5 MB · Windows, x64 126.2 MB

MendCode v0.0.2 Beta 4

On GitHub

**v0.0.2-beta.4** · Beta · since v0.0.2-beta.3 · built from a4016f614676 MendCode signs in to ChatGPT for itself with Sign in with ChatGPT and keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in. A second model can advise the first (/advisor), the agent's task list stays visible above the prompt, plan mode works as in v1, credentials can be pasted into /env, and fewer requests miss the prompt cache.

New

  • Advisor: /advisor <model>[#effort] names a second model that the main model consults through an advisor tool and that is also consulted before a plan is shown, after the same call fails twice and before a turn that edited files closes. It is available in balanced and full and off until you pick a model; /advisor off turns it off and /advisor shows its status. A Claude Code model (/advisor claude-opus) can also advise a native session on your Claude subscription. /model has an advisor row and the AI config page shows the status (advisor).
  • A visible plan (balanced and full, /tier visible_plan off hides it): while the agent's task list has open items, one muted row above the prompt shows the item in progress and how far the list is (▸ Fix the parser · 3/7). Ctrl+t opens the whole plan. Claude Code, Codex and ACP agent plans show in the same row. Minimalist has no plan row.
  • Plan mode works as it did in v1: Shift+Tab or /plan enters it read-only, the footer names the plan model, and the plan opens a review where Enter switches to the build agent and its model and continues. Claude Code's ExitPlanMode opens the same review.
  • Paste credentials into /env: paste one NAME=value or a whole .env and MendCode lists the variables it found (names only, with their status); choose all or a subset with space, a and Enter, and they are saved encrypted for the project (Ctrl+S for session or global). The pasted text stays in memory until you save or press Esc.
  • Sessions know what MendCode can do: the model is told which tools it can load (image generation, computer use, memory, web, workflows and others) and what this terminal can draw, so it uses them instead of saying it cannot. Codex, pi and ACP agents get the same information and the mendcode docs pointer.

Changed

  • The start screen's title is MendCode's infinity logo, drawn in half blocks (plain ASCII under glyphs ascii) with the name under it. A logo text or font of your own still draws those letters; a small terminal shows the name.
  • Setup uses the whole terminal: the preview takes the rest of the width and the full height with its prompt at the foot, as in the chat. The Tier row says what its value gives even unfocused, and lists the tiers when focused.
  • Computer use: tools.batch({revision, steps}) in computer_code runs up to 16 actions on one observation in one call. Every step is checked before the first is sent, the first failing step stops the batch, and each step reports its outcome, delivery and whether a retry is safe (batches).
  • Computer use shows a new cursor: a white dart with a pill naming the action, a click ripple, an outline around the element acted on and a trail for drags. It moves like a hand, faster than before, and rests when idle.
  • Computer use observes windows faster.

Fixed

  • Fewer requests miss the prompt cache: repeated tool_search calls on the ChatGPT backend, pruning of old tool results and the memory chosen for the system prompt no longer change the start of the request in the middle of a turn. MENDCODE_DEBUG_PROMPT_PREFIX=1 makes the daemon log hashes of each provider request's parts, without content, to find what changed (prompt cache).
  • mendcode attach <session id> opens that session in the terminal again; an HTTP URL still attaches to a server.
  • On-device dictation with no language set listens in the first two languages of Language & Region at once (English and Spanish on a bilingual Mac). /voice language lists every language the on-device model hears by name, and takes one (/voice language es) or two to hear at once (/voice language es en).
  • While dictating on this Mac the words appear as you speak, not only at a pause, and the row shows the language actually spoken.
  • Dictation says when to start talking: holding space shows starting… wait to speak until the microphone listens. If the transcript does not come back, the words already heard stay in the prompt as a draft.

Known limitations

  • PR review: a Codex review child still reads your own ~/.codex/AGENTS.md; MendCode never moves or copies ~/.codex. A Claude Code turn killed with the daemon reports no usage, so its spend stays unknown.
  • Sign in with ChatGPT has no device code: sign in on the machine that runs the daemon. On that login there is no native compaction (MendCode's own summary is used), no hosted image generation and no /fast priority. Device code remains for a Codex-style client id you set yourself (MENDCODE_OPENAI_OAUTH_CLIENT_ID).
  • Mermaid subgraphs are told apart by title: two subgraphs with the same title are drawn as one frame. In a left-to-right flowchart, a connection back to an earlier box shares the last stretch of the arrow going into it.

Verify

  • a4016f61 Release v0.0.2-beta.4 and v0.0.2
  • 14cf2f41 Advisor, visible plan, /usage auxiliary calls, plan mode, prompt-cache fixes, /env paste
  • ab2b1934 README: logo, why table, full install section (options, what the installer prints, manual verification), first run and feature sections with screenshots drawn from the real views
  • 169ced11 Voice, setup, sub-agents across harnesses, session read, hidden costs, default model, footer
  • fc166507 zod 4.6.6

Binaries: macOS, Apple silicon 71.8 MB · macOS, Intel 77.0 MB · Linux, arm64 110.0 MB · Linux, x64 109.6 MB · Windows, x64 126.4 MB

MendCode Nightly — 2026-10-31 · Build 11

On GitHub

**v0.0.2-nightly.20261031.11** · Nightly · since v0.0.2-nightly.20261030.8 · built from 2065a35d4eb2 MendCode signs in to ChatGPT for itself with OpenAI's Sign in with ChatGPT, keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in; the setup no longer leaves you at a prompt with no model, and the pull request reviewer keeps working when the daemon starts with a short PATH.

New

  • PR review: .mendcode/review.yaml can start from a preset (preset: balanced | quiet | strict | on-request | autofix); the file's own keys go over it, and no preset turns posting on, adds checks, widens who may post or pushes.
  • PR review: budget.tokens_per_pr: null means no internal cap, and budget.context_tokens bounds what one call carries (200,000 when unset), apart from the PR's total.
  • PR review: /reviews (or /pr dashboard) opens a page of review jobs, reviewers and watches. From it you can pause, resume, cancel or retry a job (a retry needs a reason), take a job over and release it, and show a job's config.
  • PR review platform: - A review stopped by its token budget, a quota or a rate limit keeps what it found and is resumed without a second review pass: on retry, or after the quota reset with on_quota: wait. - mode and filters decide which PRs are reviewed; /pr list shows the reason for each PR not taken. - .mendcode/reviewers.yaml routes PRs to the global reviewer and to personal reviewers. A personal reviewer whose MendCode runs elsewhere waits with its reason, and its own daemon reviews the PR when it starts. Device claims on the PR are best-effort, not compare-and-swap. - Personal profiles can only narrow the repository's config. The config actions and the review_config tool always need a scope. - Review memory follows the reviewer's scope. - fix.mode fix-once and fix-loop push only with fix.push and /pr publish on; otherwise the fix is kept on a local ref. - Stages are planned for each run, and a stacked PR is reviewed on its own commits. - Token accounting is kept per PR head. - An audit of the whole checkout stays in the session; it is a pr.review action, with no slash command. - GitLab (through glab) and Gitea / Forgejo (GITEA_TOKEN) are supported: the daemon watches, posts reviews, answers @mendcode and pushes fixes through their adapters. This ran live against local GitLab CE 19.5.3 and Gitea 28.2.0. They have no check follow-ups and no hosted runner, and Gitea has no thread resolution (providers). - template.language (default English, set by the repository only) is the language of every review, verify, fix and @mendcode explain reply, on every engine. Your own harness language setting no longer reaches a public review. With auto, a PR is reviewed in its author's language, judged once from the PR's title and description and kept for the PR. A short, empty, mixed or unclear text is English. - Open PRs when a watch starts: when a watch starts, after a daemon restart and after a pause or outage, open PRs whose head has no review yet are reviewed, newest first. That is at most backlog.max_prs (10), updated within backlog.window_days (30), and /pr watch-repo lists what it queued and what it skipped. max_prs: 0 keeps the old baseline. - Set up PR review with your session: review_config setup reports what exists, the signals of your role, what is missing and the questions to ask. It is read-only. - The pr_review tool reviews a PR now from a session (review asks your approval outside full access, and status lists the jobs). It posts only as /pr publish allows, and a session never posts @mendcode from your account to start a review. - .mendcode/reviewers.yaml capabilities review, fix and publish are enforced, and a reviewer without the list has all three. A requested watch also takes PRs that area or label routing gives its login's personal reviewer. - Logins in reviewers.yaml and in review.yaml's reviewers and publishers follow the checkout's forge, so GitLab and Gitea usernames with _ or . can be listed. - A diff too large for one call is reviewed in parts of whole files (at most 12), and their candidates go to one verify pass. - A team setup guide covers the hosted workflow, an always-on server with personal reviewers on laptops, what happens while a laptop is off or asleep, and troubleshooting (team setup).
  • grep takes context (0 to 5): the lines around each match come back as path-line-text, with -- between groups, with ripgrep and with the built-in search alike, so one search can replace the read that would follow it. The 500-match cap and the count still read matching lines only.

Changed

  • PR review: reviews are durable jobs in pr-review/jobs.json instead of an in-memory queue. A daemon restart finds the queued and running reviews and runs each once; a push during a review marks it stale and it is not posted; a failed review is retried with backoff, at most 5 times. Before, a restart lost every queued review.
  • PR review: the default budget.tokens_per_pr is 1,000,000 (was 200,000), and the review context is bounded by budget.context_tokens instead of half of tokens_per_pr. A review stopped at the cap says it is incomplete.
  • PR review: every posted review carries a reviewer marker, and a post that timed out or got a 5xx is looked up on the PR before anything is sent again, so a slow GitHub answer no longer risks a second review.
  • PR review: native and Claude Code review children load no memory or instruction files of their own; the review prompt carries only the memory the reviewer's scope allows, so your user memories never reach a repository's reviewer. Claude Code review and fix sessions run with --setting-sources user, so a PR's own .claude/ settings and hooks never load. Codex review children get none of the worktree's AGENTS.md, no Codex memories and no skill instructions. Codex review and fix sessions treat the checkout as untrusted, so its .codex/config.toml, hooks and rules never load; a fix session's checkout skills are disabled. Only your own ~/.codex/AGENTS.md still reaches a review child.
  • PR review: the reviewer's notices to the watching session are recorded without starting a model turn (experimental.pr_review_prompts brings the old behaviour back).

Fixed

  • PR review: @mendcode review on a head with nothing new no longer answers just "published". The reply names the head, says no new review was posted, and lists the earlier findings it resolved and the ones still open. An explicit review re-checks the open findings, so asking again after a fix closes the threads of the fixed ones, also on a head reviewed before. Where GitHub does not let the account resolve a thread (read access), one reply in it says Fixed in <head> instead of nothing.
  • A notice a Claude Code or other external session did not see (a PR review's result, recorded without a model turn) reaches its next turn whole, up to 3,000 characters, instead of cut after 400.
  • PR review: the pr_review tool no longer asks for approval in a full-access session, and its prompt reads "Review a pull request" instead of "Edit files".
  • PR review: a sleeping laptop or a network outage no longer ends a repo watch. Failing time is counted awake, only a permanent error (a repository gone, access revoked) ends one, and a job that fails on the network spends none of its attempts. Before, 15 minutes asleep ended every watch.
  • PR review: a detached daemon with a repo watch no longer stops itself after 10 idle minutes.

Known limitations

  • Mermaid subgraphs are told apart by title: two subgraphs with the same title are drawn as one frame. In a left-to-right flowchart, a connection back to an earlier box shares the last stretch of the arrow going into it.

Verify

  • 2065a35d PR review platform and tools: reviews in English unless the template says otherwise, stalled turns stopped after 10 idle minutes, big diffs reviewed in parts, fixed findings' threads closed; grep takes context, edit takes edits in one write, apply_patch keeps the file's context lines and shows the file around a near miss; Mermaid flowcharts with subgraphs are laid out as clusters with frames

Binaries: macOS, Apple silicon 71.7 MB · macOS, Intel 76.9 MB · Linux, arm64 109.9 MB · Linux, x64 109.5 MB · Windows, x64 126.2 MB

MendCode Nightly — 2026-10-30 · Build 8

On GitHub

**v0.0.2-nightly.20261030.8** · Nightly · since v0.0.2-nightly.20261030.7 · built from e8ed6df6fe3f MendCode signs in to ChatGPT for itself with OpenAI's Sign in with ChatGPT, keeps its own list of the models your account can use, and Claude models on a new install run in the Claude Code you already have signed in; the setup no longer leaves you at a prompt with no model, and the pull request reviewer keeps working when the daemon starts with a short PATH.

New

  • Sign in with ChatGPT: /connect chatgpt (or control-plane auth login --provider chatgpt --method browser --execute) shows a link; you sign in in the browser, allow MendCode to use your ChatGPT plan, and MendCode keeps a login of its own. No client id is shipped or needed: OpenAI registers MendCode for your account on the first sign-in, and you can limit or revoke it in ChatGPT → Settings → Usage. Requests on that login go to api.openai.com and count against your plan. The link stays open 15 minutes.
  • Own ChatGPT login for new installs (ownLogins): the first setup of a new install makes MendCode's engine sign in to ChatGPT only with /connect chatgpt; the Codex CLI's login file is not read, not even on the daemon's first start before the setup. Installs set up before keep it as a fallback.

Fixed

  • ChatGPT login on new installs: /connect chatgpt said "Set MENDCODE_OPENAI_OAUTH_CLIENT_ID" and the ChatGPT models were unusable, because released builds carry no OAuth client id; it now uses Sign in with ChatGPT, which needs none. A new install's daemon also no longer lists ChatGPT models with the Codex CLI's login in the seconds before its first setup.

Known limitations

  • Sign in with ChatGPT has no device code: sign in on the machine that runs the daemon. On that login there is no native compaction (MendCode's own summary is used), no hosted image generation and no /fast priority. Device code remains for a Codex-style client id you set yourself (MENDCODE_OPENAI_OAUTH_CLIENT_ID).

Verify

  • e8ed6df6 chatgpt: Sign in with ChatGPT, MendCode's own login with no shipped client id; requests on it go to api.openai.com against the plan

Binaries: macOS, Apple silicon 71.4 MB · macOS, Intel 76.6 MB · Linux, arm64 109.6 MB · Linux, x64 109.1 MB · Windows, x64 125.9 MB