DEV Community

周晓易
周晓易

Posted on

I built a local-first bookmark manager that actually remembers what you saved

I saved links faster than I could find them again, so I built Linkit, an open-source desktop bookmark manager that fetches and summarizes every link as you save it.

A browser bookmark stores a URL and nothing else. That leaves three gaps: keyword search only matches exact titles, you have to open a link to know what it says, and the same article saved from three URLs looks like three entries. Linkit works on the saved content instead.

Dashboard

What it does

Summaries and key takeaways. Every saved link is fetched, summarized, and broken into a few takeaways. You scan the summary instead of opening twelve tabs. Point it at any OpenAI-compatible API, or run a local model through Ollama.

AI insights

Search that matches on meaning. Keyword search fails the moment you don't remember the wording. "How to make large file transfer faster" should find a link whose title says "transfer optimization". Search here embeds your library and matches on vector similarity.

Spotlight search

A knowledge graph. Your library renders as an interactive network, connected by shared tags, collections, and semantic similarity. It shows which topics you keep circling and which areas you've never touched.

AI-curated collections. Give it a goal in plain language, like "collect modern frontend tooling and design resources", and it builds a collection out of bookmarks you already saved, writes the title and description, and recommends tags. Inside a collection, a banner keeps suggesting related bookmarks, and every suggestion is an editable preview until you confirm it.

AI collections

Duplicate detection. Exact URL matches, plus AI-detected near-duplicates where the same content lives at different URLs. Review and merge with one click.

Link health checks. A background scan finds 404s and silently changed pages, so dead links don't quietly rot.

Curation insights. Linkit summarizes your habits on a recurring schedule: the tags you lean on, how far you got through your unread pile, and the highlights worth a second look.

What's new in v0.5.x

Interface scaling that actually tracks your display. Linkit now has eight interface sizes, and the zoom couples to the system display scale instead of fighting it, clamped to a safe range so the layout never breaks. The layered zoom architecture also eliminated the black borders and stray outer scrollbars that used to show up at non-native scale factors.

Storage mode switching with a confirmation step. Moving between local and cloud storage now opens a dialog that shows a summary of both sides before you commit, and the settings screen has a real data-management section instead of a scattering of buttons.

Import and export you can actually roll back. The import/export utilities now write a portable library document, and if an import goes wrong the app restores from a snapshot rather than leaving you half-migrated. Batch browser import also resolves save conflicts correctly, which stops a large import from colliding with itself.

Simpler AI tag selection and reanalyze. The bookmark analyzer returns at most three suggested tags, and when it has nothing useful it says so instead of showing an empty picker. There's a dedicated reanalyze dialog for re-running analysis on an existing bookmark, and the new-bookmark dialog was extracted into its own component so both entry paths behave the same.

Friendlier sync errors. Sync failures now surface in a dedicated toast with an explicit "return to sign in" action when the cloud session has expired, and an AI authorization dialog no longer blocks saving unrelated sections.

Local-first by default

All bookmarks live in a local SQLite database on your machine. The app runs fully offline and works without an account. If you want multi-device sync, there's an optional Supabase backend with row-level security where every record is bound to your own auth.uid(), unreadable to the developer. That sync is free as well.

Storage

How it's built

Go for the backend, Wails to ship it as a native desktop app, React for the UI. The AI layer is provider-agnostic, so OpenAI, DeepSeek, a local Ollama instance, or anything that speaks the OpenAI API shape will work. Cross-platform binaries ship through GitHub Releases and Homebrew.

LLM config

Installing

brew install blue-idea/tap/linkit
Enter fullscreen mode Exit fullscreen mode

Windows, macOS DMG, and Linux AppImage/DEB are on the releases page.

Free and open source

MIT licensed and 100% free. Import from Chrome, Firefox, Edge, or Safari in one click to start from the collection you already have.

If you've ever lost a link you swore you'd come back to, try it: https://github.com/blue-idea/linkit

If it helps, a star genuinely helps other people find it.

Top comments (0)