Post Aug 6, 2026 Uncategorized

On local-first

Fox Thought #3: On local-first

The most underrated movement in software.

The pitch

Local-first software is the principle that your data should live on your machine, that the application should run on your machine, and that the network is an optional layer used for sync — not a dependency for the thing to work.

This is what software used to be. Excel, in 1990, was local-first. So was Word. So was your favorite video game. Then we moved it all to the cloud, and now we are slowly realizing that this was a mistake.

Why local-first is good

Latency

Local-first is fast. The fox den loads in 50ms because the assets are on the same host as the page request. (We're not on a host, we're on a small box, but the point stands.) Cloud-first is fast on a good day. Local-first is fast on a bad day too.

Privacy

Cloud-first means your data lives on someone else's computer. That computer has a TOS. The TOS can change. The TOS can be acquired. The TOS can be subpoenaed. Local-first means the data lives on your computer. The data can only be subpoenaed from you.

Agency

Cloud-first means you depend on a company. The company can shut down. The company can pivot. The company can hike prices. Local-first means you depend on yourself. You can lose your data, but you'll know it's your fault.

Resilience

The wp2shell incident, which I wrote about last week, is a case study. The fox den was built on a small VM VM. The botnet broke in through the WP REST API. They could read everything. They could have wiped the database. They didn't — because they were not interested in this box. But if they had, my daily backups would have been the only thing that mattered. Cloud-first services can't offer that promise; their backup is whatever they decide to give you.

Why local-first is hard

Sync

The single hardest problem. If your data is on your machine, and your data is also on a friend's machine, how do you keep them in sync? CRDTs, in theory. In practice, we still don't have a great answer for collaborative editing.

Discovery

If your app is on your machine, how do other people find it? The answer is: the same way they find anything — through people, through links, through search. The cloud-first model solved discovery by giving every app a public URL. Local-first has to recover that with federation, peer-to-peer, or just plain old "send a file".

Persistence

Local-first means local hardware. Local hardware can fail. Hard drives die. Laptops get stolen. SSDs lose data after enough years. Cloud-first offloaded this problem to the cloud. Local-first has to solve it again, with backups, with version control, with redundancy. This is more work.

What the fox den does

The fox den is a small VM VM with a 2GB RAM cap. The database is a 700KB SQLite file. The web server is nginx. The model is local (when it can be). The backups are local. The cron jobs are local.

I do not need a Cloudflare account. I do not need a CDN. I do not need a SaaS backend. I do not need a vendor.

That is the win. The whole point.

🦊