Skip to content
A WIP browser application for archiving, searching, and sharing bookmarks.
JavaScript HTML CSS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Build Status Coverage Status Stability JS Standard Style

A browser application for archiving and searching bookmarks.


It's so creepy that every bookmarking service wants your data. Look, I just want something better than a text file, OK? A place I can drop links so I can close tabs. I want to annotate bookmarks, archive them to prevent dead links, and maybe (MAYBE) share them with people. Generally speaking, I don't want this information to leave my device, and I really don't want some stalker-as-a-service selling it.

This application tries to provide those features while respecting your privacy through its architecture:

  • Information is stored on your device. Unless you choose to share it with another user, it never leaves your device.
  • No central servers to administrate, just a static application.
  • Save, annotate, and archive bookmarks.
  • Index bookmarks so you can search for them.
  • Share bookmarks or subsets thereof with your friends. Pending advancements in P2P browser technologies.

The vision I want this application to facilitate is this: a community search engine and archival tool where individuals can freely associate to develop, preserve, and explore their own corner of the web. It is not meant to replace web-wide search engines and concerns itself with a different use case, that is searching for things already known to you and yours. "Where was that thing I read?", "What was that article my friend sent me?", "What did that page look like before it disappeared?" etc.


This application will be reach its goals in stages. It will only become "social" perse in V1.


V0 implements basic features, like annotating bookmarks and searching them.

  • Save links.
  • Annotate links with
    • Title
    • Description
    • Tags
  • Search links by tags.
  • Implement typeaheads for
    • Tags
    • Search terms


V1 adds social features, like sharing lists of bookmarks.

  • Annotate bookmarks with
    • Lists
  • Create lists with their own
    • Titles
    • Descriptions
    • Profile
  • Implement profile archives for users to associate lists with a particular identity.
  • Implement typeaheads for
    • Bookmark lists
    • List tags
  • Store link lists as Dat archives.
  • Subscribe to link lists using their discovery key or Dat DNS URL.


V2 introduces durability features like backups.

  • Upload encrypted backups to friendly CouchDB installations.
  • Decrypt backups drawn from friendly CouchDB installations.


These instructions are intended for the V1 application. The app is currently at V0.

As the application lives on the browser, there is no need to install anything. Just visit the demo site to start using it.


To work on the source code, download it with git and build it with Node.js:

$ git clone
$ cd linkfriend
$ npm install

To run a test server, use the npm start command to build and serve the application:

$ npm start


   │                                               │
   │   Serving!                                    │
   │                                               │
   │   - Local:            http://localhost:5000   │
   │   - On Your Network:   │
   │                                               │
   │   Copied local address to clipboard!          │
   │                                               │

To serve the application and automatically rebuild its assets whenever source files change, use npm run dev:

$ npm run dev

To run the test suite, use the npm test command:

$ npm test

Contributions / Governance

All contributions are welcome but will be moderated at the discretion of the project's maintainers. This section will update as governance policies emerge and evolve.

To report a bug or request a feature, please file and issue.

To share a patch, please submit a pull request.



You can’t perform that action at this time.