What you need to run it.
Eight steps, and only the first two happen more than once.
Open the .dmg and drag Dunesies into your Applications folder.
This is automatic. The app downloads a prebuilt llama.cpp engine on first launch, around thirty seconds, once.
The Models tab rates every model against your real hardware, so start with anything marked Runs Great. 7B or 8B is the sweet spot on 16 GB machines.
Click download and wait for the file to land, paste a Hugging Face GGUF link, or choose a .gguf file already on your disk.
Switch to the Chat tab, choose your model from the pill at the top, and type. Answers stream back as they generate. The plus button starts a new session.
Use the paperclip to attach a PDF, source file, CSV or log and ask about its contents. Vision models accept images too.
Once a model is downloaded you can disconnect entirely. On a plane, on a train, or on a locked down network, it works exactly the same.
Keep several models installed and change between them from the picker at the top of the chat. Each session remembers what it was started with.
A model is a single .gguf file on your disk. You download it once, and it stays exactly as it is: no silent updates, no retirement notice, no change in answers overnight.
The Models tab has four sources:
Every model you have already installed. Pick one and start a chat.
Nineteen ready to run models, one click each. This is the tab to use first.
A direct Hugging Face link to a .gguf file, for anything outside the suggested list.
A .gguf file already sitting on your disk. Nothing is downloaded.
Open the Custom URL tab and paste a direct link to the .gguf file. It has to be the direct file link, the one containing resolve/main, not the model’s landing page.
https://huggingface.co/username/model/resolve/main/file.gguf
Open the model repository, go to Files and versions, and choose the quantisation you want. Q4_K_M is what every suggested model uses.
Use the file’s download link rather than the page URL. It contains resolve/main and ends in .gguf.
The model name is optional. Leave it empty and it is taken from the URL.
The file lands on your disk and is yours. Everything after this works with no connection.
You do not have to work this out yourself. The app reads your actual memory and chip and labels every model before you spend time downloading it. This is how that label is decided.
First it sets aside memory for the system, then rates the model against what is left:
| Your machine | Usable | Runs Great up to | A good first model |
|---|---|---|---|
| 8 GB Apple Silicon | 5.5 GB | 3.3 GB | Gemma 2 2B or Qwen2.5 3B |
| 16 GB Apple Silicon | 13.5 GB | 8.1 GB | Llama 3.1 8B or Qwen2.5 7B |
| 32 GB Apple Silicon | 29.5 GB | 17.7 GB | Gemma 2 27B or Qwen2.5 14B |
| 64 GB Apple Silicon | 61.5 GB | 36.9 GB | Qwen2.5 32B or Mixtral 8x7B |
| 16 GB Intel | 12.5 GB | 6.3 GB | Qwen2.5 7B or Mistral 7B |
Nineteen models, one click each. Every one is Q4_K_M except Phi-3 Mini, so sizes are directly comparable.
| Model | Parameters | Download | Quant | Best for |
|---|---|---|---|---|
| Gemma 2 2B Instruct | 2B | 1.6 GB | Q4_K_M | Quick responses, low resources |
| Qwen2.5 3B Instruct | 3B | 1.9 GB | Q4_K_M | General chat, quick responses |
| Llama 3.2 3B Instruct | 3B | 2.0 GB | Q4_K_M | General purpose, fast |
| Phi-3 Mini 3.8B | 3.8B | 2.2 GB | Q4 | Reasoning, coding, chat |
| Phi-3.5 Mini 3.8B | 3.8B | 2.3 GB | Q4_K_M | Reasoning, efficient performance |
| Qwen2.5 7B Instruct | 7B | 4.4 GB | Q4_K_M | General purpose, versatile |
| Mistral 7B Instruct v0.3 | 7B | 4.4 GB | Q4_K_M | Chat, reasoning, coding |
| Qwen2.5 Coder 7B | 7B | 4.7 GB | Q4_K_M | Coding, lightweight |
| Llama 3.1 8B Instruct | 8B | 4.9 GB | Q4_K_M | General purpose, versatile |
| Gemma 2 9B Instruct | 9B | 5.4 GB | Q4_K_M | Reasoning, math, science |
| CodeLlama 13B Instruct | 13B | 7.9 GB | Q4_K_M | Code generation, debugging |
| Qwen2.5 14B Instruct | 14B | 8.5 GB | Q4_K_M | Advanced chat, analysis, coding |
| Gemma 2 27B Instruct | 27B | 16 GB | Q4_K_M | Advanced tasks, high quality |
| Qwen2.5 32B Instruct | 32B | 19 GB | Q4_K_M | Professional tasks, complex reasoning |
| Qwen2.5 Coder 32B | 32B | 19 GB | Q4_K_M | Advanced coding, debugging, refactoring |
| DeepSeek Coder 33B | 33B | 19 GB | Q4_K_M | Professional coding, architecture design |
| Mixtral 8x7B Instruct | 47B (8x7B MoE) | 26 GB | Q4_K_M | Efficient large model, strong general reasoning |
| Nous Hermes 2 Mixtral 8x7B | 47B (8x7B MoE) | 26 GB | Q4_K_M | Enhanced chat, instruction following |
| Llama 3.3 70B Instruct | 70B | 40 GB | Q4_K_M | Professional use, complex reasoning |
The documents you would never upload anywhere.
PDFs, source files, CSVs, logs and markdown. Images too, when a vision model is loaded.
A session can carry its own set of documents, so a work session keeps your project docs and a study session keeps your textbook.
Every conversation runs in its own process with its own history, model and settings. Context never bleeds between chats.
Local search across every session you have ever had, with one click switching between conversations.
Proof, not a promise.
Models run on your machine through llama.cpp. Nothing is uploaded, nothing is logged remotely.
There is no sign up, no subscription to cancel and no telemetry to opt out of.
Disconnect the network mid conversation and keep going. That is the only proof of privacy that means anything.
Once a model is on disk, no connection is needed at all.
Something not covered here, or not behaving as described? Tell us what you were doing and what happened.