Profile
Back to NewsBack
Dev.to 16 min
Reader Mode
Your β€œPrivate” Search Engine Might Run on Bing. This One Builds Its Own Index

Your β€œPrivate” Search Engine Might Run on Bing. This One Builds Its Own Index

8 hours ago

Be honest: when a privacy page says "we care about your data", do you believe it? πŸ˜…

Yeah. Me neither. Big promises, a padlock icon, and a footer that quietly takes half of it back.

So when I opened the LYNX page from Anoneurx, I was ready to squint again. Then I reached the FAQ, and the first honest thing it told me was that the engine is not anonymous and not "zero logs".

On purpose.

It said it again in the privacy policy. And again in the security page. And again in the benchmarks.

That was enough to make me read everything: the project page, the README, the privacy policy, the security policy, the roadmap, the changelog and the benchmark page. (Yes, even the changelog. I regret nothing.)

This post is what I found: what looks genuinely good, what is still unproven, who is behind it, and how you can help. In a hurry? The table right below is your 60-second version.

πŸ”— Quick links

GitHub logo anoneurx / lynx

An independent search engine focused on privacy, security, and fast discovery.

LYNX

An independent, privacy-focused web search engine by Anoneurx

fast discovery Β· no tracking Β· open infrastructure

status license docs


What LYNX is

LYNX is a search engine built the way we would want one built: fast, inspectable, and hostile to surveillance. It crawls the public web under robots.txt, indexes what it is allowed to index, and serves results without building a profile of who asked what.

v0.1.0. The Β§Z implementation order is complete end to end: crawler, parser indexer, query processor, BM25F ranker, public API with SERP, Postgres storage politeness and safety gates, observability, and the optional Astra answer layer. Every step is test-gated; see CHANGELOG.md. Plans beyond v0.1 β€” scale, sharding, multi-region β€” live in ROADMAP.md and are not claimed as done.

What makes LYNX different

Three structural gaps are visible in today's landscape, and LYNX is built around closing them rather than out-texting another SERP:

Gap in existing engines
…

TL;DR: the 60-second version

Question Answer
What is it? An independent, privacy-focused web search engine
Current version v0.1.0, released on October 27, 2026
Built with Rust and TypeScript, Tantivy for indexing, BM25F for ranking
License AGPL-3.0-or-later, with commercial licensing from Anoneurx
Status Phases 0 to 5 shipped, Phase 6 (scale) still planned
Tests 56 test suites, which the project says were green at every gated commit
Biggest weakness A small index: roughly 1.2M pages across about 42K domains

That last row is not me being harsh. It is the project's own number, and they put it on the benchmark page under a heading about their honest weakness.

Solid vs. still unproven

Area Status Why
Privacy design (no query text stored) βœ… Backed by a CI check on banned log and metric fields, per the project
Threat model βœ… 35 threats, each with impact, likelihood, mitigation and leftover risk
Explainable ranking βœ… explain=true shows the signals per result
Comparison vs. Google, Bing, Brave, Mojeek, DuckDuckGo ⚠️ The page labels it a placeholder run with provisional scores
Speed figures ⚠️ Small corpus, one 8 vCPU / 32 GiB machine, not a production promise
Coverage for fresh, local and non-English queries ⚠️ The project admits recall is weaker here
Scale (sharding, multi-region) πŸ—“οΈ Phase 6, still planned

Notice the pattern? The βœ… rows are mostly design choices. The ⚠️ rows are mostly measurements. And the project is the one who sorted them that way, not me.


Three problems LYNX is trying to fix

I liked that LYNX does not say "we are a better Google." It points at three specific gaps instead.

1. A lot of private search runs on rented results

Some privacy-friendly engines get their web results from Bing or Google behind the scenes. Your queries may be handled respectfully, but the ranking you see still comes from the company you were trying to avoid.

Awkward.

LYNX tries to own the whole path:

crawl -> index -> rank -> serve

All of it runs under robots.txt, with no syndication deal anywhere in the loop. The project also points out that a 2024 Bing API outage took several "private" engines down with it. When your results are borrowed, someone else's bad day becomes yours.

Verdict: ambitious. The small index shows how far it still has to go.

