Independent studio · browser tools

I build small, local-first tools for the browser.

Most products start with the same annoyance: something that should take one step takes forty. What we're shipping now is Saver — a media archiver that keeps everything on your own disk, one extension per platform, sharing the same local core.

Role
Developer
Based in
Remote
Stack
Chrome MV3, vanilla JS, Node
Focus
Local-first tools

About

I work on browser extensions and the small tools around them. The rule I keep coming back to: if a feature needs a server, it needs a good reason. Most of the time it does not.

That is why every product here runs entirely on your machine — no account, no telemetry, nothing to sign up for. It is also why the code is smaller than you would expect.

Tools

Small utilities written for these projects, kept because they turned out useful.

sync-core

Copies shared libraries into each app and fails the build when a copy drifts from the source.

Node CLI

site-build

Generates this site: 10 languages from one template set and one JSON per language.

Node CLI

license-keygen

Issues Ed25519 licence keys offline, so activation never needs a server call.

Node CLI

Notes

Write-ups on what broke, what worked, and what I would do differently.

  • Why your extension should not have a backend Accounts, cloud storage and server-side throttling buy convenience and cost you data risk and ops. What local-first actually gives up — and what it buys back.
  • Rate limits are a product decision, not an error case Free quotas, batch sizes, backoff: treating rate limits as a product surface to design, not an exception to handle when it happens.
  • Shipping one file across ten languages One copy deck, ten languages, over a hundred pages. A zero-dependency build that keeps them from drifting.

Support this project

Saver is built and maintained by a small team. If it has helped you, we would be grateful for your support through either channel below — thank you.

Contact

Bug reports, licensing questions, or a tool you wish existed — email is the fastest way to reach me.

[email protected]