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.