For the past six months, I’ve been obsessed with a specific problem: the friction between capturing messy thoughts and structuring them into coherent outlines. As developers, we are used to tools that promise to "organize our lives," but the reality is often a trade-off between convenience and privacy. Most AI-powered note assistants require you to upload your raw text to a cloud server. You trade your data for the magic of automatic summarization.
I wanted to build something different. I wanted a tool that could turn a wall of text into a structured outline without ever leaving my machine. I called it ThinkSpace.
The core constraint was simple: 100% offline, zero data upload. If the text leaves the browser, it doesn’t count.
The Technical Wedge: WebGPU and On-Device AI
The biggest hurdle wasn’t the UI or the logic; it was performance. Running a language model locally in the browser used to be a novelty, often slow and battery-draining. Today, thanks to the maturation of WebGPU and the WebLLM library, it’s become a viable engineering constraint.
ThinkSpace runs entirely in your browser. There is no backend server processing your notes. When you paste a block of text, the model inference happens right there in your tab.
Here is why this matters for developers:
- Security by Design: You don’t have to trust a third party with your proprietary code snippets, meeting notes, or personal journal entries. Since nothing is uploaded, there is no data leakage risk.
- Latency: Once the model is loaded, inference is instant. There is no network round-trip time.
- Offline First: It works on a plane, in a subway, or when your internet goes down.
Under the Hood
The implementation relies on the WebGPU API to accelerate tensor operations on your GPU. This is a significant shift from the CPU-bound WebAssembly approaches of the past.
The workflow is straightforward:
- The user pastes raw text.
- The text is tokenized locally.
- A small model that runs in your browser processes the tokens to identify key themes, hierarchical structures, and logical flow.
- The output is rendered as an interactive outline.
I spent a lot of time fine-tuning the system prompt to ensure the output wasn’t just a summary, but a true structural decomposition. The goal is to help you think, not just to summarize.
The Trade-offs
Building for the browser comes with constraints. The initial load time depends on your hardware and internet connection (to download the model weights). On a modern laptop with a decent GPU, this takes a few seconds. On older hardware, it might take longer, but once loaded, it stays cached.
Also, because we are running inference locally, we are limited by the context window and compute power of the user’s device. You can’t process a 500-page novel in one go the way you might with a massive cloud cluster. But for typical developer notes, code snippets, and meeting transcripts, it is more than sufficient.
Why I Built This
I am tired of the "AI tax" on our attention and our privacy. We have accepted that every keystroke is potentially data for a model. I wanted to prove that you can have AI assistance without surrendering your data sovereignty.
ThinkSpace is a paid tool, but I want to keep the barrier to entry low. There is a 7-day trial so you can test if the on-device performance works for your workflow. For those interested in the experimental side, the associated games have free turns to play with the AI without any cost.
You can try it out here: ThinkSpace
Looking Ahead
The next phase of development is focused on extending the context window and optimizing the model loading time for lower-end devices. I’m also exploring how to integrate with local file systems using the File System Access API, allowing you to drag and drop .md or .txt files directly into the outline generator.
This project was a reminder that the browser is becoming a capable client. We no longer need to build heavy Electron apps or rely on cloud backends for every small AI task. The future of privacy-preserving tools is local, and it’s already running in your browser.
If you’re curious about how WebGPU is changing the landscape for client-side AI, I’d love to hear your experiences. Have you built anything that runs entirely offline in the browser?
Top comments (0)