GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Features
  • Docs
  • Blog
  • Changelog
  • Install
  • Terms and limits
  • Credits
  • GitHub
  • License

This view

  • Original page
  • New address

GeezerVison is showing www.mendcode.dev — MendCode: AI Coding Terminal, CLI Runtime, and Developer Harness

As little or as much coding agent as you want.

MendCode can be minimal or complete: it runs its own engine, or Claude Code, Codex and pi and ACP agents in the same screen, and adapts to the way you already work. Minimalist carries the least, full carries everything, and every feature is optional. At the prompt it uses 130 MB of memory, and 2.6 KB of disk per session.

curl -fsSL https://github.com/MendCode/MendCode/releases/latest/download/install.sh | sh
   Sessions                    ⠹2 ?1 │                                     │   Today                             │ ▌ · Cap coupon discounts at t…  now │   ⠹ Audit the webhook retries   now │   ⠹ Keep CI green on main        1m │   ? Approve the orders migrati…  2m │   · Write the release notes     48m │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │                                     │
   fix/coupon-cap ~/Code/shop-api        Cap coupon discounts at the coupon's limi                 +33 -2 |          46%  
                                                                                                                             › Orders with a capped coupon get the full percentage off. Find why, fix it and add a test.                                                                                                                                                           ┃ Thought: Locating the discount · 720ms                                                                                  ┃ The cap lives on the coupon; check where totals() reads the rate.                                                                                                                                                                                  ◇ Read 3 files · Grep 1                                                                                                                                                                                                                             ✎ Edit src/cart/totals.ts  +2 −1                                                                                            18     const subtotal = sum(cart.items.map(lineTotal))                                                                    19 -   const discount = subtotal * cart.coupon.rate                                                                       19 +   const raw = subtotal * cart.coupon.rate                                                                            20 +   const discount = Math.min(raw, cart.coupon.cap ?? raw)                                                             21     const total = roundCents(subtotal - discount)                                                                      22     return { subtotal, discount, total }                                                                               23   }                                                                                                                                                                                                                                            $ bun test test/totals.test.ts  3 pass · 0 fail                                                                                                                                                                                                     ◈ Graph callers totals  2 lines                                                                                                                                                                                                                     ◔ Task Check the API's coupon preview  reviewer · GPT-6-Luna-Mini · 4 calls                                   21.4s                                                                                                                                 ✓ Todos 3/3                                                                                                                 ✓ Find where the cap is ignored                                                                                           ✓ Cap the discount in totals() and test it                                                                                ✓ Check the API's coupon preview                                                                                                                                                                                                               • totals() never read coupon.cap: a $15-cap coupon took $40 off a $200 cart.                                                                                                                                                                          • The discount is now min(subtotal × rate, cap).                                                                          • The graph lists two callers; a sub-agent checked preview().                                                             • The new test covers the cap: 3 passed.                                                                                                                                                                                                            The fix                                                                                                                                                                                                                                             ╭─ ts ────────────────────────────────────────────────────────────────────────────────────────────────────────── copy     │ const discount = Math.min(subtotal * coupon.rate, coupon.cap)                                                           │ return roundCents(subtotal - discount)                                                                                                                                                                                                            │ A coupon's cap is the most it may take off one order, in cents.                                                                                                                                                                                   ┃ NOTE                                                                                                                    ┃ preview() calls totals() too, so the API's preview is capped as well.                                                                                                                                                                             ┃ WARNING                                                                                                                 ┃ Orders placed before this fix kept the uncapped discount.                                                                                                                                                                                         ✓ Cap the discount in totals()                                                                                            ✓ Test the capped coupon                                                                                                  ○ Release note                                                                                                                                                                                                                                                                      ┌──────────┐                                                                                                           ┌─▶│ checkout │                                                                                 ┌──────┐       ┌────────┐ │  └──────────┘                                                                                 │ Cart ├────┬─▶│ totals ├─┤                                                                                               └──────┘    │  └────────┘ │  ┌─────────┐                                                                                              │             └─▶│ preview │                                                                               ┌────────────┐ │                └─────────┘                                                                               │ Coupon cap ├─┘                                                                                                          └────────────┘                                                                                                                                                                                                                                      ┌──────┬──────┬─────┬────────┬───────┐                                                                                    │ Cart │ Rate │ Cap │ Before │ After │                                                                                    ├──────┼──────┼─────┼────────┼───────┤                                                                                    │ $200 │  20% │ $15 │    $40 │   $15 │                                                                                    │ $50  │  20% │ $15 │    $10 │   $10 │                                                                                    └──────┴──────┴─────┴────────┴───────┘                                                                                                                                                                                                              ┌──────────┐                    ┌────────┐     ┌────────┐                                                                 │ checkout │                    │ totals │     │ coupon │                                                                 └────┬─────┘                    └───┬────┘     └───┬────┘                                                                      ┆        totals(cart)          ┆              ┆                                                                           ├─────────────────────────────▶┤              ┆                                                                           ┆                              ┆              ┆                                                                           ┆                              ┆  rate, cap   ┆                                                                           ┆                              ├─────────────▶┤                                                                           ┆                              ┆              ┆                                                                           ┆                              ┆  20%, $15    ┆                                                                           ┆                              ├◀┄┄┄┄┄┄┄┄┄┄┄┄┄┤                                                                           ┆                              ┆              ┆                                                                           ┆  min(subtotal x rate, cap)   ┆              ┆                                                                           ├◀┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┤              ┆                                                                           ┆                              ┆              ┆                                                                      ┌────┴─────┐                    ┌───┴────┐     ┌───┴────┐                                                                 │ checkout │                    │ totals │     │ coupon │                                                                 └──────────┘                    └────────┘     └────────┘                                                                                                                                                                                           took 30.9s · ended 3:44 PM                                                                                           
   ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────     ❭                                                                                                                         ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────      ~/Code/shop-api · fix/coupon-cap · +33 -2 · 1 loop                                       GPT-6-Luna · medium · ◑ 46%  
