Skip to content
Chandler Nguyen
AI8 min read

My Mac Died. I Rebuilt It With Chrome and DeepSeek.

My Mac died, so I wiped it and started again with nothing but Chrome and one agent harness. The machine now has about 60 GB more free space than before, and I have stopped thinking in applications.

My Mac mini died. Not dramatically — it just stopped being a machine I could trust, and the sensible thing was to wipe the drive and reinstall from scratch.

I have done this dance many times. The ritual never changes: reinstall the OS, then spend an evening reinstalling everything. Homebrew. Node. Python. A dozen command-line tools you cannot remember installing. Then, three weeks later, you discover the one you forgot, because something that used to work does not.

This time I tried something different.

I installed Chrome, then ran one command in Terminal to install the harness itself. That was the whole list. Then I asked it to set up the rest.

Chrome is not decoration in that story. It is the only GUI application I actually want, and it is also the browser the agent drives when a task needs one. The browser tooling is declared in the harness config like everything else, not installed by hand.

The harness is the part I had been ignoring

For the last two years I have thought about AI coding tools mostly in terms of the model. Which model is smartest, which one is cheapest, which one writes better frontend code. I have cancelled subscriptions over that question and written about it more than once.

What I had been underweighting is the harness — the thing that actually sits between me and the machine. The model supplies the intelligence. The harness supplies the hands, the memory of how I work, and the interface.

For this rebuild, OpenCode was the harness and DeepSeek V4.1 Flash was the model. But I have stopped believing either layer should be fixed to one choice, because the two are picked on completely different grounds.

Models I choose on four things: how intelligent it is, how fast it generates (tokens per second, which I feel far more than I expected to), what it costs, and what happens to the data I send it.

Cost deserves more than the sticker price, because the sticker price is not what you pay. The number that matters is the cache hit rate. When the harness can hold a stable context, most of the input is served from cache and the bill collapses — my DeepSeek cache hit rate is routinely above 99%. Two models at the same price per token can differ enormously in what you actually spend, depending on whether your harness can keep a cache.

I do not route everything through one model either. Different tasks suit different models, and a free one is often good enough for mechanical work — spending a frontier model on it is just waste.

Harnesses I choose on preference. Interface, and habit. I use OpenCode because my habits live there, and I run DeepSeek's own harness alongside it because I like working in both. At work I use a different one again — Antigravity CLI driving Gemini 4 Argon or 3.8 Flash — because that job is shaped differently: I hand it a plan and it works through it for hours.

No benchmark settles any of that, the way one settles a model. You have to know what you need, and pick for it.

I wrote in August about moving to a single model and a single harness without naming the thing that actually changed for me. That post ended with a note that I would start using Flash more, because at that price there was no reason not to. This is that, with one correction: single was the wrong instinct.

That distinction sounds academic until you rebuild a computer with it. Then it stops being academic very quickly. A harness that can run commands, read and write files, install packages and attempt to check its own work is not an autocomplete box. It is closer to an operating layer — and once you have one, the list of things you install yourself gets very short.

The workflow, step by step

The pattern was the same every time, and it is not how I used to work:

  1. Describe the outcome, not the steps. Not "here is the brew command", but "I need to be able to run this kind of script locally, set it up."
  2. Let the agent install and configure, including fixing the thing it just broke.
  3. Verify — this part is still mine. The agent can show you exactly what it ran, which is what makes verifying cheap.
  4. When I cannot verify something, I do it myself. Service keys and SSH credentials are the two things I created by hand and did not hand over.
  5. Read what it actually did, and expect a plausible wrong answer eventually. Not every line — enough to know what changed on my machine, and enough to notice the one change that looks right and is not.

The difference from my old rebuilds is easier to show than to describe:

My old rebuildsThis one
Installed by handThe OS, then an evening of Homebrew, Node, Python and a dozen CLI toolsChrome, plus one command for the harness
Everything elseMe, over an eveningThe agent, on request
Where the state livesLocal services, runtimes, container imagesA config file and a connection I authorised once
What accumulatesA deposit from every experimentNothing installed "just in case"

