← All articles
App Notes · 6 June 2026 · 6 min read

Why We Start With Local Storage

When we build a tool for ourselves, the starting assumption is that it runs on the machine in front of you, not on a server somewhere. The cloud is the thing we add when a job dema…

Compact desktop device storing its own labelled physical media, disconnected from the hazy server room beyond

When we build a tool for ourselves, the starting assumption is that it runs on the machine in front of you, not on a server somewhere. The cloud is the thing we add when a job demands it, not the default we reach for first.

The choice depends on the work the tool needs to do. Local storage gives us a useful starting point, but sharing, backups and connected features still need deliberate decisions.

Local-first has a fairly precise meaning. The main copy of the data lives on your own device. Work on local files can continue without a network connection where the app supports it. Sync, shared services and connected AI may still need an internet connection and an account. Local storage describes where data is kept; it does not mean every feature runs offline or that data never leaves the device. The idea has a proper lineage in software research, but the version that matters to us is the everyday one: the tool keeps a useful copy of your work close at hand.

Local-first keeps data on the machine

We build Mac apps for our own studio and start with local storage where the job allows it, for the same handful of reasons.

Local storage reduces what needs to be uploaded. A lot of what our tools touch is the kind of thing that should not leave the building at all: source code, copies of development databases, half-finished drafts, client material under embargo, our own notes about live projects. Keeping a working copy on the machine gives us more control over it. We still need to check what each connected feature sends elsewhere, and protect the device and its backups. Storage alone does not settle whether a tool is suitable for sensitive material.

Local operations can avoid the wait for a server response. Opening files and working with saved data can feel quicker, while AI requests and other connected features still depend on the service and connection. A responsive tool changes how often you reach for it. The friction of a login screen and a half-second delay is enough to stop people using a tool thirty times a day, which is exactly the frequency at which a small tool earns its place.

There can be less hosting to manage. A standalone local feature does not need a hosted service to do its job. Shared features and external AI still bring service dependencies and possible running costs. The app itself needs maintenance too: operating-system changes, security fixes and backups all need attention. For internal tools that exist to save time, reducing those costs is useful, but local storage does not remove them.

A standalone local tool can avoid another account for the team. Installing it may be enough for its local features. Connected services can still require a login, credentials or a subscription, so we check those requirements alongside the installation. That keeps the practical cost of using the tool clear.

Clio makes the trade-off concrete

The example that makes this real is one of our least visible tools. Clio is our shared AI memory. It gives connected AI assistants a shared store to read from and write to, so notes, decisions and project context can carry across the tools we use.

Clio can store those notes in a local database, but the storage location is only part of the picture. Its search can process text locally or send it to an external AI service, depending on the configuration. Connected AI assistants can also read the notes they are given access to. We therefore need to check both the search settings and the assistants using that memory before deciding what information belongs in it.

Local software still needs maintenance

None of this is free, and pretending otherwise would be the kind of thing we tell clients not to do.

The moment two machines need the same data at the same time, local-first stops being simple. Syncing changes between devices, and deciding what happens when the same thing is edited in two places at once, is one of the genuinely hard problems in software. The cloud solves it by keeping one copy everyone reaches for. Take that away and you have signed up to solve it yourself, or to accept that the tool lives on one machine.

There are smaller costs too. Backups become a real decision rather than a provider's job. We sign, package, and update every app ourselves rather than pushing a change to a server and being done. There is no "just open it on your phone". And a new starter has to install things rather than click a link in a welcome email. We pay all of that for local access and greater control over stored data, with less hosting where the features allow it. For the work these tools do, it is a good trade. For a lot of other work, it would be a bad one.

Keep data local unless sharing requires otherwise

So the rule is not "local-first always". It is "local-first until a specific job demands otherwise".

We reach for the cloud the moment the work is genuinely shared and live, the moment it has to be on several devices at once, or the moment the value is in a history the whole team needs whether or not any one person is at their desk. For customer-facing work, browser access is often more practical than asking someone to install an app. The choice depends on how and where customers will use it. It is also why, when a desktop app is the right answer, we build a native one rather than a browser-wrapped desktop app. If a tool is going to live on the machine, it may as well behave like it belongs there.

More AI tools now read sensitive data

An AI feature may process information on the machine or send selected content to a connected service. Check the configuration for each feature, including search and connected assistants, before using it with sensitive material. The storage location alone cannot answer that question.

If you are weighing up an internal tool of your own, the useful move is to not start from "it will be a web app". Start with three questions instead. Is the work shared and live, or solitary and local? Should this data ever leave the building? Does anyone genuinely need it on a second device? If the answers come back local, no, and no, then a local-first tool is worth considering. Compare its maintenance, backup and AI requirements with the hosted alternative before deciding which costs less to run.

We default to local-first for our own tools because, for the work that sits between meetings, local access to working data often matters more than the convenience of another browser tab. We are also the people who would have to keep the server running if we chose otherwise, which has a way of focusing the decision. If you have a workflow that has outgrown a spreadsheet and you are not sure whether it wants a web app or a small local one, that is exactly the sort of thing we are happy to discuss on a Free 20-minute call.

Occasional updates

One email,
when we publish.

One plain email when a new article is up, nothing else. We'll send one email first to check the address is yours. Every email includes an unsubscribe link.

Free 20-minute call

Recognise your own problem in a piece? Talk it through with us.

Analytics

Can we measure your visit?

Google Analytics helps us understand which pages are useful. It stays off unless you allow it. See our cookie policy for details.