<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adarsh Kushwah</title>
    <description>The latest articles on DEV Community by Adarsh Kushwah (@devadarshkushwah).</description>
    <link>https://dev.to/devadarshkushwah</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4164427%2Ffdf6119c-0083-4370-bd14-162d1eb096ef.jpg</url>
      <title>DEV Community: Adarsh Kushwah</title>
      <link>https://dev.to/devadarshkushwah</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devadarshkushwah"/>
    <language>en</language>
    <item>
      <title>Cove: A Calm, Local-First New Tab Extension for Firefox</title>
      <dc:creator>Adarsh Kushwah</dc:creator>
      <pubDate>Sat, 31 Oct 2026 19:14:21 +0000</pubDate>
      <link>https://dev.to/devadarshkushwah/cove-a-calm-local-first-new-tab-extension-for-firefox-1568</link>
      <guid>https://dev.to/devadarshkushwah/cove-a-calm-local-first-new-tab-extension-for-firefox-1568</guid>
      <description>&lt;p&gt;Cove is a calm, local-first Manifest V3 new tab extension for Firefox. It replaces the new tab with a workspace, a ranked newsroom, an offline reader, a Pomodoro timer, and procedural focus sound — 166.2 KB gzipped, zero runtime dependencies, no account, no analytics, no server. Data stays in &lt;code&gt;chrome.storage.local&lt;/code&gt; and IndexedDB. One click from Firefox Add-ons. Open source, Apache-2.0.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Fact&lt;/th&gt;
&lt;th&gt;Cove (v0.1.3, checked 29–31 Oct 2026)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stack&lt;/td&gt;
&lt;td&gt;Svelte 5 + TypeScript + Vite 6 + Tailwind CSS 4, Manifest V3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Size&lt;/td&gt;
&lt;td&gt;166.2 KB gzipped (141.0 KB JS + 25.2 KB CSS), CI-enforced 170 KB budget&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dependencies&lt;/td&gt;
&lt;td&gt;Zero runtime dependencies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tests&lt;/td&gt;
&lt;td&gt;66 unit tests + 2 integration audits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;chrome.storage.local&lt;/code&gt; + IndexedDB, JSON export/import&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy&lt;/td&gt;
&lt;td&gt;No account, no analytics, no tracking, full network ledger in repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browsers&lt;/td&gt;
&lt;td&gt;Firefox (Add-ons, one click); Chrome, Brave, Arc, Edge, Zen (manual install)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Licence&lt;/td&gt;
&lt;td&gt;Apache-2.0 — &lt;a href="https://github.com/DevAnimecx/cove" rel="noopener noreferrer"&gt;github.com/DevAnimecx/cove&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why 300 downloads didn't stay
&lt;/h2&gt;

&lt;p&gt;The first post about Cove got 7,400 views and about 300 downloads. In my judgment, most of those people didn't stay. The answer wasn't the product. It was the install.&lt;/p&gt;

&lt;p&gt;I sold calm, then asked people to do the least calm install on the internet: download a ZIP, unzip it, turn on Developer mode, Load unpacked, keep the folder forever. People who wanted a quiet tab bounced before they ever saw one.&lt;/p&gt;

&lt;p&gt;The second mistake was pitching everyone. "A calm new tab for anyone" tells nobody anything. Developers starred the repo and went back to their old tab. Non-developers bounced at the GitHub funnel.&lt;/p&gt;

&lt;p&gt;The third mistake was listing features instead of showing one moment. Workspace plus newsroom plus reader plus Pomodoro plus sound, in words, gives a reader nothing to picture doing at 9 a.m. tomorrow.&lt;/p&gt;

&lt;p&gt;This post fixes all three in the order a developer needs them: who it's for, how it works, how to verify every claim yourself, and how to install it. The install problem is fixed for Firefox: Cove is on Firefox Add-ons, one click, no ZIP.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Cove, and who is it for?
&lt;/h2&gt;

&lt;p&gt;Cove replaces your new tab with four stages: Bento Dashboard, Ambient Home, Focus Sanctuary, and Pure Stillness. Under them sit quick links, notes, read-later, tab triage, saved sessions, the newsroom, the reader, a timer, and sound. The point isn't more to look at. It's the few things you use in the morning, then out of the way.&lt;/p&gt;

