mindfork mindfork

mindfork 0.18.0 — a day on a real Mac

mindfork 0.18.0 is out. Since 0.15.0 mindfork has had a macOS build, tested on GitHub's Apple Silicon runners. Those have no screen, so how the app looks and how its keys arrive had never been seen. For this release it ran for a day on a rented Mac mini (M4, 24 GB), first on macOS 26 and then on macOS 15.

What worked

  • The three installs. The one-line script took 2 seconds, Homebrew 9, and cargo install built it in about 3 minutes.
  • Local models on Metal. mindfork setup downloaded llama.cpp's Metal build, and the server was ready 5 seconds after start. Gemma 4 E4B read a prompt at about 400 tokens a second and wrote at about 30.
  • Ollama and LM Studio were found and offered at the first start. On a Mac, LM Studio's app is called Bionic. Its MLX models were found too.
  • The rest: the Python sandbox, notes found by meaning, a chat's folder opened in Finder, speech, an image pasted from the clipboard, and the lock that keeps a second copy from starting.

What it found, fixed in this release

  • Terminal.app before macOS 26 has no 24-bit colour. The full colour mode was unreadable there: the dark background was never painted, light text sat on white, and a row came out bright green. mindfork now draws there in the 256 colours that Terminal.app has. Everywhere else nothing changes.
  • LM Studio's MLX models refuse a long message in their own words. mindfork showed the refusal as a bare error. It now says the conversation no longer fits, gives the way out (/compact, or a new chat), and quotes the server.
  • A stopped request held the engine for about 4 seconds. mindfork had been suggesting a smaller batch after the first message. On Metal that setting costs only about 1 % of prompt speed, and the wait drops to about 1 second. So on a Mac the engine now starts with it.
  • install.sh --from with an archive a browser downloaded. The script used to start the quarantined binary to check it, and then waited on macOS's question. It now installs without starting it and tells you how to clear the mark. Safari unpacks the .gz by itself, and the script now says so and gives the download it can check.

The keys, terminal by terminal

The day's keys were recorded with a new command, mindfork keys. It prints each key you press as mindfork receives it, and what the input box does with it.

  • Terminal.app:
    • a line break is Ctrl+J (the input box's footer says so);
    • Option+←/→ move by words;
    • Home, End and Page Up/Down need Shift, because Terminal.app keeps them for its own scrolling.
  • iTerm2 and Ghostty:
    • a line break is Shift+Enter;
    • Option+Backspace erases a word.
  • Ghostty sends Cmd+→ as Ctrl+E, and in mindfork Ctrl+E deletes the last exchange; your message goes back to the input. Turn on Confirm regenerate / delete in Settings → Interface, or turn those keys off in Ghostty's config (the lines).

macOS stays a preview until more Macs have run it. If a key does nothing in your terminal, run mindfork keys, press it, and put the lines in an issue: they show what your terminal sent.

Your data

Nothing in the data's format changes, and no step runs at the start.

The full list is in the changelog; downloads are on the releases page, and cargo install mindfork builds the same version from crates.io.