Local-first software

5 min read · 2026-08-28

CHRONICLE I

A tool you cannot run offline is a tool somebody can switch off.

Think about the apps you opened today. Your notes, your email, your to-do list, the thing you track your money in. Almost all of them work the same way. You type something in, it goes over the internet to a company’s computer, and that computer sends back what you see on screen. Your data lives there. The program lives there. You are renting access to both.

That arrangement is so normal now that it is easy to forget it is a choice. Local-first software makes the other choice. The program runs on your machine. Your files sit on your disk. The internet is something the software can use when it is there, not something it needs in order to start.

What actually goes wrong with the other way

This is not really about privacy, although privacy is part of it. It is about who is in control, and there are four specific things that can be taken away from you.

The company can shut down. When it does, the software stops working. Not "stops getting updates", stops working, because the part that did the thinking was never on your computer. People have lost years of notes this way.

The price can change. You did not buy the tool, you are renting it, and rent goes up. If your work is inside it, moving out is expensive enough that most people just pay.

The software can change under you. A feature you depended on gets removed and there is no old version to stay on. You did not install it, so you cannot decline the update.

And your data is somewhere you cannot reach. You can usually ask for a copy. Whether you get it in a format anything else can open is a different question.

None of this requires anyone to behave badly. A company can be entirely well-meaning and still get bought, run out of money, or decide your use case is not worth supporting any more.

What local-first actually means

The name is doing a lot of work, so it is worth being precise. Local-first does not mean offline-only, and it does not mean anti-internet. It means the local copy is the real one.

Your machine holds the actual data, not a cached view of data that really lives elsewhere. The software opens and works with no network. If it syncs, syncing is a feature that makes it better, not a requirement that makes it run. And if every server involved vanished overnight, you would still have your files and a program that opens them.

That last one is the test I actually use. Delete the company, and ask what you are left with. If the answer is nothing, it was never your software.

What it costs

I would rather be honest about this than sell it, because local-first is genuinely harder in three places.

Syncing between devices is difficult. When a server owns the data it also decides what is true. Without one, two devices can each change the same thing while apart, and something has to work out what happened when they meet. There are good techniques for this now, but it is real work.

Installing is harder than opening a tab. A web app runs anywhere with a browser. Local software has to be built for each operating system, and someone has to be willing to install it.

Some things genuinely need a server. Anything where people collaborate live, or where the heavy computation cannot fit on a laptop, is not a good fit. Pretending otherwise gets you a worse version of a web app.

So the honest position is not that local-first is always right. It is that it is right far more often than it is used, and the reason it is not used more has more to do with business models than with engineering.

How this shows up in what I build

Nearly everything I have written follows this rule, and it shapes the architecture rather than sitting on top of it as a feature.

Stack-Sight is a Chrome extension that organises your browsing into stacks and tells you which subscriptions you are paying for and never opening. Working that out requires knowing what you visit, which is about as sensitive as data gets. It never leaves your browser. There is no account, and there is nothing for me to see even if I wanted to.

The Digital Footprint Cleaner helps you find and remove your personal information from public websites. A cloud version of that tool would need you to hand over the exact information you are trying to get rid of, which is a strange thing to ask.

Bruhswer is a hardened browser for Windows that enforces its protections on your machine, with your firewall. A privacy tool that phones home is not a privacy tool.

And the Pulse Engine, which reads markets and news, does its whole analysis on your computer and keeps its history as files on your disk. That was not a philosophical decision at the start so much as a practical one: it meant there was no server to rent and no database to pay for, which is what let it be free and stay free.

That is the pattern I keep finding. The constraint that looks like a limitation is usually the thing that makes the project survivable. Software that needs no money to run does not need to start charging you later.

The work this is about

  • Stack-Sight

    Your browser, finally organised. A local-only Chrome extension that groups sites into stacks, tracks usage, and shows what you're paying for but not opening.

    drawn on the map
  • bruhswer

    A homebrew pseudo-browser for Windows. Hardened Microsoft Edge with fail-closed startup, firewall-scoped LAN blocking, download quarantine and disposable sessions. Verifies what it can enforce, and says NOT ENFORCEABLE when it cannot.

    has a charter of its own
  • Digital Footprint Cleaner

    A privacy-first web app that helps you find and erase your digital footprint across public websites. Python, Flask and HTML, fully automated and open source.

    has a charter of its own

Read next