// Hosted page HTML, CSS, JavaScript, media and ordinary HTTPS metadata // Browser-local core save · edit · tag · local search import · export · vault writes // Optional, user-triggered Prompt Library · BYOK providers checkout · configured analytics destinations you choose to open
Local-first · Defined technically · v3.0
A workbench that runs in your tab.
"Local-first" is overloaded as a marketing word. Here's what it means for Prompt Organizer, mechanically: a static app shell, a core prompt library written to IndexedDB in your browser, explicit optional network actions, and a portable JSON vault you can read in any text editor.
Inspect browser storage and the network tab. Both parts of the architecture are observable.
- Browser-local core
- Explicit network actions
- Portable JSON vault
What connects
The hosting provider serves the page and receives ordinary HTTPS request metadata. Prompt bodies in the core library are not included in those page requests.
- Core library.Saving, editing, tagging, local search, import, and export operate against browser storage.
- Optional first-party flow.Prompt Library connects when you browse, import, submit, or manage hosted items.
- Optional third-party flow.Prompt Lab, checkout, analytics when enabled, and destinations you open connect only when their disclosed trigger occurs.
Local-first, defined technically
Four claims. Each one verifiable.
"Local-first" gets used to mean a dozen different things - sometimes "we sync, but optimistically", sometimes "your data goes to our cloud but encrypted". Here it means something narrower and more checkable.
- 1. Static app shell.Vercel serves HTML, CSS, JavaScript, media, and fonts. That request boundary is separate from the prompt library stored in your browser.
- 2. Browser-local core.Prompts, tags, references, and SKILL packages are written to IndexedDB on your device by default.
- 3. Explicit network actions.Prompt Library, BYOK model calls, checkout, configured analytics, and destinations you open are named in the product before or where they occur.
- 4. Portable JSON vault.The vault is plain, human-readable JSON. You choose where it lives and when it is copied, synced, or shared.
Run the proofs yourself. They take a minute.
Where your prompts actually go
Core library writes stop at browser storage. Prompt Library, BYOK provider, checkout, analytics, and external-destination requests follow the separate, disclosed path only when triggered.
Privacy, durability, portability - by architecture, not by promise.
Privacy. The prompts you refine reflect your judgment, your clients, and your evaluation criteria. The core library remains in browser storage unless you deliberately submit, send, export, or otherwise move content through a named flow.
Durability. The library survives us when you keep a vault or export. Open the JSON in a text editor, diff it in Git, or hand it to another tool that understands the documented format.
Portability. The vault is yours in the strong sense: it lives on your filesystem, in a format you can read, with no proprietary container or DRM. Move it to a different machine. Sync it through iCloud. Email it to your future self.
// Plain JSON · schemaVersion 3 · FNV-1a checksum
{
"schemaVersion": 3,
"checksum": "<verified checksum>",
"prompts": [
{
"id": "pr_8f3a",
"title": "Weekly status update",
"body": "Summarize {{ project }}...",
"tags": ["writing", "status"]
}
],
"history": []
}
Plain JSON · readable in a text editor · stored where you choose
Where else would you keep these?
An honest look at the three options most people land on by default, and the structural tradeoffs each one is quietly making.
On small screens, each row stacks so every tradeoff is readable without sideways scrolling.
Your craft deserves a place that respects it.
A local-first workbench isn't a smaller cloud app. It's a different shape of software - one that runs in your tab, writes to your disk, and exits when you close it. The library you build today is still yours in five years, whether we're here or not.