DEV Community

Cover image for I built a one-click launcher for local LLMs on the Mac (llama.cpp + Qwen3 + OpenCode)
Kirill Lukyanov
Kirill Lukyanov

Posted on Originally published at klukyanov.ru

I built a one-click launcher for local LLMs on the Mac (llama.cpp + Qwen3 + OpenCode)

Most people who try local LLMs on a Mac don't get stuck on installation. They get stuck on the questions that come before it: which model, which quantization, how much context, will it fit in my RAM, and how do I hook an agent up to it?

After my write-up on running LLMs locally on Apple Silicon, that was the most common message I got: "I understand what fits my Mac, but I don't want to read docs to set it up." So I built Local AI Starter, a small open-source wizard that answers those questions for you. One double-click, and your Mac runs an AI assistant: the OpenCode agent in the terminal and a web chat in the browser, both on a local model.

Code and release: github.com/kiri11ko/local-ai-starter (MIT).

What it does

Double-click RunMe.command (the first time: right-click → Open, so Gatekeeper lets a downloaded script run). The wizard speaks English or Russian, depending on your system language. Pick options with ↑/↓ and Enter; plain Enter always takes the recommended one.

  1. Machine check. It reads your RAM and free disk space and suggests a model.
  2. Plan and "Start?" You see every download with its size. Nothing is fetched until you say yes.
  3. Network check and download. It checks that GitHub and Hugging Face are reachable, then downloads the engine, the model and OpenCode with progress, speed and ETA. Stalled downloads retry and resume.
  4. A real test. It starts llama-server, waits for it, and asks the model a test question. Only after a real answer does it say "All set".
  5. OpenCode opens in a sandbox folder, local-ai/workspace, with a practice index.html. Type a task like "Change the heading in index.html and add a dark theme toggle".

After /exit you get a menu: stop the server, keep it running, back to OpenCode, open the web chat, switch model, models on disk, status and log, delete everything. Later runs download nothing and go straight to OpenCode.

Why another installer

Ollama and LM Studio are great, and if you already use them, keep using them. Local AI Starter solves a narrower problem: removing the decisions.

  • A pinned, verified stack. llama.cpp build b12110, OpenCode v1.19.5 and a specific model file, each checked against its SHA-256.
  • "Done" means "answered". No success message just because a file exists. If the server dies, you see the last log line, not a blank window.
  • Network errors you can act on. If a host is blocked, the wizard tells you which one and why (timeout, DNS, refused, TLS interception, HTTP error) and suggests another network, a VPN or HTTPS_PROXY.
  • One folder, nothing else. Everything lives in local-ai/ next to the script. PATH, shell configs and your global OpenCode settings are never touched. Uninstall = delete the folder.

Models

Model Download Mac RAM
Qwen3 8B Q4_K_M (recommended) ~4.7 GB 12 GB+
Qwen3 4B Q4_K_M ~2.3 GB 8 GB+
Qwen2.5 Coder 7B Q4_K_M ~4.4 GB 12 GB+

All run with a 32K context (16K under 12 GB of RAM): OpenCode's system instructions alone take about 10K tokens. I recommend Qwen3 8B even for code, because Qwen3's tool calling via --jinja is more reliable, and an agent that can't call tools can't read or edit files.

Honest limits: a 4–8B model handles small edits. It doesn't replace a cloud agent on a real codebase, which is exactly why it starts in a sandbox, not in your repo.

Is the archive safe?

Running a script from the internet deserves caution, so there are three independent checks:

  • VirusTotal: 0 of 65 engines flagged the v2.0.0 archive. Public report.
  • SHA-256: 87d134e162170bf73c226c8e3674e71427160619232d16446c205538ee3ed29e. Verify with shasum -a 256 Local-AI-Starter-v2.0.0.zip. The same hash is in the GitHub release.
  • Open source: one readable Python file using only the standard library, plus three tiny launch scripts. No admin password, no disabling system protection.

Privacy

The server listens on 127.0.0.1 only, so nothing on your LAN or the internet can reach it. Your prompts never leave the machine. The script goes online only to fetch the engine and OpenCode (GitHub releases) and the model (Hugging Face). No telemetry.

Limits

  • Mac on Apple Silicon is the main target (Metal). Intel Macs work, slower.
  • Python 3.9+. On a clean Mac, the first python3 call offers Apple's developer tools; that's the normal macOS dialog.
  • Windows (RunMe.bat) and Linux (RunMe.sh) builds exist but are CPU-only for now.

If you try it, I'd love to hear which Mac you ran it on and whether the model handled the first task.

Originally published at klukyanov.ru.

Shorter weekly write-ups (in Russian) are on Telegram. The launcher archive and its updates are pinned there.

Top comments (0)