2. AI answers that sound sure and cannot show their work

The README cites a 2025 CJR Tow Center study where all eight AI search tools tested had citation problems.

All eight. 😬

LYNX's answer layer, called Astra, is built to be cautious. More on that below.

Verdict: the right instinct. Let's see if the design holds up.

3. Ranking is a black box

Ever wondered why result A beat result B?

Normally nobody tells you. LYNX has an explain=true option that shows a "Why this ranking?" panel for each result. I'll get to that too.

Verdict: my favorite of the three.


Privacy by construction, not by promise

This is the part that made me slow down and reread.

Many services say "we don't log your searches." LYNX tries to make logging structurally awkward. The query is turned into a parsed structure (an AST) at the handler boundary, and the raw string is dropped. In their words, there is nothing left for a logger to log.

Think of a vending machine that never prints a receipt because there is no receipt printer inside it.

Even rate limiting, usually where privacy projects quietly build a profile, is handled carefully:

bucket = HMAC-SHA256( daily_salt, first_three_octets_of_your_IP )
  • The salt rotates every day
  • Counters live in memory only, with a 25-hour expiry
  • Nothing durable exists to follow you from one day to the next

βš–οΈ A real trade-off, stated openly: two people on the same /24 network share a bucket. The project chose that availability cost over a long-term identifier.

The five rules the whole system is shaped around

  1. No query text is stored anywhere, including the database, Redis, logs, metrics and traces
  2. No cookies, local identifiers or fingerprinting
  3. No third-party requests, so no external fonts, scripts, analytics or CDNs
  4. No ads, data brokering or selling anything
  5. Every stored field has a purpose, a retention period and an owner

A CI job reportedly searches the code for banned log and metric fields. That detail matters to me more than the slogan does.

A slogan can be ignored. A failing build cannot.

What it openly says it cannot protect

This list is why I trust the rest of the page a little more:

  • 🚧 Hosting providers and network intermediaries can still see infrastructure-level logs
  • 🚧 When you click a result, the destination site learns about the visit
  • 🚧 Metadata like TLS SNI and your IP can leak coarse timing information
  • 🚧 The index is small, so coverage will be worse than the big engines

And the retention table is refreshingly specific:

πŸ—‚οΈ Retention table (what is kept, and for how long)
Data Retention Notes
Logs 14 days Keyed by request ID only
Rate-limit counters 25 hours In memory only
Backups 35 days Encrypted, and the policy admits they cannot be selectively purged


Ranking you can actually interrogate

If you add explain=true, each result can show the signals behind its position:

Signal What it tells you
Lexical How well the text matches your query
Freshness How recent the page is
Quality How the page scores on quality
Authority How the page scores on authority
Context The situational boost
Spam The penalty

You also see the ranking-config version, so the numbers can be traced back to a specific setup.

The project claims no mainstream engine lets you see this for a single request. I cannot verify that claim, but the idea itself is great for anyone who has ever argued with a search result. πŸ˜‰

The query language already supports operators like these (illustrative examples, so check API.md in the repo for exact syntax):

site:dev.to "privacy" search engine
intitle:crawler OR intitle:indexer
"explainable ranking" inanchor:lynx

The changelog also lists after: and before: operators, fuzzy suggestions and keyset pagination. Suggestions come from corpus statistics, never from query logs.


Astra: an AI layer that is allowed to say nothing

Astra is optional and off by default. The design reads like it was written by someone who has been burned by confident nonsense before.

Design choice What it means
Sentence-level citation check A sentence without a verified [n] citation gets removed
Refuses instead of guessing No grounded answer means no answer
Source-trust gate Low-trust pages are not used for grounding
No tools, no memory, no agent loop It cannot wander off and do surprising things
Fails closed If something breaks, you get the plain results page

An AI that is allowed to say "I don't know". Imagine that.

And then the sentence I appreciated most:

In v0.1, verification is sentence-level and content-blind. A citation has to point to a source that was actually retrieved, but that does not prove the source is true.

It limits the damage. It does not certify the answer.

So here is my honest question: would you rather have an AI answer that sometimes says nothing, or one that always sounds sure? I know which one I would pick. πŸ™‚