&lt;p&gt;Cove is for you if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You use Firefox, or you'll install manually on Chrome, Brave, Arc, Edge, or Zen for now.&lt;/li&gt;
&lt;li&gt;You open a new tab dozens of times a day and want the first second quiet.&lt;/li&gt;
&lt;li&gt;You'd rather read the permission list than be surprised by it later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cove is not for you if you want cross-device sync, cloud recommendations, or a server-side profile. There is no server. That's a design decision, not a missing feature.&lt;/p&gt;

&lt;p&gt;I'm 18, in my first year of a B.Tech in AI and Robotics in Indore, and I built Cove for myself first. The first version shipped in a single day — 60+ commits on 27 October 2026 — because I wanted the tab on my own machine that night. I kept building because other people said they wanted the same tab. That is still the strategy: build the tab I want to open, document every trade-off, let anyone read the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does it work?
&lt;/h2&gt;

&lt;p&gt;Four systems, all local, no account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Discover: newsroom ranked on your device
&lt;/h3&gt;

&lt;p&gt;Discover pulls 11 curated RSS/Atom feeds plus three keyless APIs: Spaceflight News, DEV.to, and Hacker News (Algolia). You can add your own feeds. Ranking runs on-device with an 18-hour freshness half-life — newer stories rise, old ones fade, no server watching clicks. Topic, source, and keyword affinity shape the order, a diversity pass stops one feed taking over, and feedback signals adjust what surfaces next.&lt;/p&gt;

&lt;p&gt;Up to 120 extracted articles are cached in IndexedDB for offline reading. Bad Wi-Fi, train, dropping connection: the article is already there.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reader: local extraction, no paywall bypass
&lt;/h3&gt;

&lt;p&gt;The reader extracts locally with &lt;code&gt;DOMParser&lt;/code&gt;, strips scripts, styles, navigation, iframes, and forms, and rebuilds the article as clean, escaped HTML. Story briefs, serif/sans surfaces, Glass/Paper/Ink themes, reading progress. No account, no sync.&lt;/p&gt;

&lt;p&gt;One rule is load-bearing: Cove does not bypass paywalls. Blocked article? It links to the original.&lt;/p&gt;

&lt;h3&gt;
  
  
  Search: answers without leaving the tab
&lt;/h3&gt;

&lt;p&gt;v0.1.3 added a search studio with 14 presets — Startpage, Kagi, Perplexity, ChatGPT, Claude, Stack Overflow, GitLab, npm, PyPI, Reddit, Hacker News, arXiv, Google Maps, Unsplash — plus custom HTTPS templates. Bangs work both ways: &lt;code&gt;!gh query&lt;/code&gt; and &lt;code&gt;query !gh&lt;/code&gt; do the same thing. &lt;code&gt;!w&lt;/code&gt; finds Wikipedia. &lt;code&gt;!github&lt;/code&gt; finds a repo.&lt;/p&gt;

&lt;p&gt;Instant answers compute locally: date differences, Unix timestamps, base conversion, tips and percentage change, RGB/HSL colours, word counts. Press Cmd/Ctrl+K for the command palette. Search box plus palette is most of the navigation. A ten-section Settings Studio exists if you want it; day one shouldn't need it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Focus: Pomodoro, friction blocker, sound made in code
&lt;/h3&gt;

&lt;p&gt;A Pomodoro timer. A site blocker on &lt;code&gt;declarativeNetRequest&lt;/code&gt; that works by friction, not pretend security — you can still reach the site, it just makes you pause first. Focus Sound: five procedural soundscapes generated in code, zero audio files.&lt;/p&gt;

&lt;p&gt;The audio was renamed from "neural" branding on purpose. It's sound that helps some people concentrate. Not a medical device. Doesn't treat anything. The disclaimer stays in the product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frv6v08dlrwpbku1c0jge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frv6v08dlrwpbku1c0jge.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify it yourself
&lt;/h2&gt;