❯ /tier balanced

The default: tool cards, the code graph, sub-agents, diagrams.

Ask your agent about MendCode

Paste this into Claude Code, Codex, pi or any chat. It carries the measured numbers with their dates and where MendCode measured worse, so your agent can compare it with what you use now instead of repeating a pitch.

prompt.md 181 lines
I'm deciding whether to try MendCode (https://www.mendcode.dev), a coding agent for the terminal. Everything you need is below; open the linked docs only for a detail that is missing. Then tell me, plainly:

1. What MendCode is and how it differs from the coding CLI I use now (ask me which one if you don't know).
2. Which tier fits how I work, and why.
3. Where it is lighter or heavier than other CLIs, quoting only the measured numbers below with their dates.
4. What it does that my current CLI doesn't, and where it is worse.

Don't invent figures. If something isn't below or on the site, say you don't know.

## What it is
- A terminal UI with its own agent engine (ChatGPT login, API keys, or local models in Ollama and LM Studio). It can also run Claude Code, Codex, ACP agents and pi inside the same screen, sessions and approvals, with their own logins.
- Sessions live in a local daemon: close the terminal and they keep running; open them from any terminal.
- Three tiers over 79 features, each also switchable on its own (/tier minimalist|balanced|full):
- Minimalist (12 of 79 features on): The agent and almost nothing around it: the smallest prompt and the quietest screen.
- Balanced (39 of 79 features on): Minimalist plus the tools that save tokens on a real project. What the installer picks unless you ask.
- Full (52 of 79 features on): Everything MendCode has, for when you want to try all of it.

## What it does that other CLIs don't
### As little or as much as you want, all of it yours
Three starting points: 12, 39 or 52 of 79 features on. After that it is yours: `/tier <feature> on|off` for any feature, `/customize` for any row, a profile for all of it. The manual ships in the binary (`mendcode docs`), so the agent configures MendCode on an approval card, with no web search or skill to load. Docs: https://www.mendcode.dev/docs/tiers
- Minimalist: The least memory and the quietest screen.
- Balanced: The installer's pick: code graph, sub-agents, workflows, MCP.
- Full: Everything: the panel, the graph autopilot, worktree sub-agents, other CLIs as sub-agents.

### One switch changes the whole CLI
A profile is one folder that restyles and re-equips the whole CLI: theme, home, prompt, keys, views, skills, commands, agents, MCP and workflows. Turn it off and your setup is back; it never writes into your settings. Docs: https://www.mendcode.dev/docs/profiles
- One switch: Space on `/profiles`. `mendcode profile install github:you/look` adds one.
- A marketplace: `/marketplace` searches every catalog; Enter previews before installing.
- What it takes over: Every replaced setting, key and view; k keeps yours.
- Checked first: Every runnable file listed and fingerprinted, installed on your approval.
- Areas by folder: `mendcode area add work ~/Code/acme`: its own memories, models and permission.

### Change any layer and watch it change
The screen, the keys, the model's prompt, its tools and the hooks around each call are settings or files you own. `/customize` draws the chat beside every row, so you see a change before you leave. Docs: https://www.mendcode.dev/docs/customize
- Look: Every built-in and v1 theme, Markdown colours, footer segments.
- Views: Messages, tool cards, footer, sidebar and pages are slots you can replace.
- Keys: keybindings.json, your own leader key, vim mode.
- Prompt: Prompt modes, output styles, AGENTS.md or CLAUDE.md with @file, a model per role.
- Tool calls: Hooks stop a call, tool_define writes one; MCP, skills and profiles add more.
- Features: Any one feature on or off: `/tier <feature> on`.

### Other CLIs as engines
| Engine | Runs as | Login | MendCode's tools | Approvals |
| --- | --- | --- | --- | --- |
| Native | MendCode's own model loop | ChatGPT login, API keys, or local models in Ollama and LM Studio | All of them | MendCode's |
| Claude Code | Your claude binary, over stream-json | Your Claude login; MendCode never reads it | Through a local MCP server, in balanced and full | On MendCode's cards |
| Codex | codex app-server, over JSON-RPC | Your ChatGPT login | Codex's own | Codex's requests, on MendCode's cards |
| ACP agents | Agent Client Protocol: Gemini CLI, Cline, Kimi and others | The agent's own | When the agent accepts MCP over HTTP | On MendCode's cards |
| pi | pi in RPC mode; off until you turn it on | pi's own | pi's own | Through a pi extension hook |

### Pull request review
- Two passes: One pass finds candidates, a fresh one tries to refute each. Only confirmed findings post.
- Context from the graph: The diff plus the callers and callees of every symbol it touches.
- Your gh, your model: No GitHub App, webhook server or stored token.
- Threads close themselves: Each push re-checks open findings and resolves the fixed ones.
- Only what is new: A push is reviewed from the last reviewed head, not from scratch.
- @mendcode in the PR: review, explain, describe, pause, resume and, if allowed, fix with passing checks.
- Every PR of a repository: `/pr watch-repo` runs in the daemon, with the terminal closed.
- Off until the repo says so: Nothing posts until .mendcode/review.yaml sets enabled: true.

### Answers drawn as documents, diagrams included
MendCode draws the model's Markdown itself: headings, aligned tables, highlighted code, coloured callouts and Mermaid diagrams laid out in the terminal. Docs: https://www.mendcode.dev/docs/mermaid
- Tables: Columns fitted to the window, cells wrapped, headers in bold.
- Mermaid: Flowchart, sequence, class, state, gantt, charts and pies, in boxes and lines.
- Pictures where possible: Kitty, Ghostty, iTerm2 and sixel paint charts as images; elsewhere, cells.

### Comment on the answer and on the diff
Select part of an answer and press ctrl+g, or press c on a line or hunk in `/changes`. Everything goes back as one message, each note pinned where it applies. Docs: https://www.mendcode.dev/docs/editor#comments-on-an-answer
- On an answer: Up to nine passages as numbered chips, kept with the draft across restarts.
- On a diff: Lines, selections or hunks; L lists them, send review sends them.
- Yours to shape: The key, chips, margin marks and message template are `/customize` rows.

### Images generated and shown in the chat
With a ChatGPT login (MendCode's or Codex's) or an image API key, the model generates pictures and the chat shows them, in any engine, Claude Code included. Docs: https://www.mendcode.dev/docs/tools-web
- Subscription or key: Codex's login, OpenAI, OpenRouter or any OpenAI-style host, with its own image model.
- In the transcript: The picture, its size, and open, folder or copy path under it.

### A prompt fitted to each provider, and compaction that keeps the request
The native engine writes the system prompt for each model family, sends each provider its own cache hints and compacts at a point set per model. After a compaction your last request carries over word for word. Docs: https://www.mendcode.dev/docs/prompt-modes
- Four prompt modes: minimal, focus (the default), guide and full; `/prompt-mode` switches.
- Cache per provider: Keys for Responses hosts, breakpoints for Anthropic; the key changes only with the prefix.
- Compaction point: Per model, provider or globally, never past the provider's window.
- Your request survives: A summary in fixed sections, your last request appended as written.

### Memory you approve, and Dream to tidy it at night
The model proposes what it learned and nothing is saved until you approve. Dream reviews recent sessions in the background, proposes more and merges duplicates, without touching files or running commands. Docs: https://www.mendcode.dev/docs/dream
- Pending first: Approve, edit or reject each proposal in `/memory`.
- Dream: Nightly, with its own budget and a safety report. Off until you schedule it.
- A graph: Saved memories linked by what they share.

### Keys out of .env, chats encrypted at rest
A .env sits in your checkout as plain text. `/env` keeps the same values in an encrypted vault outside the repository and hands them to the agent's shells; the model gets the names, not the values. `/privacy` encrypts your local chats, off until you turn it on. Docs: https://www.mendcode.dev/docs/environment-privacy
- Paste a .env: Names only on screen: new, replaces or refused. Enter saves them encrypted.
- Scoped: Session, project or global; the closest wins.
- Masked: A value the native engine prints comes back as `‹env:NAME›`.
- Chats at rest: AES-256-GCM database and files; back up `keys/` yourself.

### A code graph, only when you ask for it
MendCode can index a project into symbols, callers and imports, so the model queries the graph instead of reading whole files. Nothing is indexed until a graph tool or the code view asks; full can keep it built. Docs: https://www.mendcode.dev/docs/code-graph
- Asked, not assumed: graph_find, graph_callers, graph_file_api and graph_map answer with file and line.
- Impact after edits: The callers and importers of each change, two hops out.
- Opt-in everywhere: `/tier graph_context` and graph_autopilot; never your home folder.

### Sub-agents with modes, and work that keeps going
Each sub-agent is a session of its own: open it, follow it, approve its requests or move it to another model with its history. Goals, loops, fan-out and workflows start more and keep going until the work is done. Docs: https://www.mendcode.dev/docs/agents
- Foreground or background: Wait for the answer or get an id; `/tasks` follows them all.
- Fork: Starts from the parent's conversation, read from cache: the prompt is only the task.
- Worktree: Its own checkout and branch; nothing reaches yours until you merge.
- Any engine: Claude Code, Codex, pi or ACP, each with its own model and effort.
- Goals and loops: `/goal` runs to done or to its budget; `/loop` runs on a schedule with gates.
- Fan-out and workflows: One prompt to two to eight models in worktrees, or a budgeted script.

### Sessions talk to each other, across CLIs
A session can list, read and message the project's other sessions, whatever engine each runs. Claude Code and Codex can hand work to a MendCode model and get the answer back. Docs: https://www.mendcode.dev/docs/peers
- sessions and read: The project's sessions, and any one as Markdown.
- tell and threads: Message a session, wait for its reply or start a new one.
- From Claude Code and Codex: delegate_task runs a sub-agent on any MendCode model, same limits.
- Other projects ask: A message to another project needs your approval, in every mode.

### A question on the side, a second opinion, and what changed
Three commands that never interrupt the turn: a side chat, a second opinion and what changed since your last update. Docs: https://www.mendcode.dev/docs/btw
- /btw: A side chat about the session: reads files and git, leaves your draft alone.
- /advisor: A second model checks plans, repeated failures and edits before a turn ends.
- /whatsnew: What changed since you last looked, what fits your work first.

### And more, each one optional
- Sessions in the daemon (mendcode --session <id>): Close the terminal and the turn keeps running; another terminal, or another machine with a token over TLS, attaches to the same turn and replays what it missed. Docs: https://www.mendcode.dev/docs/remote
- One tree (mendcode): Several sessions in one checkout at the same time: no worktree, branch or pull request per agent. Docs: https://www.mendcode.dev/docs/one-tree
- Telegram (/remote-control): Send prompts, read answers and approve tool calls from your phone. Off until you pair a chat. Docs: https://www.mendcode.dev/docs/channels
- OS sandbox (/sandbox): The commands the model runs start inside an OS sandbox, under the same approvals. Docs: https://www.mendcode.dev/docs/sandbox
- Language servers (lsp): Definitions, references, hover and call hierarchy for the model, diagnostics after each edit. Docs: https://www.mendcode.dev/docs/lsp
- Browser (browser): Tabs the model opens, reads and clicks, each open on an approval. Docs: https://www.mendcode.dev/docs/browser
- File viewer (click a path): Click a path in the chat and the file opens beside it, the cited lines selected. Docs: https://www.mendcode.dev/docs/file-viewer
- Plan review (plan mode): The model submits a plan; you approve, edit or send it back before anything changes. Docs: https://www.mendcode.dev/docs/plan-review
- Evolution (evolution): Corrections that recur across sessions become memory or instruction proposals. Off by default. Docs: https://www.mendcode.dev/docs/evolution
- Budgets (budgets): A warning and a stop in dollars for API usage, and a confirmation before an expensive model. Docs: https://www.mendcode.dev/docs/budgets
- Pasted secrets (/env): A key or token you paste becomes a marker; the model never reads the value. Docs: https://www.mendcode.dev/docs/secrets
- Computer use (/tier computer on): On macOS, the model sees and drives one window you approved. Off until you turn it on. Docs: https://www.mendcode.dev/docs/computer
- herdr and tuios (mendcode): Their sidebars show what a MendCode pane is doing, with nothing to install. Docs: https://www.mendcode.dev/docs/herdr

### The basics
- /changes: per-file diffs; comment on lines and send the comments back as one message.
- /permissions: ask, edits, full, plan or smart, enforced by the daemon before a tool runs; pasted secrets become markers.
- Usage limits: a checkpoint at 90 % of the quota, and the session resumes by itself when the limit resets.

## Memory and disk, logged in (2026-11-03, one Mac, pseudo-terminal 160×45, temporary HOME with only that tool's login, gpt-6-luna (Haiku for Claude Code), same read-only question; medians of three launches for MendCode and pi)
At the prompt / right after the reply. Source: https://www.mendcode.dev/blog/lighter-than-pi
| Tool | RSS | Footprint | Disk per session |
| --- | --- | --- | --- |
| MendCode minimalist | 129 / 138 MB | 63 / 67 MB | 2.5 KB |
| MendCode balanced | 130 / 139 MB | 64 / 66 MB | 2.6 KB |
| MendCode full | 131 / 140 MB | 64 / 69 MB | 2.6 KB |
| pi | 133 / 139 MB | 81 / 88 MB | 2.85 KB |
| Claude Code (Haiku) | 289 / 314 MB | 146 / 152 MB | 302 KB |
| Codex CLI | 310 / 507 MB | 215 / 330 MB | 43 KB |
| OpenCode 1.19.5 | 1,220 / 1,324 MB | 551 / 591 MB | 28 KB |

## Install size and startup (2026-10-29, the same Mac, installed versions)
| Tool | Version | Install | --help |
| --- | --- | --- | --- |
| MendCode | dev build | 70.9 MB | 34 ms |
| OpenCode | 1.19.3 | 144.8 MB | 231 ms |
| Claude Code | 2.1.312 | 276.0 MB | 46 ms |
| Codex CLI | 0.162.1 | 338.2 MB | 9 ms |

## One eval (2026-10-06 · gpt-6-luna, medium effort · 12 tasks × 3 runs each · MendCode in the balanced tier)
| Harness | Solved | Input tokens | Uncached input | Wall time |
| --- | --- | --- | --- | --- |
| Codex CLI | 32/36 | 3.40 M | 0.46 M | 28 s |
| MendCode | 33/36 | 1.00 M | 0.38 M | 22 s |

## Where it measured worse
- CPU per turn: MendCode spends 1.1 to 1.5 s on the weigh-in question, pi 0.2 s. Each MendCode frame rebuilds every row; pi redraws only what changed.
- Startup of --help: Codex CLI starts in 9 ms, MendCode in 34 ms. Startup is not session weight.
- The eval is one machine, one model and twelve short tasks, against Codex CLI only; MendCode had a lower cache hit.
- Claude Code, Codex and pi have run as engines with real accounts; ACP is tested only against fake transports.
- Computer use is macOS only.

## Install
- macOS and Linux: curl -fsSL https://github.com/MendCode/MendCode/releases/latest/download/install.sh | sh
- Windows (PowerShell): irm https://github.com/MendCode/MendCode/releases/latest/download/install.ps1 | iex
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.