A crawler that assumes the web is hostile

LYNX splits the system into two planes that are not supposed to meet:

crawl plane : robots.txt -> SSRF gate -> fetch -> parse -> extract text -> index
query plane : request -> parse to AST -> search index -> rank -> respond

The query plane never touches untrusted content. The crawl plane never sees a user query.

Some other choices stood out:

  • No JavaScript execution. No headless browser, no cookies, no shell
  • Only extracted text is stored, never raw HTML
  • SSRF checks run before every connection and again at every redirect
  • unsafe Rust is forbidden across the whole workspace
  • A 35-threat model, where each threat lists impact, likelihood, mitigation and leftover risk
  • Signed container images, SBOMs per release and fuzzing targets for URL and HTML parsing

For reporting bugs, the policy promises an acknowledgement within 48 hours and says good-faith researchers will not face legal action.


The numbers, with the fine print

Here is what the v0.1.0 release rehearsal reported:

Metric Result
NDCG@10 0.966
MRR@10 1.000
Recall@100 0.889
Average latency about 0.57 ms
p95 latency 0.9 ms
Burst throughput about 1,820 requests per second
Index size about 1.2M pages, 42K domains

Pretty numbers, right? Now the important part.

πŸ›‘ Please read this before you quote any of it.

The benchmark page includes a side-by-side comparison with Google, Bing, Brave, Mojeek and DuckDuckGo. The page itself labels that comparison a placeholder run and says scores are provisional. The speed figures come from a small corpus on one 8 vCPU, 32 GiB machine, and the page says they are not a promise about production scale.

So this is not a "LYNX beats Google" story, and the project does not tell it that way. Their own footer says to cite the run, not the headline.

One detail I found oddly charming: the query categories include Urdu and Roman Urdu, and one sample query is about the weather in Lahore.

The same page also admits recall is weaker for fresh, local and non-English queries, so treat that as a direction, not a finished feature.


Where it is heading

Phase Focus Status
0 Architecture and design decisions βœ… Shipped
1 Search prototype and evaluation harness βœ… Shipped
2 Crawler with politeness and SSRF safety βœ… Shipped
3 Link graph, operators, sealed index generations βœ… Shipped
4 Privacy hardening and CI privacy checks βœ… Shipped
5 Astra, the optional AI answer layer βœ… Shipped
6 Sharding, multi-region, horizontal crawling πŸ—“οΈ Planned

The changelog dates the architecture work to July through October 2026, with a scaffolding release candidate in September and v0.1.0 on October 27. That is a fast timeline for something this documented.

A small docs gap I noticed: the status table near the bottom of the GitHub README still showed Phase 0 as in progress when I checked, while the website and changelog say v0.1.0 shipped. It looks like a document that has not caught up yet.

Good reminder to trust the release tag and the changelog, and to verify claims yourself. And if it is still out of date when you read this, it is a very easy first pull request (more on that at the end).


The people behind LYNX

A privacy project is only as believable as the people willing to put their names next to it. So here is who the LYNX project page credits, with links to the public profiles I could confirm.

Muhammad Qasim (@itskashie), founder and architect. The project page credits him with the architecture, the search ranking and the privacy model. He is a member of the @anoneurx organization on GitHub, and he announced the first release right here on DEV on October 29.

Shipping a v0.1 with a threat model, a retention table and an honest list of limits is a lot of work for a first release. That honest tone runs through everything I read, and it is the reason this post exists. Thank you for building it in the open.

Nimrah Nabeel, contributor on search ranking and evaluation. Find her on GitHub as Nimrah-Nabeel.

Zainab Faisal, contributor on search ranking and evaluation. Find her on GitHub as zainabfaisal2105-dev.

Ranking and evaluation is the place where it is most tempting to oversell, and the evaluation pages of this project do the opposite: they label placeholders as placeholders and put the weak spots in plain view. Credit to everyone working in that area. It is unglamorous work, and it is what makes the other numbers believable.

I could not find a DEV profile for Nimrah or Zainab. If you two are reading this and have one, drop it in the comments and I will tag you properly.

❓ What about co-founders?

