SelfSearch – one-click manual site indexing, private peer to peer search engine

smonn_1 pts0 comments

GitHub - HommelWater/SelfSearch at p2p · GitHub

//files/disambiguate" data-turbo-transient="true" />

Skip to content

Search/

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

Uh oh!

There was an error while loading. Please reload this page.

HommelWater

SelfSearch

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

p2p

BranchesTags

Go to file

CodeOpen more actions menu

Latest commit

History<br>109 Commits<br>109 Commits

Folders and files<br>NameNameLast commit message<br>Last commit date<br>core

core

lib

lib

test

test

.gitignore

.gitignore

DESIGN.md

DESIGN.md

LICENSE

LICENSE

PRIVACY.txt

PRIVACY.txt

README.md

README.md

RELEASE_NOTES.md

RELEASE_NOTES.md

background.js

background.js

icon128pad.png

icon128pad.png

icon96.png

icon96.png

manifest.json

manifest.json

offscreen.html

offscreen.html

offscreen.js

offscreen.js

package.json

package.json

search.html

search.html

search.js

search.js

View all files

Repository files navigation

SelfSearch

A browser extension that turns your browsing history into a personal, searchable<br>index — and lets a trusted group of people search across each other's indexes,<br>peer-to-peer, with no server .

Every node is a full search engine: it captures pages you visit, extracts<br>title/keywords/description locally on your device (no cloud, no API keys),<br>stores them locally, and lets you search them. Peer nodes connect over a WebRTC<br>mesh (signaling via Nostr relays) and route queries using bloom filters over a<br>hop-limited web of trust.

Status: local engine (capture → index → search) works; P2P mesh (nostr<br>identity, friends, trust web, data-channel gossip) works; peer search<br>(bloom-filter query routing over the mesh, with streaming results) works;<br>redundancy (docCache) works — peers' docs are cached on-demand and<br>backfilled from friends, served in queries, and covered by the routing filter.<br>Profiles and a peers feed let you see who your peers are and what they've<br>recently indexed. See DESIGN.md for the full architecture.

Install

Load via chrome/firefox store:

Chrome: https://chromewebstore.google.com/detail/selfsearch/pfehkhjjhofphpnjmbeijilfcamiodfh

Firefox: https://addons.mozilla.org/en-US/firefox/addon/selfsearch-indexer/

Load the extension unpacked:

Chrome: chrome://extensions → enable Developer mode → Load unpacked → select this folder.

Firefox: about:debugging → This Firefox → Load Temporary Add-on → select manifest.json.

Quick start

Index a page. Open a page you want to search later and click the<br>extension icon — the current page is indexed in one click. Keywords, a<br>title, and a description are extracted locally from the page's own text.

Search. Type ss in the address bar (omnibox), press<br>Alt+Shift+S, or open the search page from the icon's context menu. The<br>search page also holds Peers (your ID, friends, and what peers have<br>recently indexed) and Profile (your name/avatar/bio, shared with peers).

Add a friend. Open the search page → Peers, paste their npub. Your<br>nodes connect over a WebRTC mesh and build redundancy by caching each<br>other's pages.

The extension stores everything in IndexedDB on your machine. Only text<br>metadata is ever shared, and only with peers you add.

Development

No build step and no package manager. The extension is plain ES modules, and<br>the tests use Node's built-in runner (the fake IndexedDB they need is vendored<br>in test/vendor/, so there are no dependencies to install).

Tests (requires only Node.js):

node test/run.mjs

Repository layout

Path<br>Purpose

core/<br>Engine: bloom.js (routing filter), tokenize.js, db.js (IndexedDB), extract.js (local DOM extraction), capture.js, search.js, mesh.js (p2p host: keys, trust graph, gossip)

lib/<br>Vendored p2p libraries: nostr-p2p.js (WebRTC mesh), nostr-deps.js, idb.js

test/<br>Tests (Node's built-in runner) + vendored fake-indexeddb

License

See LICENSE.

About<br>Personal Search Engine!<br>Resources<br>Readme<br>License<br>Activity<br>Custom properties<br>Stars<br>0 stars<br>Watchers<br>1 watching<br>Forks<br>0 forks<br>Report repository

Releases

Packages

Contributors

Languages

You can’t perform that action at this time.

search page peers selfsearch peer mesh

Related Articles