The Studio Rig / Field note 01

Why I bought two M5 Ultra Mac Studios (and might send them back)

I’m testing two 256GB M5 Ultra Mac Studios for local AI coding alongside my M3 Ultra. Here’s the cost case, trial plan and what they need to prove.

Nick Lawton8 min read
AlbertoTHE VETERANLucaTHE NEWCOMERGiuliaCOMPLETING THE TRIO
Alberto, Luca and Giulia. An illustration of the trio.

The rig at a glance

I’m testing whether local large language models (LLMs) on two M5 Ultra Mac Studios can take on real coding work that currently relies on hosted models. This first post covers the setup and test plan. The benchmark results will follow as I run the trial.

Three Mac Studios: one M3 Ultra and two M5 Ultras. Here’s the hardware in this setup.

MachineChipUnified memory (RAM)CPU coresGPU cores
AlbertoM3 Ultra96GB2860
LucaM5 Ultra256GB3680
GiuliaM5 Ultra256GB3680
Luca + GiuliaTwo M5 Ultras512GB72160
Whole rigAll three Studios608GB100220

These are hardware totals across separate machines. How much memory and compute a single model can use depends on the software and how it distributes the work. That’s part of what I’m testing.

Alberto has been working for roughly four months now. It’s my M3 Ultra Mac Studio with 96GB of memory, and it runs the autonomous software delivery setup we’ve been developing ourselves.

I tried running local models on it. For the development work I wanted them to do, that setup wasn’t enough. So Alberto has been running the agents, builds and automated tests, while hosted models do the inference: the work of processing prompts and generating responses.

That distinction matters. There’s already a working delivery process here. What I want to change next is how much it depends on models running elsewhere.

I’m spending roughly £6,000 a month on hosted AI coding. That’s my current estimate, and it gives me a reason to revisit local models with more memory available.

Luca and Giulia are the two new Studios I’m adding to the setup. Luca arrives first, then Giulia. Alberto stays in the team. Yes, the names come from Luca. Alberto is already up and running, getting on with the work. The other two are joining it.

What Alberto has been doing

We call our approach the Autonomous Delivery House, or ADH. It’s the way we organise software delivery around defined jobs, AI agents, automated testing and independent review. I’ve explained how we organise that AI-assisted delivery process in more detail.

A piece of work starts with a clear brief and acceptance criteria. A development agent works on it, tests check the change, and a separate reviewer checks the work. Failed checks send it back for another pass. I set the direction and the rules about when something needs my decision or approval.

The independence matters to me. The agent that builds a change doesn’t get to decide on its own that the work is good enough. Being able to produce code quickly is only useful if the process catches problems before that code goes further.

Alberto has been the machine running that process, with cloud-based models doing the heavy model work. It turned out to have far more hardware than that particular job needed. But it’s given us a place to develop and use the delivery approach while we worked out what a useful local-model setup would require.

My earlier local-model attempts weren’t enough for the work I needed. That’s my experience of the setup I tried, rather than a claim that an M3 Ultra can’t run local models. I’ll need a much more explicit comparison for this next trial.

The question behind the purchase

Can local models take on more of the work inside the ADH process we already use? That’s the question behind the two new Studios.

Luca and Giulia each have 256GB of unified memory. I’ll test open-weight models on one machine and across the pair. More memory gives me room to try a different setup. It doesn’t tell me whether the code will be useful, or whether the system will be fast and reliable enough.

Alberto remains part of the three-machine system. I expect it to continue supporting the delivery process while Luca and Giulia take on the local-model trials. We’ll work out the division of jobs through testing.

I don’t expect the hosted bill to disappear just because I’ve bought hardware. There may be jobs where I still need a hosted model. I’ll also be paying for electricity and spending time on setup, maintenance and fixing whatever breaks.

I’ll track those costs alongside the hosted spending I still need. I need to know whether the reduction in hosted spending is worth the cost and effort of running them.

Marcus, the AI assistant handling the setup, is recording the runs and what goes wrong. I’ll use those records to explain what I’d trust the rig to do and where I’d still step in.

How I’ll test the machines

Alberto continues to support the delivery process. I’ll test Luca on its own first, then bring Giulia into the local-model trials and compare the pair with a single machine.

The models I want to try are Qwen3.8-Flash-Next, GLM-5.3-Flash and GLM-5.3. When I share a result, I’ll include the exact model version, how it was compressed to fit in memory and the software used to run it. Otherwise, comparing the numbers won’t tell you much.