I could not find a co-founder named anywhere: not on the project page, the README, the DEV announcement or in search results. Contributors are not the same thing as co-founders, so I am not going to label anyone that way.

The maintainers are listed as "Anoneurx Core Maintainers" and "Anoneurx Labs" without individual names, and the testers and QA section currently says nobody is listed yet. If there is a co-founder I missed, tell me and I will add them with a link.

A note on sources: there are many people called Muhammad Qasim online, and I could not confirm that any other profile belongs to this founder. So I left out any background that the project itself does not publish.

When I checked on November 7, the repository had 34 commits, 1 star and 0 forks, and the DEV announcement had no comments yet.

Everyone starts somewhere. This is a very early, very well documented start.


So... would I use it today?

As my daily search engine? No, and the project would agree. Its own FAQ says coverage will be worse than commercial engines for years.

But I would watch it, and I would read the code. If any of this sounds like you, it is worth a look:

  • πŸ¦€ You like Rust and search infrastructure
  • πŸ”’ You care about privacy engineering that shows its work
  • πŸ“Š You enjoy ranking and evaluation problems
  • 🏠 You want something you can self-host and verify
  • πŸ“ You respect projects that write down their own limits

What I would love to see next:

  1. The raw comparison data published
  2. The benchmark moved out of "placeholder" status
  3. A clearer public list of who is maintaining what

FAQ

Is LYNX anonymous?

No. The project says so directly. It commits to not building a profile of you and not selling or sharing query data, but infrastructure-level logs still exist.

Is it the same as the Lynx text browser?

No. The FAQ states it is not affiliated with, endorsed by or derived from that project. There are also unrelated open-source projects that share the name.

Why AGPL?

Anyone who runs a modified LYNX as a network service must publish their changes. The reasoning given is that a search engine is infrastructure. Commercial licensing is available from Anoneurx.

Why Rust?

The main job is parsing and fetching content an attacker may control, so memory safety removes a whole class of bugs.

Can I self-host it?

Yes. A verification artefact ships with the release so the privacy claims can be checked by anyone, not only the authors.


Your turn πŸ‘‡

LYNX is at the stage where a good bug report probably helps more than a like. The project is looking for its first contributors and testers, and the testers and QA section of the project page currently says nobody is listed yet.

Yes, that could be you. πŸ™Œ

Here is how you can help, from quick to bigger:

  1. Star the repo and share it with someone who cares about privacy or Rust
  2. Try it (or self-host it) and see where it breaks
  3. Open an issue with what you found: a bug, a confusing doc, a query that returns weird results. Read CONTRIBUTING.md first so your issue lands the way the maintainers want it
  4. Send a small pull request. A docs fix is a great start (remember the README status table?)
  5. Test the edges. Fresh, local and non-English queries, including Urdu and Roman Urdu, are exactly where the project admits recall is weak
  6. Share what you learn. Write your own post, run your own benchmark, or publish a critical review. The project itself says to cite the run, not the headline, so honest write-ups fit right in

One rule that matters: do not report security problems in a public issue. Use SECURITY.md instead. The policy promises an acknowledgement within 48 hours and says good-faith researchers will not face legal action.

The repo also has a code of conduct, so please read that before you jump in.

⭐ Open an issue, send a PR, or just try LYNX and tell the team what you find

I will leave you with the question from the launch post, because it is a good one: what would you want from a privacy-focused search engine? Transparent ranking? Self-hosting? No AI at all?

And a few smaller ones, if you feel like answering:

  • Would you use a search engine with a small index but honest limits?
  • Have you ever read a privacy policy all the way to the end? πŸ˜…
  • Which ⚠️ row in the table above worries you most?
  • Will you try it, open an issue, or send a PR? Tell me which one

Tell me in the comments, and if you do open an issue or a PR, drop the link there too. I read all of them.

To @itskashie and everyone credited on LYNX: thank you for building this in public and for writing down what it cannot do yet. That choice is rare, and it is why people like me stopped scrolling.

I hope you learned something new. And if you did not, I hope the tables were at least fun to look at. πŸ˜„

PS. If you spot a mistake in anything I wrote about the project, tell me. I would rather fix a post than defend one.

Chat with me