{"id":20388341,"url":"https://github.com/mubelotix/admarus","last_synced_at":"2025-04-09T21:18:26.020Z","repository":{"id":174249110,"uuid":"651950821","full_name":"Mubelotix/admarus","owner":"Mubelotix","description":"Peer-to-Peer Search Engine for IPFS","archived":false,"fork":false,"pushed_at":"2024-12-04T09:33:59.000Z","size":6255,"stargazers_count":75,"open_issues_count":101,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-09T21:18:18.885Z","etag":null,"topics":["decentralized","distributed","full-text-search","ipfs","libp2p","p2p","peer-to-peer","rust","search","search-engine","site-search"],"latest_commit_sha":null,"homepage":"https://admarus.net","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mubelotix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-10T15:42:34.000Z","updated_at":"2025-03-20T18:36:55.000Z","dependencies_parsed_at":"2024-05-31T11:42:46.599Z","dependency_job_id":"95da58ef-410d-41d2-b1ed-f715e59098d9","html_url":"https://github.com/Mubelotix/admarus","commit_stats":null,"previous_names":["mubelotix/admarus-daemon","mubelotix/admarus"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2Fadmarus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2Fadmarus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2Fadmarus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mubelotix%2Fadmarus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mubelotix","download_url":"https://codeload.github.com/Mubelotix/admarus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248111973,"owners_count":21049578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["decentralized","distributed","full-text-search","ipfs","libp2p","p2p","peer-to-peer","rust","search","search-engine","site-search"],"created_at":"2024-11-15T03:08:53.863Z","updated_at":"2025-04-09T21:18:25.994Z","avatar_url":"https://github.com/Mubelotix.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eAdmarus\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://opensource.org/licenses/agpl-v3\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-AGPL v3-blue\" alt=\"License: AGPL v3\"/\u003e\u003c/a\u003e\n    \u003cimg alt=\"Lines of code badge\" src=\"https://img.shields.io/badge/total%20lines-8512-blue\"\u003e\n    \u003ca href=\"https://census.admarus.net/\"\u003e\u003cimg alt=\"Documents in corpus badge\" src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fcensus.admarus.net%2Fapi%2Fv0%2Fstats\u0026query=%24.stats_1h.documents\u0026suffix=%20documents\u0026label=corpus\u0026color=purple\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://census.admarus.net/\"\u003e\u003cimg alt=\"Peers in network badge\" src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fcensus.admarus.net%2Fapi%2Fv0%2Fstats\u0026query=%24.stats_1h.peers\u0026suffix=%20peers\u0026label=network\u0026color=purple\"\u003e\u003c/a\u003e\n    \u003cimg alt=\"GitHub last commit\" src=\"https://img.shields.io/github/last-commit/Mubelotix/admarus-daemon?color=%23347d39\" alt=\"last commit badge\"/\u003e\n    \u003ca href=\"https://github.com/Mubelotix/admarus/issues?q=is%3Aissue+is%3Aclosed\"\u003e\u003cimg alt=\"GitHub closed issues\" src=\"https://img.shields.io/github/issues-closed-raw/Mubelotix/admarus-daemon?color=%23347d39\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003ePeer-to-Peer Search Engine for IPFS\u003c/p\u003e\n\nAdmarus unlocks the full potential of IPFS by making it searchable. It is an open, decentralized network of peers indexing their IPFS documents. Admarus relies on no central authority, and is censorship-resistant by design.\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://www.youtube.com/watch?v=AKGpNKwBrOY\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/Mubelotix/admarus/master/.github/assets/demo.gif\" alt=\"Demo GIF of searching on Admarus.\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n🔥 [**Try the gateway-based demo!**](https://admarus.net/) 🔥\n\n\u003c!-- todo: talk about how it incentivize IPFS --\u003e\n\n## ✨ Features\n\n- **No storage use**: Admarus indexes data that's already in your Kubo node\n- **Search operators**: `AND`, `OR`, and `NOT`\n- **Trustless**: Results are verified, not trusted\n- **Language detection**: Language is detected from text\n- [**Scalable**](#scalability): Gets faster as more peers join\n- **Censorship-resistant**: Censors would need full control of more than 95% of the network\n- **Open**: Nodes don't discriminate on obscure criteria (hi emails)\n- **Decentralized**: No central authority. Multiple peer discovery mechanisms available\n- **Blockchain-free**: No blockchain, no token, just peer-to-peer magic\n- **Developer-friendly**: Practical API for building apps and bots\n\n## 🌍 Scalability\n\nThere is no use in having a search engine if it breaks under load.\nWhile previous attempts at building a peer-to-peer, powerful search engine have all failed, **Admarus was designed with scalability in mind**.\nActually, Admarus gets faster and more reliable as the network grows to thousands of peers.\nThis is all thanks to the [Kamilata protocol](https://github.com/mubelotix/kamilata) and its routing algorithm for queries.\nIt allows Admarus to download results at constant speed, regardless of the size of the network.\nOf course, the client cannot afford to download and rank millions of results, but we actually don't need a [recall](https://en.wikipedia.org/wiki/Precision_and_recall) of 100%.\nThat's because some documents are more popular than others, and these are the ones we want to find.\n(By default, 50% of the score of a document is based on its popularity.)\nThe more popular a document is, the faster we will find it, hence we don't need 100% recall to find the top `n` results.\nI have only been able to run simulations with up to `30000` peers, so the behavior of the network with millions of peers is still unknown.\nHowever, we can confidently say that Admarus can scale to at least a `200k` peers and billions of documents.\nEven if problems were to arise, these would be limited to queries made of a single common word, as for each additional term, you divide the pool of peers to query by a huge factor.\n\nThe current slowness of the network is due to the fact that there are not enough peers on it.\nThey are doing their best at generating results for queries. Each result is generated from the document.\nThe thing is, each document must be read from the Kubo store on the disk, which only yields 11 documents per second on my machines.\nAs we parallelize the process by querying multiple peers concurrently, search will get significantly faster.\n\n## 📚 Guides and Documentation\n\nWe have a [publicly-editable wiki](https://github.com/Mubelotix/admarus/wiki) for guides and documentation.\n\n* [Getting Started](https://github.com/Mubelotix/admarus/wiki)\n* [Building](https://github.com/Mubelotix/admarus/wiki/building-from-source)\n* [Installing](https://github.com/Mubelotix/admarus/wiki/installation)\n* [Searching](https://github.com/Mubelotix/admarus/wiki/searching)\n  - [Basics](https://github.com/Mubelotix/admarus/wiki/searching#basics)\n  - [Operators](https://github.com/Mubelotix/admarus/wiki/searching#operators)\n  - [Filters](https://github.com/Mubelotix/admarus/wiki/searching#filters)\n* [Indexing](https://github.com/Mubelotix/admarus/wiki/indexing)\n  - [Pages](https://github.com/Mubelotix/admarus/wiki/indexing#pages)\n  - [Websites](https://github.com/Mubelotix/admarus/wiki/indexing#complete-websites)\n\n## 👨‍💻 About\n\nAdmarus is developped by [Mubelotix](https://github.com/Mubelotix), a french cypherpunk.\nFeel free to [get in touch](mailto:mubelotix@gmail.com) if you have any question or suggestion.\nI'm available to help people run nodes to make the network grow.\n\nAdmarus means Google in Gaulish (literally \"very big\").\n\n## 📜 License\n\nAdmarus is licensed under the GNU AGPL v3.\nHowever, the underlying [Kamilata protocol](https://github.com/Mubelotix/kamilata) uses the less restrictive MIT license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmubelotix%2Fadmarus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmubelotix%2Fadmarus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmubelotix%2Fadmarus/lists"}