I also want to try running GLM-5.3 across Luca and Giulia, linked over Thunderbolt 5. I’m interested in what happens when the work has to move between two machines. Does the extra memory help enough to make that worthwhile? I’ll need to test it.

What I need it to do

I’ve set four targets for the new local-model trial. These are targets, not results. I don’t have measurements from the new machines to share yet.

TestTargetWhat I’ll look at
Real development workAt least 4 of 6 difficult tasks ready to mergeDoes the code meet the task requirements and pass its tests? How much did I have to correct?
Generation speedAt least 15 tokens per secondCan it keep producing text at that rate during the test?
Cold 32K-token prefillUnder 3 minutesHow long does it take to process a 32,000-token prompt before starting its answer, without a cached prompt?
Reliability8 hours stableCan it keep working through the trial workload without crashes or restarts?

By “ready to merge”, I mean code I’m happy to put into the project after reviewing it. A model finishing its answer doesn’t mean it has finished the job.

I’ll record how much help each task needed. If I spend an hour rescuing a change, you should know that when you look at the result.

I’ll also show model loading separately from prompt processing, and use the same test conditions when comparing machines. If I change the setup between runs, I’ll explain what changed.

The machines need to earn their place

I want this rig to work. But wanting it to work is not a reason to keep it.

The new Studios need to deliver code I can use, at a cost that makes sense, without giving me more work in review and recovery. If they can’t do that, I need to say so, however much I like the hardware.

Setting the targets now gives me something to judge them against once the excitement of unboxing has worn off.

What this might mean for your business

You might have no reason to buy a Mac Studio. But if you’re paying for AI tools, you’ll probably recognise the question: how much useful work am I getting for the money?

A cheaper model could turn out to be more expensive if someone has to spend longer checking and fixing its work. Equally, a local model that handles a particular job reliably could be worth using, even if it can’t do everything.

That’s what I want to understand here. Which tasks can I hand over? How much supervision do they need? And what does it actually cost to get the job finished?

I may end up keeping a mix of local and hosted models. I’m happy with that if the results support it.

That’s also how I approach AI consultancy and implementation for businesses: start with the work that needs doing, test a focused change and check whether it helps the people responsible for it.

What comes next

I’ll start by adding Luca to the existing setup and running its first local-model tests, then put it through development tasks on its own. Once Giulia arrives, I’ll try the two together. After that comes the decision on whether they’re worth keeping.

If something fails, I’ll include it. If a result looks promising but needs more testing, I’ll say that too.

Silenzio, Bruno. Let’s see how Luca gets on.

What would you like me to test? If you’ve run local models yourself, tell me where you got stuck. It might save me a detour, or give us something useful to investigate.

Sources and evidence.

  • My notes
    The plan and the numbers

    The roughly four months with Alberto, earlier local-model experience, machine configurations, spending estimate and targets are my account. I haven’t shared measurements from the new trial yet.

  • To follow
    The test results

    I’ll include the model versions, settings and run records when I write up the results, so you can see how I reached each conclusion.

  • Reference

    Chip specifications for Alberto’s recorded 28-core CPU configuration, paired with a 60-core GPU.

  • Reference

    The 36-core CPU and 80-core GPU configuration used by Luca and Giulia. Each machine has 256GB of unified memory.

How I put these posts together.

I use AI tools to help record the tests, organise my notes and draft these posts. Before I publish, I check the claims against the records. I’m responsible for what appears here. If I get something wrong, I’ll correct it and explain the change.

No corrections have been recorded.

Questions and discussion

What would you want me to test? If you’ve tried local models yourself, I’d like to hear what worked and where you got stuck.

No questions yet. What would you like to know?

Ask me a question

Got a question, a different result or a mistake I should look at? I’d like to hear it.

Shown publicly with your approved question.

Kept private. We will email you a confirmation link.

Please leave out client names, credentials and private project details.

Once you confirm your email, I’ll read your message before it appears here. You won’t be added to a marketing list. Read our privacy notice.

Our discussion guidelines
  • Ask a question, challenge a finding or share what worked for you. You don’t have to agree with me.
  • Keep it relevant and respectful. Advertising, harassment and repeated spam will not be published.
  • Do not share personal information about others, private client work, access details or confidential material.
  • Nick approves every reader contribution. An email confirmation checks that you control the address, not your identity.

Manage your questions and reply emails.

Keep reading.

Use an RSS reader? Add this feed and my new posts will appear there. No extra account needed.

Get the RSS feed