Run large language models locally on your Mac. Now teach one to answer like you.
A local LLM runner and benchmark for Apple Silicon, built on Apple MLX. No telemetry, no account, nothing leaves this Mac.
macOS 26 or later · Apple Silicon Mac
Made by Martin Turek

A native Mac app for local AI
MetalMind downloads open-weights language models from Hugging Face in Apple's MLX format and runs them on the GPU and unified memory of your Apple Silicon Mac. Once the weights are on disk it works offline, with no account and no cloud provider in between.
It is not a wrapper around a cloud API, and not an Electron window around llama.cpp. The engine is Swift and Metal on Apple MLX, the interface is SwiftUI, and the whole thing is one application with nothing to install alongside it — no Python, no Docker, no runtime to manage.
New in 1.3
Make your own model
Show a small model three to ten examples of a request and the reply you would have written. MetalMind writes the rest of the practice material, trains on your GPU, and hands back a model that answers in your tone, your format, the role you gave it. No Python, no notebook, no cloud GPU — and nothing you show it leaves this Mac.
Step 1
Show it a handful of examples
Write a request and the exact reply you would have sent. Three at the very least, six to ten is better. Or import them — JSONL, JSON, CSV straight out of Excel, a PDF or a Word file — or pick conversations you already had in MetalMind.
Step 2
MetalMind writes the practice material
A handful of examples is not enough to learn a pattern from, so the model you chose invents new requests like yours and answers them in your style until there are enough. Fifty by default. You read them before anything is trained.
Step 3
The data is checked before it trains
Duplicates and empty rows are dropped. Contradicting answers, replies that only echo the question, examples too long to fit, and one-word answers are all flagged — a few bad examples teach bad habits, and you untick them.
Step 4
Training runs on your GPU
LoRA fine-tuning through Apple MLX, on this Mac, with the power cable in. About one example in six is held back to measure progress on questions the model never practised. It stops by itself when it stops improving and keeps the best point.
Step 5
Compare, then keep it
The same held-back questions go to the original model and to yours, side by side, so you can see what changed before you commit to it. What you keep appears in the model picker under Your models.
The whole walkthrough
Every step of the wizard, what to import and from where, how the data is checked, and which models can be trained on which Mac.
What training will not do
It does not learn facts
Training teaches a model how to answer, not what is true. For questions about your prices, contracts or manuals, attach the files in a chat instead — then the model reads the real text every time.
It does not make a model smarter
A small model stays a small model. It gets better at your task, not better in general.
Your models only answer
They do not open files, search folders, or add calendar events. The regular models do that; a trained one is for replying.
Nothing is uploaded, ever
Your examples, the generated practice material, the training run and the finished model all stay on this Mac. There is no account to sign in to and no server to send them to.
A few dozen megabytes, not a second copy
What you train is an adapter layered over the base model, like a lens over a camera. Ten variations of an idea cost ten adapters, not ten copies of the weights, and the original model is left exactly as it was.
Versions you can go back to
Rename a model, edit the instructions it chats under, or train it again with more examples. Earlier versions are kept, so a retrain that turns out worse is not a one-way door.
It is a standard adapter, not a lock-in
Export writes adapter_config.json and adapters.safetensors — the layout mlx-lm reads — with the command to run it. Import works the same way round, whether the adapter came from MetalMind or from your own mlx-lm run.
On the local API as custom/<name>
A trained model is served over the OpenAI-compatible server like any other, so Cursor, Zed or a script reaches it by changing the model string. This, and chatting with a trained model, is what Pro pays for.
Planning a model and preparing its data are free, so the decision to buy comes with real examples in front of you. Training the model, chatting with it, and serving it over the local API are Pro.
Privacy
Nothing leaves your Mac
Not as a slogan — as a list of what the application actually does. If it opened a connection you did not ask for, it would be written here too.
Models run on your GPU
Prompts, context, and generated tokens are processed by Apple MLX on the GPU of your Mac. No prompt is ever sent to a server, because there is no server to send it to.
No telemetry of any kind
No analytics SDK, no usage events, no crash reporting, no advertising identifier. The app does not know how often you open it.
One outbound connection, on request
The only network connection MetalMind opens by itself is to Hugging Face, to search for models and download weights — and only after you ask for a specific model.
The API server is bound to 127.0.0.1
The local server listens on the loopback interface only. It is not exposed on your network interface, so nothing on your LAN can reach it.
The model sees only what you hand it
Files and folders are read when you drag them in, and the calendar when you grant access. Nothing is indexed in the background, and no directory is walked that you did not open.
Nothing is written without a click
Every file edit, calendar event, reminder, and shortcut run is shown to you first and waits for your approval. There is no autonomous mode to switch on, because there is no switch.
Conversations are one file you own
Chat history is stored as a single file in Application Support inside the app sandbox. Delete the file and the history is gone. Nobody else has a copy.
Training happens here too
The examples you write or import, the practice material MetalMind generates from them, and the training itself all run on this Mac. The model you end up with is a file in Application Support. None of it is uploaded, and no part of it is used to train anything of ours.
Speech is processed on device
Dictation and read-aloud use speech models running locally through MLX. Listening starts and stops on your click, and a dictated recording exists only in memory until it has been transcribed.
Who makes it
MetalMind is built by one person: an independent developer in the Czech Republic, with no company behind it and no investors to answer to. That is also the short answer to why there is no account system, no analytics, and no server — there is nobody here who would benefit from your data.
Agent tools
What it can do on your Mac
A local model that can only talk is a demo. A downloaded model in MetalMind reads the files you give it, looks at your schedule, and proposes changes — and every one of those changes stops and waits for you.
Your workspace, read locally
Drag files or whole folders into the composer. The model reads them, searches across them, and answers about the code in front of it — on your GPU, with nothing uploaded.
Edits arrive as a diff, not as a surprise
A proposed change is rendered as a side-by-side diff before anything touches disk. The model cannot write a single byte until you click.
Calendar and reminders
Ask about your schedule, or have the model stage an event or a reminder through EventKit. Reading needs your permission once; every new entry needs your approval each time.
Shortcuts and the Services menu
Two App Intents — Transform Text and Run Prompt — put a local model inside Shortcuts, and the model can launch system shortcuts you already have.
Reading is free. Writing — saving a file, adding an event, running a shortcut — is Pro. The diff previews and permission cards are on every plan, because they are what makes the rest safe, not a feature to charge for.
Voice and documents
Speak to it, and hand it your documents
Dictation, read-aloud, documents and recordings — all of it processed by models on this Mac, and all of it free. A recording of a meeting you could not send to a cloud transcription service is exactly the kind of thing this is for.
Dictate a message
Speak in almost any language and watch the words appear as you talk. Whisper runs on this Mac; listening starts and stops on your click, and the audio lives only in memory until it has been transcribed.
Have replies read back
Any answer read aloud in one of eight English voices by a speech model on this Mac. It loads in a moment and is released shortly after it falls silent, so it never holds memory the language model could use.
Hand it a document
Drop a PDF, a Word file, RTF or OpenDocument on a message and the model answers about what is inside. The text is extracted with PDFKit and the importers macOS already has — nothing is uploaded and no parsing service is involved.
Hand it a recording
Drop an audio file and it is transcribed locally, then summarised, searched or answered about like any other text. A meeting recording never leaves the Mac it was recorded on.
For developers
Point your editor at 127.0.0.1 instead of a cloud API
The server speaks the OpenAI protocol, so the client you already use needs one changed base URL and nothing else.
OpenAI-compatible, on localhost
A /v1/chat/completions endpoint with SSE streaming. Port 8080 is only the default — set it to whatever you want in Settings → Server, whether 8080 is taken or you simply keep that range for something else.
Works with the editors you already use
Cursor, VS Code, Zed, and anything else that speaks the OpenAI protocol. The API key field can be any string — it is not checked, because there is no account.
Concurrent requests queue instead of failing
Requests are serialised through the engine. Above the queue limit the server answers 503 with a Retry-After header, which standard clients honour and retry on their own.
Structured output
Pass response_format with a JSON Schema and the server constrains generation to that shape. It cannot be combined with stream — enforcing a shape means the whole reply has to be produced before it is checked.
Request inspector, in the free tier
Every call with timings and full payloads, plus Copy as cURL. A paid API you cannot debug is worth less than a free one you can, so this is not behind the paywall.
Your own models, served too
A model you trained is served under the id custom/<name> and appears in /v1/models alongside the downloaded ones, so the client you already configured reaches it by changing one string. Serving a trained model over the API needs Pro, as using it in chat does.
curl http://127.0.0.1:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer local" \
-d '{
"model": "qwen2.5-7b-instruct-4bit",
"messages": [{"role": "user", "content": "Explain unified memory."}],
"stream": true
}'{
"language_models": {
"openai_compatible": {
"MetalMind": {
"api_url": "http://127.0.0.1:8080/v1",
"api_key": "local",
"available_models": [
{ "name": "qwen2.5-7b-instruct-4bit", "max_tokens": 8192 }
]
}
}
}
}Both examples assume the default port. Change it in Settings → Server and the rest stays identical — only the number moves. Cursor and VS Code take the same two values in their own settings: the base URL http://127.0.0.1:<port>/v1 and an API key, which can be any non-empty string.
Features
What is free, and what is in Pro
Free
Start with no download
If your Mac has Apple Intelligence enabled, the system model is offered as a choice and is available immediately.
Local chat up to 8B
Run open-weights models up to 8 billion parameters, downloaded in MLX format from Hugging Face.
Zero-RAM idle
After 5 minutes without activity the weights are released from unified memory, and reloaded on your next prompt.
Live telemetry
Tokens per second, time to first token, and unified memory in use — while the model is generating.
OpenAI-compatible server
The full local server, capped at 25 requests in the free tier.
Request inspector
Timings, payloads, and Copy as cURL for every request the server handled.
Model browser
Search Hugging Face from inside the app, with an estimate of whether a model fits in your memory before you download it.
Files and calendar, read
The model searches and reads what you share, and looks at your calendar and reminders. It asks before opening anything.
Documents and recordings
Drop a PDF, a Word file or a recording on a message. Documents are read and recordings transcribed on this Mac, with what macOS already ships.
Dictation
Speak a message in almost any language and watch it appear as you talk. Transcribed on this Mac, and never recorded to disk.
Read aloud
Any reply read back in one of eight English voices, by a speech model running locally.
Plan your own model
The whole path up to training — picking the goal, writing or importing examples, generating the practice material and checking it — costs nothing. You decide whether to buy Pro with real data in front of you.
Diff previews and permission cards
Every proposed change is shown before it happens, on every plan. Safety is not a feature to sell — it is the reason the rest is safe to use.
Collapsible reasoning
Chain of thought from reasoning models is folded into a Thought section you can open, instead of flooding the answer.
History of 3 conversations
The last three conversations are kept and searchable.
Pro Subscription, or buy it once
Your own models
Train a model on your examples, chat with it, and serve it over the local API. Planning the model and preparing its data stay free — Pro is the training run and everything after it.
Models of any size
No parameter ceiling, including Mixture-of-Experts models — as far as your unified memory goes.
Unlimited API requests
The 25-request cap on the local server is removed.
Agent actions
The model saves files, adds events and reminders, and runs shortcuts — each one shown to you first, each one waiting for your click.
Markdown export
Export a conversation to Markdown with the measured metrics attached to each answer.
40 conversations
History grows from 3 to 40 stored conversations.
Sampling and system prompt
Set your own temperature and your own system prompt.
Configurable auto-sleep
Choose when weights are evicted: never, or after 1, 5, 15, or 60 minutes.
Performance
Numbers, with the machine attached
MetalMind measures tokens per second and time to first token on every run, and keeps the best run for each model. Throughput depends on the chip, the memory bandwidth, the model, and the quantisation — so each figure below names all four. A number without that context tells you nothing.
| Mac | Memory | Model | Quant | tok/s | TTFT |
|---|---|---|---|---|---|
| Apple M4· 10 GPU cores | 16 GB unified | Qwen2.5-0.5B-Instruct | 4-bit | 68.0 | 123 ms |
Scroll the table sideways →
Apple Intelligence
The system model, when your Mac has one
What you get
- If Apple Intelligence is enabled on your Mac, the system model appears as a choice in the model picker.
- It is available immediately. Nothing is downloaded, and it takes no additional disk space.
What it cannot do
- A smaller context window than the open-weights models you download.
- Less control over sampling — temperature and system prompt do not apply the same way.
- Responses are subject to Apple content rules.
- It is not served through the local API. The OpenAI-compatible server only serves MLX models.
Pricing
Three ways to pay for Pro. One of them is once.
Every paid plan unlocks the same features — the difference is only how long you pay for them. The lifetime unlock is a single payment with no renewal and nothing to cancel, which is the option most tools in this category do not offer at all. Sold through the App Store and tied to your Apple ID.
Chat, dictation, read-aloud, documents and recordings are free with models up to 8B — and so is everything up to the training run when you make a model of your own. Pro is the training itself, using and serving the models it produces, larger models, unlimited local API requests, agent actions, Markdown export, the full conversation archive, and the generation controls.
Free
$0
Local chat with models up to 8B, the local server with 25 requests, the request inspector, live telemetry, the model browser, and 3 stored conversations.
No purchase, no account
Pro — 3 months
$4.99
/ 3 months≈ $1.66 / mo
Every Pro feature, renewed every three months. Cancel in the App Store at any time.
Quarterly flexibility
Pro — 1 year
$9.99
/ year≈ $0.83 / mo
Every Pro feature for a year. Half the monthly cost of the quarterly plan.
Annual access
Pro — Lifetime
$16.99
one-time
Every Pro feature, bought once. No renewal, nothing to cancel — roughly the price of twenty months of the annual plan, and then it stops.
Pay once, keep forever
Get MetalMind on the Mac App Store. Subscriptions are managed and cancelled in the App Store. The lifetime unlock has nothing to manage. Restore Purchases brings any of them back on a new Mac signed in to the same Apple ID.
FAQ