How to Setup a Local Coding Agent on macOS

(ikyle.me)

54 points | by kkm 1 hour ago

10 comments

  • Aurornis 6 minutes ago
    > The benchmark prompt was:

    > Write a compact Python function that parses a unified diff and returns the changed file paths. Then explain two edge cases.

    > Each benchmark generated about 128 tokens.

    Generating 128 tokens is probably not enough for good benchmark results. MTP speedup depends on how often the predicted tokens are accepted. In my experience, the very early output has a higher acceptance rate, so short testing can give false positive speedups.

    llama.cpp includes a tool specifically for benchmarking that will sweep the arguments for you so you don't have to restart the server and send it prompts:

    https://github.com/ggml-org/llama.cpp/blob/master/tools/llam...

    EDIT: Also the section about downloading the models should have mentioned that llama.cpp has a "-hf" argument that will download the models for you. I appreciate the author for sharing their experience, but for beginners this might not be the best guide to use.

  • vladgur 4 minutes ago
    I have used omlx.ai with great success to both download multiple mlx models (including gemma and qwen) suited for my hardware AND to be able to automagically launch both open-source and close-source (claude code, codex) harnesses using these models. All from a web or desktop UI

    You would not need to follow a blog post with omlx IMHO

    • fridder 1 minute ago
      It truly is the SOTA for local inference on mac. Even when there are regressions the dev(s) are insanely responsive. It is the most impressive opensource project I've seen in a awhile
  • ig0r0 40 minutes ago
    I wrote a similar post some time ago just used ollama and opencode https://blog.kulman.sk/running-local-llm-coding-server/
  • reddit_clone 16 minutes ago
    >64 GB

    Thats the rub. I have an M4 with 48G. I wonder if it is worth testing this out.

    My past attempts (with Ollama and various LLMs) were too slow to use.

    • hkchad 5 minutes ago
      I have a M5 MAX with 128, local models are toys compared to hosted ones. I've spent a lot of time and money trying to make it work even 1/2 as well.
  • c-hendricks 47 minutes ago
    Not sure you really need huggingface-cli to download anything if you're just using llama.cpp. You can pass `-hf ...` and it will download the models for you. Set `LLAMA_CACHE` to change where the downloads go:

      LLAMA_CACHE="models" ./llama-server \
        -hf unsloth/gemma-4-31B-it-GGUF:UD-Q4_K_XL \
        ...
    • dofm 43 minutes ago
      Yes.

      -hfd for the draft model.

      • c-hendricks 28 minutes ago
        Nice, was wondering if there was a flag for the draft as well.

        Not knocking huggingface-cli, just find it's much easier for people to try out this stuff when they can just

          mise use --global github:ggml-org/llama.cpp
          LLAMA_CACHE="models" llama-server \
            -hf unsloth/gemma-4-26B-A4B-it-qat-GGUF:UD-Q4_K_XL \
            --host 0.0.0.0 \
            --port 11434 \
            ...
  • dofm 39 minutes ago
    Useful stuff in here that I wish I'd seen a few days ago :-)

    I am not convinced that the MTP setup for the QAT model adds very much in terms of speed on my M1 Max, but it is definitely worth experimenting with.

    Fiddling about with local models has done so much for my conceptual understanding of what is going on.

    FWIW and YMMV but I also found the Gemma 4 MTP head was occasionally breaking markup in Opencode, causing the thinking to display untidily and ultimately in some cases missing the stop token. So I've stopped using MTP there for now.

    Recent Qwen 3.6 models have developer role support so it will occasionally surprise you with a structured multiple choice questionnaire.

    • mft_ 20 minutes ago
      I found a marginal downside to Qwen3.6-35B-A3B-MTP vs. the non-MTP equivalent on an M1 Max. I’ll maybe experiment with settings further though.
      • dofm 5 minutes ago
        Yeah. I think it might speed up time to first token but I am not sure how much that matters.

        I do enjoy their different personalities when they are tackling "explain this" type puzzles, though.

        Gemma writes so well — like a concise code blogger. It makes you understand that the thing we hate about AI slop writing is specifically the cheesy, marketingese sycophantic ChatGPT tone. It's a choice to sound that way.

        Qwen writes more tersely by default, like much english language documentation in Chinese open source projects. A couple of lines, code example, fact, code example, line of blurb.

        I use this prompt every now and then with a new model. It's obviously a classic SQL puzzle but I've asked new web developers this in the past (prompted by discovering that a client's subcontractor didn't understand it and was therefore unable to migrate some code from relying on dodgy pre-MySQL 5.x behaviours)

          I have a MySQL 5 table like this: [id, label, category, score].   It contains a list of items in different categories (text names like cat1, cat2, cat3) with a numerical score. Is there a way I can write a SQL query to find the item in each category that has the highest score, without using a subquery? No two entries in any category share a score.
        

        I enjoy seeing what it deduces from the subtext.

        Without "thinking" mode on, they always initially fail and you need to prompt them to find the answer. With thinking mode, they both produce really nice explanations.

        For me, as an old freelancer who is pretty cynical about vibe coding or "agentic engineering", what I really want is an AI tool that can help me start to solve problems and help me find the right terminology or generate some boilerplate I can tinker with. Both of these models do fine at the kind of "starter" writing that I want when I am trying to untangle an idea.

  • attogram 13 minutes ago
    8b max on a std 16gb macbook. Anything more and your mac is toast
  • namnnumbr 38 minutes ago
    oMLX (https://github.com/jundot/omlx) makes running the mlx inference server quite easy for those interested in UI-based hosting. oMLX also supports mtp or dflash drafting.
    • w10-1 8 minutes ago
      Agreed (not sure what you mean by UI-based hosting).

      oMLX does the caching I need to fit models that are near gross memory, and it handles most of the work in finding usable models. After cobbling together various solutions over months, I now just use oMLX, often from Xcode. I can tell the difference between Gemma-4 (local/free) and Claude (paid) only on the largest tasks.

  • cdolan 1 hour ago
    Is there a link to the video? It did not render when I went to the page. Curious about the real-time feel of this
  • aplomb1026 22 minutes ago
    [flagged]