&lt;p&gt;Don't take the claims above on trust. The repo is small enough to check in minutes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/DevAnimecx/cove.git
&lt;span class="nb"&gt;cd &lt;/span&gt;cove
npm ci          &lt;span class="c"&gt;# Node &amp;gt;= 22.18&lt;/span&gt;
npm run build
npm run budget  &lt;span class="c"&gt;# fails CI over 170 KB — the budget is enforced, not a slogan&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the security claims the same way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; &lt;span class="s2"&gt;"innerHTML&lt;/span&gt;&lt;span class="se"&gt;\|&lt;/span&gt;&lt;span class="s2"&gt;eval("&lt;/span&gt; src/ &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"clean"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expect no matches for &lt;code&gt;innerHTML&lt;/code&gt; or &lt;code&gt;eval(&lt;/code&gt; in &lt;code&gt;src/&lt;/code&gt; — that was the result of the code search on 27 October 2026. The extension CSP is strict:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Content-Security-Policy: script-src 'self'; object-src 'self'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where to look in the code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/lib/
  state.svelte.ts       # single store — oversized, splitting it is on the list
  smart-engine.ts       # ranking / focus logic
  discover.ts           # feeds + article extraction
DiscoverFeed.svelte     # newsroom UI
SettingsStudio.svelte   # 10-section settings — oversized, splitting it is on the list
docs/                   # 25 docs: architecture, privacy ledger, threat model, release process
llms.txt                # short machine-readable project summary
llms-full.txt           # full machine-readable project summary
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CI runs typecheck, tests, build, core audits, budget, verify, and artifact upload, with release publishing on tags. The two oversized files above are known and named here because you'd find them in the repo anyway. Naming the debt beats hiding it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy and permissions
&lt;/h2&gt;

&lt;p&gt;Short answer: there's nowhere for your data to go. No backend, no account, no analytics. Every network call is listed — destination, default, control — in the privacy ledger in the repo and on the &lt;a href="https://appcove.vercel.app/privacy" rel="noopener noreferrer"&gt;privacy page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The honest part: Cove asks for broad permissions, including &lt;code&gt;&amp;lt;all_urls&amp;gt;&lt;/code&gt; host access — the broadest permission possible. It's needed to fetch feeds, including feeds you add yourself, and to extract articles from arbitrary sites. It can't be fully narrowed without breaking custom feeds, and I won't pretend otherwise.&lt;/p&gt;

&lt;p&gt;The full permission list, what each one is for, and what controls it, is in the &lt;a href="https://appcove.vercel.app/privacy" rel="noopener noreferrer"&gt;privacy ledger&lt;/a&gt; and &lt;code&gt;docs/privacy.md&lt;/code&gt;. If that trade-off isn't right for you, don't install it. I'd rather lose a user than hide a permission.&lt;/p&gt;

&lt;p&gt;The repo also ships &lt;code&gt;llms.txt&lt;/code&gt; and &lt;code&gt;llms-full.txt&lt;/code&gt;, a citation file, a security policy, and docs on architecture, the ranking engine, and the threat model — so an AI assistant evaluating the repo can answer from source instead of guessing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measured
&lt;/h2&gt;