Two things make that possible. One is that harnesses keep their configuration in files I can read and edit — I can see exactly what is wired up and change it. The other is that a growing number of my MCP servers are remote. Supabase, Resend and Vercel are URLs I authorised once, not services on my disk. The local ones run through npx on demand, so they are not installed until the moment I use them.

My machine used to hold services. Now it holds a config file and a token, and the services live somewhere else.

The disk stayed empty

I did not set out to benchmark this, so treat it as an observation rather than a measurement. But the number is hard to ignore: compared with my old setup, I now have roughly 60 GB more free space on the same machine.

For a machine with a soldered SSD, that is not a rounding error. Storage is one of the few things you cannot upgrade later on a modern Mac, and it is priced like it. Sixty gigabytes back is a meaningful slice of what the next tier up would have cost.

Where it went is easier to explain than to prove. Some tools now run on demand instead of living on disk permanently, and the habit of installing things in advance has faded, because asking for them later is cheap.

From application-shaped to intent-shaped

Here is the shift, and I am still working out how far it goes.

Most of my computing life has been application-shaped. I want to do a thing, so I find the application that does the thing, install it, learn its interface, and live inside its opinions. The application is the unit of work.

Working this way is intent-shaped. I describe what I need. Something with the ability to act on the machine works out which pieces are required, sets them up, and does it. The application becomes an implementation detail, and sometimes one I never consciously install.

It is a bigger change than "AI writes my code". Coding was never my bottleneck; the distance between wanting something and having it was. That distance is much shorter now.

Which is also why I keep half-joking that I might end up on Linux. The reason I stayed on macOS for years was never the operating system — it was the accumulated setup I would have to rebuild. If your environment is mostly a config file and a capable agent, the platform underneath matters less than it did. I am not switching this week. I am just no longer sure what would stop me.

I have to admit I did not see this coming. If you had told me five years ago that a fresh Mac plus a browser plus one agent would be enough to get back to work, I would have assumed you were describing a demo, not a quiet Tuesday evening.

What I am not claiming

Some honest caveats, because I have read enough enthusiasm about this to be suspicious of my own.

  • The harness is now the lock-in. Model choice is getting easier to change, but my habits, config and workflow live in the harness. That is a real dependency and I am watching it.
  • "It installed everything" is not the same as "I understand my machine". I know my setup less well than when I assembled it by hand. It is a genuine cost, and the reason step five above exists.
  • This is not free. About $60 over the past 30 days, and that figure is not just my coding — it covers the DeepSeek API behind a few of my products in production. For context, the same habit cost me roughly $200 a month a year ago. (I wrote about that shift in August.)

Frequently asked questions

What is a harness in AI coding?

A harness is the program that connects a model to a real environment. The model reasons; the harness gives it tools — running commands, reading and writing files, calling external services — and manages the conversation and permissions around them. OpenCode is deliberately model-agnostic, which is why I could change models under it without changing anything else. Claude Code and Codex are harnesses too, though each is built around its own vendor's models. My rule of thumb: choose a model on capability, speed, cost and data handling; choose a harness on whether you actually like working in it.

Can you really set up a new computer with just a browser and an AI agent?

For my setup — a developer who works mainly in a terminal and a browser — largely yes, and one command, not zero. You need a browser to reach the model and the internet, and a way to install the harness itself, and you need to be willing to verify what the agent did. I would not assume this holds for a designer's or an accountant's machine.

Why does this setup use so much less disk?

Roughly 60 GB less than my old setup, for three reasons. Some services now run remotely and are reached over a URL instead of being installed locally. Some tools run on demand instead of living permanently on disk. And the habit of pre-installing things "just in case" fades when asking for them later is cheap.


Still surprised that "install Chrome and see what happens" turned into a working computer.

Cheers, Chandler :P