&lt;p&gt;All numbers from the v0.1.3 build, checked 29–31 October 2026:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gzipped size&lt;/td&gt;
&lt;td&gt;166.2 KB (141.0 KB JS + 25.2 KB CSS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Budget&lt;/td&gt;
&lt;td&gt;170 KB, enforced in CI (&lt;code&gt;npm run budget&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime dependencies&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unit tests&lt;/td&gt;
&lt;td&gt;66, plus 2 integration audits (Manifest V3 + CSP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accounts / analytics / servers&lt;/td&gt;
&lt;td&gt;0 / 0 / 0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Cove is not the smallest extension ever made, and I won't claim it is. It's small on purpose, under a machine-enforced budget. Wallpapers and fonts are bundled, so the full archive is larger — the budget covers JS + CSS, and that's the claim, no more.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Firefox — one click
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/cove-calm-new-tab/" rel="noopener noreferrer"&gt;Cove listing on Firefox Add-ons&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Add to Firefox&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Open a new tab. Ten seconds, and you know if it's for you.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Chrome, Brave, Arc, Edge, Zen — manual, about a minute
&lt;/h3&gt;

&lt;p&gt;Chrome and Edge store listings are next, not already done. Until then, install from the &lt;a href="https://appcove.vercel.app/install" rel="noopener noreferrer"&gt;install page&lt;/a&gt; (release ZIPs + SHA-256 checksums):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the ZIP for your browser, unzip it into a permanent folder.&lt;/li&gt;
&lt;li&gt;Extensions page → Developer mode on → &lt;strong&gt;Load unpacked&lt;/strong&gt; → pick the folder.&lt;/li&gt;
&lt;li&gt;Open a new tab. Keep the folder where it is — the browser loads from it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Found a bug? File it on &lt;a href="https://github.com/DevAnimecx/cove" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; with what you did, what you expected, and what happened instead. That's the feedback that actually changes the roadmap.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Cove is not
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Not a VPN or security tool.&lt;/strong&gt; The blocker adds friction; it doesn't protect you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not a medical device.&lt;/strong&gt; Focus Sound is procedural audio. It treats nothing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not a paywall bypass.&lt;/strong&gt; Blocked articles link to the original.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not a cloud product.&lt;/strong&gt; No sync, no account, no server-side profile.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not the smallest extension ever.&lt;/strong&gt; 166.2 KB gzipped under a CI budget is the claim — no more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Firefox is live. Chrome and Edge listings are next, with the same copy and permission justifications already in the repo — no new claims for the store. After that, the roadmap is feedback-driven: which feed failed, which article extracted badly, which instant answer was wrong, what your new tab does first that you wish it wouldn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is Cove?&lt;/strong&gt;&lt;br&gt;
A calm, local-first Manifest V3 new tab extension for Firefox: workspace, ranked newsroom, offline reader, Pomodoro timer, and procedural focus sound in 166.2 KB gzipped, with no account, no analytics, and no server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Cove free?&lt;/strong&gt;&lt;br&gt;
Yes. Open source under Apache-2.0, no subscription, no account, no paid tier. Read the full code on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Cove track me?&lt;/strong&gt;&lt;br&gt;
No. No account, no analytics, no Cove server. Data stays in &lt;code&gt;chrome.storage.local&lt;/code&gt; and IndexedDB, and every network call is listed in the privacy ledger.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I install Cove on Firefox?&lt;/strong&gt;&lt;br&gt;
Open the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/cove-calm-new-tab/" rel="noopener noreferrer"&gt;Cove listing on Firefox Add-ons&lt;/a&gt;, select Add to Firefox, open a new tab. About ten seconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I install Cove on Chrome or Brave?&lt;/strong&gt;&lt;br&gt;
Manually for now: ZIP from the &lt;a href="https://appcove.vercel.app/install" rel="noopener noreferrer"&gt;install page&lt;/a&gt;, unzip, Developer mode on, Load unpacked, pick the folder. Chrome and Edge store listings are next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does Cove ask for &lt;code&gt;&amp;lt;all_urls&amp;gt;&lt;/code&gt;?&lt;/strong&gt;&lt;br&gt;
To fetch feeds, including feeds you add yourself, and extract articles from arbitrary sites. The full permission list and justifications are in the privacy ledger. If the trade-off isn't right for you, don't install it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How big is Cove?&lt;/strong&gt;&lt;br&gt;
166.2 KB gzipped (141.0 KB JS + 25.2 KB CSS) in v0.1.3, under a CI-enforced 170 KB budget, zero runtime dependencies, 66 unit tests plus 2 integration audits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I run the checks myself?&lt;/strong&gt;&lt;br&gt;
Clone the repo, &lt;code&gt;npm ci&lt;/code&gt; (Node &amp;gt;= 22.18), then &lt;code&gt;npm run build&lt;/code&gt; and &lt;code&gt;npm run budget&lt;/code&gt;. Tests and core audits run in CI on every push; the budget check fails the build over 170 KB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Cove work offline?&lt;/strong&gt;&lt;br&gt;
In part. Up to 120 extracted articles are cached locally for offline reading. Live feed fetching and search presets need a connection; reader, timer, and sound don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does Cove do that a default new tab doesn't?&lt;/strong&gt;&lt;br&gt;
Workspace, ranked newsroom, offline reader, Pomodoro, and procedural sound in one tab — no ads, no upsells, no login, no server-side profile — with every permission and network call documented in the open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In one sentence:&lt;/strong&gt; Cove is a 166.2 KB, local-first new tab extension for Firefox that gives you a quiet workspace, a ranked newsroom, an offline reader, and focus tools — no account, no tracking, no server — and every claim in this post is verifiable in its open-source repo.&lt;/p&gt;




&lt;p&gt;I built Cove for me, but the people who downloaded it after the first post found things I'd never have found alone. Two questions, and I'll read every answer:&lt;/p&gt;

</description>
      <category>firefox</category>
      <category>opensource</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Stop Paying for Search APIs: How I Ended Up Building Around Jiro</title>
      <dc:creator>Adarsh Kushwah</dc:creator>
      <pubDate>Mon, 05 Oct 2026 16:48:19 +0000</pubDate>
      <link>https://dev.to/devadarshkushwah/stop-paying-for-search-apis-how-i-ended-up-building-around-jiro-4730</link>
      <guid>https://dev.to/devadarshkushwah/stop-paying-for-search-apis-how-i-ended-up-building-around-jiro-4730</guid>
      <description>&lt;p&gt;I have a graveyard of abandoned AI agent prototypes. The common thread? They all died at the search layer.&lt;/p&gt;

&lt;p&gt;You know the drill. You build a beautiful RAG pipeline. You wire up the tools. You spend a weekend on prompt engineering. Then you hit a wall: your agent needs to know what happened on the web today, not just what was in a static PDF from 2023. You look at the usual suspects — SerpAPI, Tavily, Exa, Brave Search — and you realize that real-time grounding is either expensive at scale or a compliance nightmare. The alternative is rolling your own scraper, which lasts about forty-eight hours before Google starts serving you CAPTCHAs.&lt;/p&gt;

&lt;p&gt;So I started looking for a middle ground. A self-hosted search layer that could actually survive contact with production. That is how I stumbled into Jiro.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Jiro Actually Is (and Isn’t)
&lt;/h2&gt;

&lt;p&gt;Let me be clear about the framing because the repository description does a lot of heavy lifting, and I almost scrolled past it.&lt;/p&gt;

&lt;p&gt;Jiro is not a managed cloud service trying to lock you into a per-query billing model. It is an open-source, self-hosted search API and scraping platform that aggregates results from nine search engines and twelve social platforms, with a built-in MCP server and hybrid search ranking. You run it on your own infrastructure. It is MIT licensed. You can pip install jirosearch and have a local search endpoint running in under a minute.&lt;/p&gt;

&lt;p&gt;The “free SerpAPI alternative” tagline is accurate, but it undersells what the project actually does. This is not just a proxy for Google results. It is a search intelligence layer designed specifically for AI agents and LLM tool use.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Architecture That Made Me Stay
&lt;/h2&gt;

&lt;p&gt;I spend a lot of time reading source code before I trust a tool in an agent loop. The first thing that caught my attention in Jiro’s repo is the directory structure. This is not a script someone threw together over a weekend.&lt;/p&gt;

&lt;p&gt;The project separates concerns in a way that makes sense for a production search system:&lt;/p&gt;

&lt;p&gt;search/ handles hybrid ranking, reranking, and multi-query expansion&lt;/p&gt;

&lt;p&gt;scraping/ runs the nine engine adapters and the twelve social platform scrapers&lt;/p&gt;

&lt;p&gt;ai/ manages LLM integration for answer synthesis&lt;/p&gt;

&lt;p&gt;mcp.py exposes sixteen MCP tools out of the box&lt;/p&gt;

&lt;p&gt;stealth.py handles TLS/JA3 fingerprint rotation and anti-bot bypass&lt;/p&gt;

&lt;p&gt;You can see the full architecture breakdown in the repo. The short version is this: when my agent asks for a search, it does not get a flat list of links. It gets hybrid-ranked results that combine keyword signals with semantic freshness, along with query-aware snippet extraction and optional answer synthesis.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP Integration: The Real Unlock
&lt;/h2&gt;

&lt;p&gt;If you are building with Claude Desktop, Cursor, or any other MCP-compatible client, this is where Jiro becomes genuinely useful. The project ships with a built-in MCP server. You drop a single configuration block into your client, and your agent immediately gains access to sixteen tools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"jiro"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"jiro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"mcp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The free tier alone gives you search, scrape, compare_engines, smart_classify, and monitor_status. The Pro tier unlocks ai_search (AI research with citations), search_hybrid, search_structured, and the full social scraping suite.&lt;/p&gt;

&lt;p&gt;What this means in practice: I can ask Claude to “find the latest benchmarks for agentic RAG and summarize the key takeaways.” Claude calls jiro.ai_search, Jiro runs the hybrid search, scrapes the top results, synthesizes an answer, and returns it with citations — all locally, without my data leaving my machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Social Scraping Layer Is Underrated
&lt;/h2&gt;

&lt;p&gt;Most search APIs stop at web results. Jiro handles twelve social platforms: Reddit, Twitter/X, YouTube, LinkedIn, TikTok, Instagram, Facebook, Threads, Hacker News, Bluesky, Telegram, and Pinterest.&lt;/p&gt;

&lt;p&gt;This matters more than it sounds. If you are building a monitoring agent for a product launch, or a research agent tracking sentiment around a topic, you need social data. The fact that it is baked into the same API surface as web search means you are not stitching together three different services and normalizing three different response schemas.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Walkthrough: Search in 30 Seconds
&lt;/h3&gt;

&lt;p&gt;Here is the part I actually care about. Does it work without a PhD in infrastructure?&lt;/p&gt;

&lt;p&gt;bash&lt;/p&gt;

&lt;h1&gt;
  
  
  Install
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;jirosearch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Start the server
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jiro serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Search
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://localhost:8000/search &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"q": "latest AI research", "engine": "google"}'&lt;/span&gt;
That is it. You now have a &lt;span class="nb"&gt;local &lt;/span&gt;search endpoint with caching, hybrid ranking, and structured extraction.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Python SDK is equally straightforward:&lt;/p&gt;

&lt;p&gt;python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;jiro_sdk&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;JiroClient&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;JiroClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;python web scraping&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scrape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://example.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ai_ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What is Python?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;There&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="n"&gt;also&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;WebSocket&lt;/span&gt; &lt;span class="n"&gt;streaming&lt;/span&gt; &lt;span class="n"&gt;API&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;you&lt;/span&gt; &lt;span class="n"&gt;need&lt;/span&gt; &lt;span class="n"&gt;real&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;parallel&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt; &lt;span class="n"&gt;across&lt;/span&gt; &lt;span class="n"&gt;multiple&lt;/span&gt; &lt;span class="n"&gt;engines&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;single&lt;/span&gt; &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Self-Hosted Economics
&lt;/h2&gt;

&lt;p&gt;Let me put the numbers on the table because this is the part that made me close the other tabs.&lt;/p&gt;

&lt;p&gt;SerpAPI’s paid tier starts around $50/month for a few thousand searches. ScraperAPI gives you 5,000 requests. Bright Data is enterprise pricing. If you are running an agent that searches once per task, or a monitoring loop that polls every five minutes, you blow through those quotas fast.&lt;/p&gt;

&lt;p&gt;Jiro’s self-hosted Pro tier is a one-time ₹4,999 purchase. It gives you 500 requests per minute, 100,000 requests per day, AI search, and commercial use rights. There is no per-query billing. There is no cloud lock-in. You are running the infrastructure, and you own the results.&lt;/p&gt;

&lt;p&gt;The free self-hosted tier gives you 100 RPM and 10,000 requests per day, which is more than enough for personal projects and development environments.&lt;/p&gt;

&lt;p&gt;The Honest Caveats&lt;br&gt;
I am not going to pretend this is a perfect drop-in replacement for every use case. If you need a fully managed service with zero ops overhead, SerpAPI is still the easier choice. If you are scraping at a scale where even self-hosted rate limits are a bottleneck, you will need to think about horizontal scaling.&lt;/p&gt;

&lt;p&gt;But if you are an AI engineer building agents that need real-time web grounding, social intelligence, and structured data extraction without handing your budget to a SaaS provider, Jiro is the most complete open-source option I have found this year.&lt;/p&gt;

&lt;p&gt;The repository is at github.com/DevAnimecx/jiro. The documentation is at searchjiro.vercel.app/docs. The MIT license means you can fork it, audit it, and ship it in commercial products without asking for permission.&lt;/p&gt;

&lt;p&gt;If you are tired of watching your agent’s search bill climb every time you test a new retrieval strategy, give it a look. Your infrastructure, your rules, your data. That is the pitch, and for once, it actually holds up.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>agents</category>
      <category>python</category>
    </item>
  </channel>
</rss>
