<?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: Sumama-Jameel</title>
    <description>The latest articles on DEV Community by Sumama-Jameel (@sumama_jamil_173056ab0be5).</description>
    <link>https://dev.to/sumama_jamil_173056ab0be5</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%2F3979013%2F270972d4-d44c-4b3e-84a6-1a634c06e7f7.png</url>
      <title>DEV Community: Sumama-Jameel</title>
      <link>https://dev.to/sumama_jamil_173056ab0be5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sumama_jamil_173056ab0be5"/>
    <language>en</language>
    <item>
      <title>14 y/o. Nine products built. Starting a startup. Zero dollars, low-specs PC, very low public attention.</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 01 Sep 2026 18:42:46 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/14-yo-nine-products-built-starting-a-startup-zero-dollars-low-specs-pc-very-low-public-4ea9</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/14-yo-nine-products-built-starting-a-startup-zero-dollars-low-specs-pc-very-low-public-4ea9</guid>
      <description>&lt;p&gt;I am Sumama Jameel. 14 y/o. I live in Karachi,  Pakistan. Not a coder, nine products built. Now I am starting a startup.&lt;/p&gt;

&lt;p&gt;Let me explain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who I Am
&lt;/h2&gt;

&lt;p&gt;I am not a coder. But I can look at a broken system, understand exactly why it is broken, design the architecture to fix it, and direct an AI to build the solution. I did this nine times in the past few months.&lt;/p&gt;

&lt;p&gt;I built a privacy-first subscription tracker that finds hidden charges in bank statements without connecting to your bank. I built a threat intelligence API that checks URLs, emails, and phone numbers against multiple sources. I built an AI gateway that gives free access to models like ChatGPT and DeepSeek without API keys. I built a browser debugging tool that lets AI agents see every hidden network event. I built an environment provisioning engine. I built a reading tool for hard science books. And I built three AI agent skills for validating business ideas, debugging software, and understanding user intent.&lt;/p&gt;

&lt;p&gt;Nine products. Zero lines of code written by my hands. I designed every system. I wrote every specification. I defined every security model. I chose every architecture. The AI handled the syntax. I handled the thinking.&lt;/p&gt;

&lt;p&gt;I tried to sell one of them. I failed. I could not find customers. I could not explain the value simply enough. Instead of hiding, I open-sourced it and learned from the failure.&lt;/p&gt;

&lt;p&gt;That failure taught me more than any success could. It taught me that building is ten percent of the work. The other ninety percent is finding the person who is bleeding money and putting the solution in front of them.&lt;/p&gt;

&lt;p&gt;Now I am building something that I will not open-source. Something I will sell.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem I Am Solving
&lt;/h2&gt;

&lt;p&gt;I will not tell you the method. I will tell you the problem.&lt;/p&gt;

&lt;p&gt;In 2026, AI labs are hitting a wall. They are running out of high-quality training data. Specifically, they are running out of data that teaches AI models how to actually code.&lt;/p&gt;

&lt;p&gt;Here is what I mean.&lt;/p&gt;

&lt;p&gt;When you look at a git diff, you see the answer. You see what changed. You see the final code. But you do not see the process. You do not see the developer reading files, exploring the codebase, making a plan, writing code, running tests, hitting an error, debugging, trying again, and finally getting it right.&lt;/p&gt;

&lt;p&gt;That process is gone. It lived in the developer's head. It was never recorded. It was never captured.&lt;/p&gt;

&lt;p&gt;AI coding models need that process. They need to see how a real developer thinks, explores, fails, recovers, and succeeds. Without it, they can only mimic the final output. They cannot replicate the reasoning.&lt;/p&gt;

&lt;p&gt;The market for AI training data is projected to grow from $3.19 billion in 2025 to $8.45 billion by 2030. Synthetic data generation is growing even faster. But most synthetic data is garbage. It is hallucinated. The AI pretends to run commands. It invents terminal outputs. It fakes test results. It looks like a coding session, but nothing is real.&lt;/p&gt;

&lt;p&gt;That is the problem. AI labs need real, grounded, verifiable coding trajectories. And there is no reliable way to get them at scale.&lt;/p&gt;

&lt;p&gt;Until now.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I built a system that generates high-quality, grounded, verifiable coding trajectories(data) at scale.&lt;/p&gt;

&lt;p&gt;What it actually guarantees:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every command output is real. Nothing is faked. Nothing is simulated.&lt;/li&gt;
&lt;li&gt;Every error is real. When something breaks, the failure is recorded verbatim.&lt;/li&gt;
&lt;li&gt;Every trajectory is verifiable. You can check the output against the expected result.&lt;/li&gt;
&lt;li&gt;The system prevents the AI from cheating. It cannot look up the answer. It cannot skip the work. It cannot fake the process.&lt;/li&gt;
&lt;li&gt;The data mirrors real enterprise software development. Not toy examples. Real tickets, real tests, real code review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a prompt wrapper. This is not a fine-tuning script. This is a data generation engine that produces training data AI labs actually need.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Me
&lt;/h2&gt;

&lt;p&gt;I am not a machine learning researcher. I am not a data scientist. I am an architect who understands systems, understands constraints, and understands how to make AI do real work instead of fake work.&lt;/p&gt;

&lt;p&gt;I built nine products using AI as my engineering team. I know exactly what AI can do, what it cannot do, and where it lies. I built anti-faking systems before anyone else cared about them. I built verification gates before synthetic data quality became a talking point.&lt;/p&gt;

&lt;p&gt;I also failed to sell a product. I know what it feels like to build something good and not know how to get customers. I am not making that mistake again. This time, I have a partner with 25 years of business experience. He handles the selling. I handle the building.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Comes Next
&lt;/h2&gt;

&lt;p&gt;I am currently generating the first batch of trajectories. I am validating them. I am testing them against real coding benchmarks. I am preparing sample datasets to send to AI labs.&lt;/p&gt;

&lt;p&gt;I am not looking for funding right now. I am looking for validation and public attention. I want AI labs to test my data on their own infrastructure and tell me if it improves their models. An AI company to try our data on their models. If it works, we talk.&lt;/p&gt;

&lt;p&gt;If you work at an AI lab, or you are building coding agents, or you are responsible for training data quality, and you want to see a sample batch, send me a message. I will show you what grounded, anti-faked, verifiable coding trajectories look like.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Honest Part
&lt;/h2&gt;

&lt;p&gt;I have a low-spec PC. I have zero dollars in the bank. I do not have a team of engineers. I do not have a GPU cluster. I do not have a fancy office.&lt;/p&gt;

&lt;p&gt;What I have is a working system, a clear market need, a business partner, and the stubbornness to keep going when everything says to stop.&lt;/p&gt;

&lt;p&gt;I built nine products in a few months without writing code. I am building the tenth. This one is different. This one is for sale.&lt;/p&gt;

&lt;p&gt;If you want to follow the journey, follow me. I will share what I can. I will not share the method. But I will share the results, the failures, the lessons, and the wins.&lt;/p&gt;

&lt;p&gt;You can buy compute, not the DATA.&lt;/p&gt;

&lt;p&gt;That is all I can say for now.&lt;/p&gt;




&lt;p&gt;GitHub (open-source work): &lt;a href="https://github.com/Sumama-Jameel" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Browser dev tools but for AI agents. Open-sourced. Full visibility.</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 01 Sep 2026 18:32:24 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/browser-dev-tools-but-for-ai-agents-open-sourced-full-visibility-2ibl</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/browser-dev-tools-but-for-ai-agents-open-sourced-full-visibility-2ibl</guid>
      <description>&lt;p&gt;I built an open-source tool called Whelmer. It gives AI agents full visibility into what a browser is doing. Every DOM change, every network request, every console message, every storage mutation — nothing is hidden, nothing is filtered.&lt;/p&gt;

&lt;p&gt;Here is exactly what it is, why I built it, and how it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;When you connect to a browser debug port, the browser emits events for everything. CDP alone has 53 domains with hundreds of event types. Every DOM change, every network request, every console message, every CSS update, every storage mutation, every security state change — all of it flows out as WebSocket messages.&lt;/p&gt;

&lt;p&gt;But existing agent tools give you a filtered view. They show you the events they think you need and drop the rest. You do not see what you do not know exists.&lt;/p&gt;

&lt;p&gt;If a page fires a Storage event that reveals how an SPA manages auth tokens, most tools never tell you. If a service worker intercepts a request and modifies the response, most tools never show you. You are working blind.&lt;/p&gt;

&lt;p&gt;It gets worse with multi-browser support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firefox uses a completely different protocol (BiDi or FDP)&lt;/li&gt;
&lt;li&gt;Safari uses WebKit Remote Debugging Protocol&lt;/li&gt;
&lt;li&gt;Most tools only support Chrome via CDP&lt;/li&gt;
&lt;li&gt;Agent frameworks that claim multi-browser support often hide protocol differences behind opinionated abstractions that drop events&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You end up debugging in the dark.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Whelmer Does
&lt;/h2&gt;

&lt;p&gt;Whelmer shows you everything.&lt;/p&gt;

&lt;p&gt;Every event from every enabled domain flows through an EventBus with a 10,000-event ring buffer. You can stream all events as NDJSON. You can filter by domain. You can replay history. You can enable or disable any of the 53 CDP domains at runtime.&lt;/p&gt;

&lt;p&gt;Nothing is hidden. Nothing is filtered. You get the full firehose and decide what matters.&lt;/p&gt;

&lt;p&gt;It connects to Chrome, Brave, Edge, Opera, and Firefox out of the box. Four protocols. One binary. Same event model.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I Built It
&lt;/h2&gt;

&lt;p&gt;I built Whelmer for a specific job: reverse-engineering the web apps and their internal API. This project was built using Whelmer: &lt;a href="https://github.com/Sumama-Jameel/Mirage" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/Mirage&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When OpenAI, Google, Grok, Qwen, or others update their UI or internal API format, integrations that depend on those internal APIs break. You need to see exactly what changed. You need to see every network request, every console message, every storage mutation as raw JSON.&lt;/p&gt;

&lt;p&gt;Whelmer exposes all of that in your terminal. You see exactly what changed and fix your integration in minutes instead of hours. No switching to browser DevTools. No manual inspection. Just raw protocol data.&lt;/p&gt;

&lt;p&gt;That project (an OpenAI-compatible API wrapper that routes through these internal APIs — Mirage) is what drove the need for Whelmer.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;The data flow is a pipeline with four stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WsConnection&lt;/strong&gt; — Persistent WebSocket connection to the browser debug port. Writer task sends commands. Reader task routes responses back to callbacks and all other messages to an mpsc channel.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;EventBus&lt;/strong&gt; — Bridges the mpsc receiver to a broadcast channel and a ring buffer. A bridge task reads every event from the mpsc channel and publishes it to all broadcast subscribers while simultaneously appending it to the in-memory history buffer. No events are dropped.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Display Consumer&lt;/strong&gt; — Spawned automatically on startup. Handles known event types and prints them formatted to the terminal. One directional: reads from the broadcast channel, writes to stdout.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent Consumer&lt;/strong&gt; — Created on demand when you run the &lt;code&gt;events&lt;/code&gt; command. Subscribes to the broadcast channel for live streaming, or reads from the ring buffer for history. Supports &lt;code&gt;--json&lt;/code&gt;, &lt;code&gt;--history N&lt;/code&gt;, and domain filtering. Multiple agent consumers can run simultaneously.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key design choice: the EventBus decouples event production from consumption. The bridge task never blocks. Every consumer gets every event. There is no "you get this, you do not get that" routing logic at the bus level.&lt;/p&gt;




&lt;h2&gt;
  
  
  Multi-Protocol Support
&lt;/h2&gt;

&lt;p&gt;Whelmer supports four protocols:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CDP&lt;/strong&gt; — Chrome DevTools Protocol (Chrome, Brave, Edge, Opera)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BiDi&lt;/strong&gt; — WebDriver BiDi Protocol (W3C standard, works in Chrome and Firefox)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FDP&lt;/strong&gt; — Firefox DevTools Protocol (older Firefox versions)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foxbridge&lt;/strong&gt; — CDP-to-Firefox proxy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One tool covers every major browser. Add a new protocol by implementing the &lt;code&gt;ProtocolConnection&lt;/code&gt; trait.&lt;/p&gt;




&lt;h2&gt;
  
  
  Commands
&lt;/h2&gt;

&lt;p&gt;Whelmer has a full command set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;tabs&lt;/code&gt; — List, create, close, activate browser tabs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;attach&lt;/code&gt; — Switch to a specific tab&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;dom&lt;/code&gt; — Inspect the page DOM&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;eval&lt;/code&gt; — Run JavaScript in page context&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cookies&lt;/code&gt; — Read/write/delete cookies&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;storage&lt;/code&gt; — Inspect or modify localStorage / sessionStorage&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cache&lt;/code&gt; — Show Cache Storage data&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;indexeddb&lt;/code&gt; — Show IndexedDB databases&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;network&lt;/code&gt; — Live request/response monitoring&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;export&lt;/code&gt; — Export all data to JSON&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;screenshot&lt;/code&gt; — Capture page screenshot&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;perf&lt;/code&gt; — Show performance metrics&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;security&lt;/code&gt; — Show page security state&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;websockets&lt;/code&gt; — Show WebSocket connections and frames&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;events&lt;/code&gt; — Stream raw protocol events&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;domains&lt;/code&gt; — List all 53 CDP domains&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;enable&lt;/code&gt; / &lt;code&gt;disable&lt;/code&gt; — Toggle CDP domains at runtime&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;capture&lt;/code&gt; — In-REPL capture session&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;records&lt;/code&gt; — List / inspect captured requests&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;replay&lt;/code&gt; — Export captures as HAR, CSV, or JSON&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;diff&lt;/code&gt; — Compare two captures&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;doctor&lt;/code&gt; — Run diagnostic battery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every data command accepts &lt;code&gt;--json&lt;/code&gt; for machine-readable output.&lt;/p&gt;




&lt;h2&gt;
  
  
  Recording and Replay
&lt;/h2&gt;

&lt;p&gt;Whelmer can record browser sessions:&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="c"&gt;# One-shot capture: record until the target API responds, then stop&lt;/span&gt;
whelmer record &lt;span class="nt"&gt;--until&lt;/span&gt; &lt;span class="s2"&gt;"api/chat"&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; caps.ndjson

&lt;span class="c"&gt;# Saved session: reuse your filter set anywhere&lt;/span&gt;
whelmer record @myapi &lt;span class="nt"&gt;--duration&lt;/span&gt; 60s

&lt;span class="c"&gt;# Background daemon: runs detached, writes a .done marker when finished&lt;/span&gt;
whelmer record &lt;span class="nt"&gt;--until&lt;/span&gt; &lt;span class="s2"&gt;"api/chat"&lt;/span&gt; &lt;span class="nt"&gt;--output&lt;/span&gt; caps.ndjson &lt;span class="nt"&gt;--detach&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can replay captures:&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="c"&gt;# Replay a capture as HAR, CSV, or JSON&lt;/span&gt;
whelmer replay caps.ndjson &lt;span class="nt"&gt;--grep&lt;/span&gt; &lt;span class="s2"&gt;"api/chat"&lt;/span&gt; &lt;span class="nt"&gt;--export&lt;/span&gt; har &lt;span class="nt"&gt;--output&lt;/span&gt; chat.har

&lt;span class="c"&gt;# Rebuild a single recorded request as a copy-paste cURL command&lt;/span&gt;
whelmer curl caps.ndjson chat-abc123

&lt;span class="c"&gt;# Compare two captures — finds what the API contract changed&lt;/span&gt;
whelmer diff run1.ndjson run2.ndjson &lt;span class="nt"&gt;--json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you debug when a provider changes their internal API. You record before the change, record after the change, and diff them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Machine-Readable Control
&lt;/h2&gt;

&lt;p&gt;Whelmer can expose its session over JSONL for agents and automation:&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="c"&gt;# Expose the session over JSONL on stdin/stdout&lt;/span&gt;
whelmer serve

&lt;span class="c"&gt;# TCP listener with auto-generated auth token&lt;/span&gt;
whelmer serve &lt;span class="nt"&gt;--tcp&lt;/span&gt; 9876

&lt;span class="c"&gt;# Unix domain socket (permission-gated, no token needed)&lt;/span&gt;
whelmer serve &lt;span class="nt"&gt;--unix&lt;/span&gt; /tmp/w.sock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This lets AI agents control Whelmer programmatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Under the Hood
&lt;/h2&gt;

&lt;p&gt;Whelmer is written in pure Rust. No Node.js. No Python. No npm install. No bundler. One static binary, about 7 MB. Runs on any Linux, macOS, or Windows machine with a browser.&lt;/p&gt;

&lt;p&gt;The project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
├── main.rs                 # CLI entry point, REPL loop
├── connection.rs           # Persistent WebSocket with command/response routing
├── event_bus.rs            # Broadcast channel + ring-buffer history
├── events.rs               # Event processors + DomainRegistry (53 CDP domains)
├── formatters.rs           # Output formatters (JSON, Table, CSV, YAML, Text)
├── handlers.rs             # Command handlers (cookies, storage, DOM, eval, etc.)
├── protocol.rs             # ProtocolConnection trait + ProtocolEvent enum
├── protocol_detector.rs    # Auto-detect browser and protocol on the network
├── record.rs               # One-shot record orchestration
├── diagnose.rs             # `whelmer doctor` diagnostic battery
├── curl.rs                 # Record → cURL command reconstruction
├── capabilities.rs         # Static per-protocol capability matrices
├── capture/                # Correlation engine, filters, sinks, replay, diff
├── protocols/
│   ├── mod.rs              # Protocol implementations
│   ├── cdp.rs              # Chrome DevTools Protocol
│   ├── bidi.rs             # WebDriver BiDi Protocol
│   ├── fdp.rs              # Firefox DevTools Protocol (RDP)
│   └── foxbridge.rs        # Foxbridge CDP-to-Firefox proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All tests run with mock connections. No browser needed. 379 unit tests, 14 binary tests, 2 integration tests passing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Privacy by Design
&lt;/h2&gt;

&lt;p&gt;Whelmer connects to your local browser only. No cloud. No telemetry. No data leaves your machine. No accounts. No signup.&lt;/p&gt;

&lt;p&gt;You run it against your own browser, on your own machine. That is it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Honest Catch
&lt;/h2&gt;

&lt;p&gt;Whelmer gives you the raw firehose. That means you get a lot of noise. If you enable all 53 CDP domains, your terminal will be flooded with events. You need to know which domains matter for your use case.&lt;/p&gt;

&lt;p&gt;Also, browser protocols change. Chrome updates CDP. Firefox updates BiDi. When that happens, Whelmer needs updates too. This is not a "set it and forget it" tool. It requires maintenance as browsers evolve.&lt;/p&gt;

&lt;p&gt;And because Whelmer shows everything, it is not a beginner tool. If you do not understand what CDP domains are or what a Storage event means, Whelmer will overwhelm you. It is built for people who already understand browser internals and need deeper visibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who It Is For
&lt;/h2&gt;

&lt;p&gt;Whelmer is for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI agent developers who need to debug why their agents fail on complex websites&lt;/li&gt;
&lt;li&gt;Reverse engineers who need to understand how web apps work internally&lt;/li&gt;
&lt;li&gt;Security researchers who need to see every network request and storage mutation&lt;/li&gt;
&lt;li&gt;Anyone building tools that interact with browsers and needs full protocol visibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not for people who just want to scrape a website. It is for people who need to understand the browser at the protocol level.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Run It
&lt;/h2&gt;

&lt;p&gt;Whelmer is open source under the MIT license.&lt;/p&gt;

&lt;p&gt;Build from source:&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/Sumama-Jameel/whelmer.git
&lt;span class="nb"&gt;cd &lt;/span&gt;whelmer
cargo build &lt;span class="nt"&gt;--release&lt;/span&gt;
./target/release/whelmer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install from crates.io:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Then open a browser with remote debugging enabled:&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="c"&gt;# Chrome / Chromium&lt;/span&gt;
google-chrome &lt;span class="nt"&gt;--remote-debugging-port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;9222

&lt;span class="c"&gt;# Firefox (BiDi)&lt;/span&gt;
firefox &lt;span class="nt"&gt;--remote-debugging-port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;9222

&lt;span class="c"&gt;# Brave&lt;/span&gt;
brave &lt;span class="nt"&gt;--remote-debugging-port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;9222
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Whelmer auto-detects the browser, protocol, and port. Just run it.&lt;/p&gt;




&lt;p&gt;GitHub link: &lt;a href="https://github.com/Sumama-Jameel/Whelmer" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/Whelmer&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Introducing: Validator. Know the value of what you are building. Deep validation for your idea - competitors, market size, audience, pivots, etc.</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 01 Sep 2026 18:26:35 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/introducing-validator-know-the-value-of-what-you-are-building-deep-validation-for-your-idea--629</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/introducing-validator-know-the-value-of-what-you-are-building-deep-validation-for-your-idea--629</guid>
      <description>&lt;p&gt;I built an open-source agent skill called Validator. It validates a product or project idea before you build it. It researches the market, finds every competitor, destroys your assumptions, and gives you a clear GO, CONDITIONAL GO, or NO GO verdict backed by sourced evidence.&lt;/p&gt;

&lt;p&gt;Here is exactly what it does, why I built it, and how it works.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Most people build things nobody wants.&lt;/p&gt;

&lt;p&gt;They get an idea. They get excited. They spend three weeks coding it. Then they show it to the world, and nobody cares. Not because the code was bad. Because the problem was already solved, or the audience was wrong, or the moat was zero.&lt;/p&gt;

&lt;p&gt;The real issue is that people skip validation. They validate with vibes. They say things like "I think people would want this" or "I could not find a competitor, so there must be none."&lt;/p&gt;

&lt;p&gt;That is not validation. That is wishful thinking.&lt;/p&gt;

&lt;p&gt;The other problem is that AI tools make it worse, not better. They can build your product faster, so you skip the thinking step entirely and go straight to shipping. You build the wrong thing in three hours instead of three weeks. The speed does not fix the problem. It makes the problem cheaper to repeat.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Validator Does
&lt;/h2&gt;

&lt;p&gt;Validator is an agent skill. You install it into your AI coding agent. Then you tell the agent:&lt;/p&gt;

&lt;p&gt;"I have an idea for X. Validate it."&lt;/p&gt;

&lt;p&gt;The agent then runs a 12-phase research process. It does not build anything. It does not write code. It researches.&lt;/p&gt;

&lt;p&gt;When it is done, you get a single markdown file with a verdict.&lt;/p&gt;

&lt;p&gt;The verdict is one of three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GO — build it. The evidence supports it.&lt;/li&gt;
&lt;li&gt;CONDITIONAL GO — build it only if specific conditions are met. Those conditions are listed. A falsification test is included.&lt;/li&gt;
&lt;li&gt;NO GO — do not build it. The evidence says it will fail.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no "it depends." There is no "maybe you could try." There is a decision.&lt;/p&gt;




&lt;h2&gt;
  
  
  The 12 Phases
&lt;/h2&gt;

&lt;p&gt;Here is what Validator does, step by step:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Problem validation — does this problem actually exist? Is it painful enough?&lt;/li&gt;
&lt;li&gt;Market research — how big is the market? Is it growing or shrinking?&lt;/li&gt;
&lt;li&gt;Every single competitor — not just the famous ones. Enterprise, mid-size, startup, open source, side project. All of them.&lt;/li&gt;
&lt;li&gt;Head-to-head feature comparison — what does each competitor have? What do they lack?&lt;/li&gt;
&lt;li&gt;Destroying your own assumptions — "Our X feature is unique" gets checked against the market. If it is not unique, the skill says so in writing.&lt;/li&gt;
&lt;li&gt;Gap analysis — where are the real openings? Are they worth pursuing?&lt;/li&gt;
&lt;li&gt;Moat evaluation — what stops someone from copying you in a week? Rated objectively.&lt;/li&gt;
&lt;li&gt;Outcome risk — what happens if you build it and nobody pays?&lt;/li&gt;
&lt;li&gt;Platform policy check — does your product depend on a platform API or ToS that could break or get you banned?&lt;/li&gt;
&lt;li&gt;Technical feasibility — can the core mechanic actually be implemented right now?&lt;/li&gt;
&lt;li&gt;Final decision — GO, CONDITIONAL GO, or NO GO.&lt;/li&gt;
&lt;li&gt;Pivot recommendations — if the idea fails, what adjacent thing might work?&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  The Rules That Make It Different
&lt;/h2&gt;

&lt;p&gt;Validator has strict rules that most idea validation tools do not enforce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One audience, forced.&lt;/strong&gt;&lt;br&gt;
"All businesses" is rejected. "Everyone" is rejected. "Small and medium companies" is rejected. Validator pushes until you pick ONE segment. Because if you build for five different buyers with five different budgets and five different pains, you solve nothing for anyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every competitor, not just the famous ones.&lt;/strong&gt;&lt;br&gt;
Most people check for three competitors and stop. Validator checks enterprise tools, startups, open source projects, side projects, and anything else that solves the same problem. If a competitor exists, it gets listed with funding, revenue, pricing, employees, business model, and launch year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every claim carries a source URL.&lt;/strong&gt;&lt;br&gt;
No "trust me." No vibes. Every fact in the report has a source link on the line below it. Unverified assumptions are forbidden. If the agent cannot find evidence, it says so.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data source priority.&lt;/strong&gt;&lt;br&gt;
When sources conflict, Validator uses a hierarchy: Government data wins over industry reports. Industry reports win over company filings. Company filings win over academic papers. Academic papers win over surveys. Surveys win over official docs. Official docs win over reviews. Reviews win over social media. Social media wins over blogs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Falsification test for every CONDITIONAL GO.&lt;/strong&gt;&lt;br&gt;
If the verdict is CONDITIONAL GO, the report must state a specific, observable condition that would flip it to NO GO. Example: "NO-GO if a funded competitor launches a $0 version within 6 months." This is a written exit gate. Not a vibe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evidence saturation, not endless browsing.&lt;/strong&gt;&lt;br&gt;
Validator knows when it is done. It stops searching when results become repetitive, after 3 consecutive empty searches, or when no new high-value evidence appears. It does not waste time browsing forever.&lt;/p&gt;


&lt;h2&gt;
  
  
  What the Output Looks Like
&lt;/h2&gt;

&lt;p&gt;The final report is a single markdown file called MAIN.md. It contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Market demand metrics with sources&lt;/li&gt;
&lt;li&gt;Competitor tiers (enterprise, mid-size, startup, open source)&lt;/li&gt;
&lt;li&gt;Problem-already-solved analysis&lt;/li&gt;
&lt;li&gt;Head-to-head feature table&lt;/li&gt;
&lt;li&gt;Moat table with objective ratings&lt;/li&gt;
&lt;li&gt;Verdict (GO / CONDITIONAL GO / NO GO)&lt;/li&gt;
&lt;li&gt;Build conditions (if CONDITIONAL GO)&lt;/li&gt;
&lt;li&gt;Falsification test&lt;/li&gt;
&lt;li&gt;Pivot recommendations&lt;/li&gt;
&lt;li&gt;Full source list&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  The Honest Catch
&lt;/h2&gt;

&lt;p&gt;Validator is not a magic oracle. It is a research process. It forces you to look at evidence instead of feelings. But the quality of the output depends on the quality of the AI agent running it and the search tools available to that agent.&lt;/p&gt;

&lt;p&gt;If your agent has bad web search, the research will be shallow. If your agent hallucinates sources, the report will be unreliable. Validator enforces the process, but it cannot guarantee the agent's search results are perfect.&lt;/p&gt;

&lt;p&gt;Also, Validator will kill your idea if the evidence says it should die. That is the point. But if you are emotionally attached to your idea, you will hate the output. That is also the point.&lt;/p&gt;


&lt;h2&gt;
  
  
  How to Install It
&lt;/h2&gt;

&lt;p&gt;Validator is an Agent Skills-format skill. It is a folder with a SKILL.md file. It works in any tool that supports the Agent Skills format.&lt;/p&gt;

&lt;p&gt;Clone it:&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/Sumama-Jameel/validator.git
&lt;span class="nb"&gt;cd &lt;/span&gt;validator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy it into your agent's skills directory:&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;cp&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; SKILL.md examples ~/.claude/skills/validator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install with the skills CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add Sumama-Jameel/validator &lt;span class="nt"&gt;-g&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install as a Claude Code plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin marketplace add Sumama-Jameel/validator
/plugin &lt;span class="nb"&gt;install &lt;/span&gt;validator@sumama-validator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then just say:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"I have an idea for X. Validate it."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The skill triggers automatically when you propose a new project or ask whether an idea is worth building.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who It Is For
&lt;/h2&gt;

&lt;p&gt;Validator is for builders who want to stop wasting time on dead ideas.&lt;/p&gt;

&lt;p&gt;It is for solo developers, startup founders, and engineers who build fast but need to check if the direction is right before they commit weeks of work.&lt;/p&gt;

&lt;p&gt;It is not for people who want validation in the emotional sense. It will not tell you your idea is nice. It will tell you if it should exist.&lt;/p&gt;




&lt;p&gt;It is open source under the MIT license.&lt;/p&gt;

&lt;p&gt;GitHub link: &lt;a href="https://github.com/Sumama-Jameel/Validator" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/Validator&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>buildinpublic</category>
      <category>opensource</category>
      <category>startup</category>
    </item>
    <item>
      <title>Introducing: Grasper. Open-source book reading companion for technical and scientific books. No rushing, no summaries.</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 01 Sep 2026 18:24:02 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/introducing-grasper-open-source-book-reading-companion-for-technical-and-scientific-books-no-4pgj</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/introducing-grasper-open-source-book-reading-companion-for-technical-and-scientific-books-no-4pgj</guid>
      <description>&lt;p&gt;I built an open-source reading companion called Grasper. It helps you read hard science books one page at a time, understand each page properly, and only move forward when you actually get what you just read.&lt;/p&gt;

&lt;p&gt;Here is what it is, why I built it, how it works, and what it does not do.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;People read hard books about physics, engineering, math, and computer science. They read a page, think they understand it, then move on. A day later, most of it is gone.&lt;/p&gt;

&lt;p&gt;This is not a discipline problem. It is how memory works.&lt;/p&gt;

&lt;p&gt;The forgetting curve is a well-known result. If you do not actively recall something, most of it fades very fast. On top of that, many people struggle to finish self-paced learning. More than 80% of people abandon non-mandatory self-paced courses. One of the main reasons is lack of structured support.&lt;/p&gt;

&lt;p&gt;There is also a proven fix: testing yourself. Research shows that quizzing improves learning outcomes. It is not just about reading more. It is about checking understanding while you read.&lt;/p&gt;

&lt;p&gt;Most AI reading tools do the opposite. They give you summaries. They make reading faster, but they do not make understanding deeper.&lt;/p&gt;

&lt;p&gt;Grasper is different. It slows you down on purpose. It makes you understand one page before it lets you move to the next one.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Grasper Does
&lt;/h2&gt;

&lt;p&gt;Grasper is a reading tool for hard science books.&lt;/p&gt;

&lt;p&gt;You open a book in PDF, EPUB, or plain text. Grasper shows you one page at a time. You read that page. Then you can ask Grasper to explain it.&lt;/p&gt;

&lt;p&gt;When you click “Explain This Page”, Grasper creates a plain-language teaching document for that page.&lt;/p&gt;

&lt;p&gt;It includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the page is about&lt;/li&gt;
&lt;li&gt;Why it matters&lt;/li&gt;
&lt;li&gt;A worked example&lt;/li&gt;
&lt;li&gt;How it works&lt;/li&gt;
&lt;li&gt;Three common wrong ideas&lt;/li&gt;
&lt;li&gt;A short study card&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It does not give you a lazy summary. It teaches the page from first principles.&lt;/p&gt;

&lt;p&gt;Then Grasper asks you five quick questions. These questions are tied to the explanation. You need to answer 4 out of 5 correctly on the first try before the next page unlocks.&lt;/p&gt;

&lt;p&gt;If you get one wrong, it tells you which part you need to re-read.&lt;/p&gt;

&lt;p&gt;This is the core of Grasper: read one page, understand it, prove that you understood it, then move on.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;The flow is simple.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open a book.&lt;/li&gt;
&lt;li&gt;Grasper parses it into pages.&lt;/li&gt;
&lt;li&gt;You read one page.&lt;/li&gt;
&lt;li&gt;You ask Grasper to explain that page.&lt;/li&gt;
&lt;li&gt;Grasper sends that page to the AI provider you choose.&lt;/li&gt;
&lt;li&gt;The AI returns a first-principles explanation and five questions.&lt;/li&gt;
&lt;li&gt;You answer the questions.&lt;/li&gt;
&lt;li&gt;If you pass, the next page unlocks.&lt;/li&gt;
&lt;li&gt;If you fail, you re-read the weak part and try again.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your progress is saved locally. If you close the app and open it later, you are exactly where you stopped.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real Math Support
&lt;/h2&gt;

&lt;p&gt;Hard science books have equations. A lot of reading tools treat equations like random text. That does not work for math, physics, or engineering.&lt;/p&gt;

&lt;p&gt;Grasper renders equations properly using KaTeX.&lt;/p&gt;

&lt;p&gt;It also has a button that explains each symbol in words. So if you see an equation and you do not know what a symbol means, you can check it directly.&lt;/p&gt;

&lt;p&gt;This matters because equations are not decoration in these books. They are the actual content.&lt;/p&gt;




&lt;h2&gt;
  
  
  Diagram Support
&lt;/h2&gt;

&lt;p&gt;Science books also use figures, graphs, and diagrams. Sometimes the figure is more important than the paragraph next to it.&lt;/p&gt;

&lt;p&gt;Grasper can show the figure and use a vision model to explain what the picture means.&lt;/p&gt;

&lt;p&gt;So you are not just looking at the diagram. You are learning what it is showing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Understand Chat
&lt;/h2&gt;

&lt;p&gt;Each page can have its own chat thread.&lt;/p&gt;

&lt;p&gt;This chat is seeded with the page explanation. It follows the same teaching rules. You can ask follow-up questions about that page only.&lt;/p&gt;

&lt;p&gt;This is useful when the explanation helps, but you still have one small confusion left. Instead of leaving the page with a gap in your understanding, you can clear it right there.&lt;/p&gt;

&lt;p&gt;The chat survives restarts. It is saved locally.&lt;/p&gt;




&lt;h2&gt;
  
  
  Grasp Ledger
&lt;/h2&gt;

&lt;p&gt;Grasper keeps a running note of concepts you have understood.&lt;/p&gt;

&lt;p&gt;This is called the Grasp Ledger.&lt;/p&gt;

&lt;p&gt;It tracks what you have learned so the tool can avoid repeating too much context. It also automatically trims itself so it does not grow too large.&lt;/p&gt;

&lt;p&gt;The point is not just to read pages. The point is to build knowledge that stays with you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Privacy Model
&lt;/h2&gt;

&lt;p&gt;Your book stays on your machine.&lt;/p&gt;

&lt;p&gt;Grasper does not upload your whole book to a server. It only sends the single page you are asking the AI to explain.&lt;/p&gt;

&lt;p&gt;Your API key is also stored on your machine, not on some remote server.&lt;/p&gt;

&lt;p&gt;You can use any OpenAI-compatible provider. So you choose the AI backend. You choose the key. You control what gets sent.&lt;/p&gt;

&lt;p&gt;This matters for people reading personal textbooks, research PDFs, or copyrighted material they already own.&lt;/p&gt;




&lt;h2&gt;
  
  
  Under the Hood
&lt;/h2&gt;

&lt;p&gt;Grasper is built mainly with Rust, Svelte, and Python.&lt;/p&gt;

&lt;p&gt;The desktop app uses Tauri. The frontend uses Svelte. The local database uses SQLite.&lt;/p&gt;

&lt;p&gt;The project is split into several parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;grasper-core&lt;/code&gt;: shared types, equation extraction, parser traits&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grasper-parser&lt;/code&gt;: PDF, EPUB, and TXT parsing&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grasper-ai&lt;/code&gt;: OpenAI-compatible AI client, prompts, settings&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grasper-memory&lt;/code&gt;: SQLite storage for progress, chat, and grasp ledger&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grasper-cli&lt;/code&gt;: terminal tool&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grasper-app&lt;/code&gt;: the desktop app built with Tauri and Svelte&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;scripts&lt;/code&gt;: Python-based PDF pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The CLI lets you test each part from the terminal.&lt;/p&gt;

&lt;p&gt;Commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;grasper parse&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grasper explain&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grasper equations&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grasper diagrams&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;grasper chat&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easier to debug parsing, explanation, math extraction, diagram explanation, and chat without opening the full app every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Grasper Is Not
&lt;/h2&gt;

&lt;p&gt;Grasper is not a speed-reading tool.&lt;/p&gt;

&lt;p&gt;It is not a “summarize this book in five minutes” tool.&lt;/p&gt;

&lt;p&gt;It is not a tool that gives you the illusion of learning.&lt;/p&gt;

&lt;p&gt;If you want to skim a book, Grasper is not for you.&lt;/p&gt;

&lt;p&gt;Grasper is for people who want to actually understand hard material. It is slower than normal reading. That is intentional. The slowness is the point.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who It Is For
&lt;/h2&gt;

&lt;p&gt;Grasper is for people reading:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Physics&lt;/li&gt;
&lt;li&gt;Engineering&lt;/li&gt;
&lt;li&gt;Math&lt;/li&gt;
&lt;li&gt;Computer science&lt;/li&gt;
&lt;li&gt;Other hard technical books&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is for self-learners, students, and engineers who want a private reading companion that forces real understanding.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Honest Catch
&lt;/h2&gt;

&lt;p&gt;Grasper depends on the AI model you choose. A better model gives better explanations. A weaker model gives weaker explanations.&lt;/p&gt;

&lt;p&gt;Also, hard books are often messy. PDFs can have bad layouts, scanned pages, strange equations, or unclear figures. Parsing them perfectly is not always easy.&lt;/p&gt;

&lt;p&gt;Grasper is also intentionally strict. If you do not pass the comprehension gate, you do not move forward. Some people will like this. Some people will hate it.&lt;/p&gt;

&lt;p&gt;That is by design.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Point
&lt;/h2&gt;

&lt;p&gt;Most AI tools make reading easier. Grasper makes learning stronger.&lt;/p&gt;

&lt;p&gt;It keeps your book local. It explains one page at a time. It checks your understanding. It saves your progress. It supports real math, diagrams, and per-page chat.&lt;/p&gt;

&lt;p&gt;It is open source.&lt;/p&gt;

&lt;p&gt;GitHub link: &lt;a href="https://github.com/Sumama-Jameel/grasper" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/grasper&lt;/a&gt;&lt;/p&gt;

</description>
      <category>books</category>
      <category>learning</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Introducing: Mirage. Get free API for Qwen, Deepseek, ChatGPT, Gemini and other models. Without costing a cent or a heavy GPU.</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 01 Sep 2026 18:17:37 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/introducing-mirage-get-free-api-for-qwen-deepseek-chatgpt-gemini-and-other-models-without-37lb</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/introducing-mirage-get-free-api-for-qwen-deepseek-chatgpt-gemini-and-other-models-without-37lb</guid>
      <description>&lt;p&gt;Here is exactly why I built it, how it works under the hood, and the reality of using it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;&lt;br&gt;
LLM APIs are expensive, and they go down a lot. OpenAI logged over 160 incidents in 9 months. When a critical AI dependency goes down, engineering teams just sit there. On top of that, every existing AI gateway on the market (like LiteLLM or Portkey) makes the same assumption: you have API keys and you are willing to pay per token. They just route your paid requests through another paid layer. &lt;/p&gt;

&lt;p&gt;I did not want to pay per token, and I did not want to rely on their official API uptime. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Mirage Works&lt;/strong&gt;&lt;br&gt;
Mirage bypasses the paid API layer entirely. It uses the exact same internal web APIs that power the chat interfaces you already use in your browser. &lt;/p&gt;

&lt;p&gt;You just import your existing browser sessions. Mirage reads your cookies and localStorage from Chrome, Firefox, or Edge. It authenticates as you, and routes your code requests through those free internal endpoints. There is no middleman, no per-token billing, and no API key management. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Under the Hood&lt;/strong&gt;&lt;br&gt;
To make this work without getting blocked by anti-bot systems, Mirage has to look exactly like a real human using a real browser. &lt;/p&gt;

&lt;p&gt;I wrote it in Rust. It uses a custom headless browser engine called Obscura. Obscura runs real JavaScript through V8, maintains a real DOM tree, and speaks the Chrome DevTools Protocol. More importantly, it presents real TLS and HTTP fingerprints so the providers think it is just a normal web browser. It is also about 12x faster and uses way less memory than standard headless Chrome.&lt;/p&gt;

&lt;p&gt;Mirage keeps a pool of 10 warmed browser contexts in the background, each on its own OS thread. It has built-in circuit breakers, rate limiting, and exponential backoff so it does not spam the providers and get your account flagged. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What You Get&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One local endpoint (runs on &lt;code&gt;127.0.0.1:3000&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;75 models across 6 providers working right now (ChatGPT, DeepSeek, Gemini, Qwen, Mistral, Meta AI).&lt;/li&gt;
&lt;li&gt;A drop-in replacement for any OpenAI client. It works natively with LangChain, LlamaIndex, and OpenWebUI.&lt;/li&gt;
&lt;li&gt;Streaming, tool calling (via a custom Mirage Tool Protocol), web search, and file uploads.&lt;/li&gt;
&lt;li&gt;A single binary. No Docker, no Python, no Node.js required to run it. You just compile it and run it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Honest Catch&lt;/strong&gt;&lt;br&gt;
I need to be completely transparent about how this works. Because Mirage relies on internal web APIs, it is a cat-and-mouse game. The providers are massive companies with huge engineering teams. If they change their web UI or their internal wire format, the adapter will break until it is fixed. &lt;/p&gt;

&lt;p&gt;This is not a "set it and forget it" tool. This is why I open-sourced it. I need a community of developers who can capture the new network formats when they change and submit pull requests. If you use Mirage, you are joining that maintenance loop. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to run it&lt;/strong&gt;&lt;br&gt;
It is fully open source under the Apache 2.0 license. &lt;/p&gt;

&lt;p&gt;Clone the repo, build it with &lt;code&gt;cargo build --release&lt;/code&gt;, and run the binary. Point your OpenAI client to &lt;code&gt;http://127.0.0.1:3000/v1&lt;/code&gt; and start making requests. &lt;/p&gt;

&lt;p&gt;If you are building with AI and are tired of API costs and rate limits, give it a look. &lt;/p&gt;

&lt;p&gt;GitHub link: &lt;a href="https://github.com/Sumama-Jameel/Mirage" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/Mirage&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Nexus Engine: One command to Set Up a Complete production Environment</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 21 Jul 2026 06:50:11 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/nexus-engine-one-command-to-set-up-a-complete-production-environment-1m36</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/nexus-engine-one-command-to-set-up-a-complete-production-environment-1m36</guid>
      <description>&lt;p&gt;I’m 14 and I got tired of spending hours (sometimes days) setting up new machines. Different distros, different package managers, fragile shell scripts, no rollback.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Nexus&lt;/strong&gt; — a cross-platform environment provisioning engine. One command turns a fresh OS into a fully productive development machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;Setting up a dev machine is painful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hundreds of Linux distros with different package managers (apt, pacman, dnf, apk).&lt;/li&gt;
&lt;li&gt;Shell scripts break easily with no rollback or state management.&lt;/li&gt;
&lt;li&gt;Tools like Ansible are overkill for laptops. Docker doesn’t configure your host. Dotfile managers don’t install dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: Developers lose dozens of hours per year on setup issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Nexus Does
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;One static Go binary.&lt;/strong&gt; Detects your OS, chooses the right package manager, applies declarative YAML profiles, and handles everything with security gates and rollback.&lt;/p&gt;

&lt;p&gt;No scripts. No manual steps. Works on Linux and Windows (with WSL2 support).&lt;/p&gt;

&lt;h3&gt;
  
  
  Standout Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cross-distro support&lt;/strong&gt; — apt, pacman, dnf, apk behind one interface.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;7-step orchestrator with rollback&lt;/strong&gt; — PreFlight → Refresh → Execute → Verify → Audit. Failed foundation packages trigger full rollback.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security gate (SanitizeAndExecute)&lt;/strong&gt; — Allowlist, metacharacter rejection, timeouts. No raw shell execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 built-in profiles&lt;/strong&gt; — Go dev, Rust dev, Frontend, Data Science, Ethical Hacking, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WSL2 setup in ~60 seconds&lt;/strong&gt; on Windows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dotfiles + age-encrypted vault + Distrobox containers&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community profile registry&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Optional Tauri GUI dashboard.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;

&lt;p&gt;Nexus is organized in bounded contexts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;BRAIN&lt;/strong&gt; — Cobra CLI + core engine (Go)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNA&lt;/strong&gt; — YAML profiles with JSON Schema + struct validation + SHA256 integrity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BRIDGE&lt;/strong&gt; — WSL2 handling (cross-compiled)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CONTAINER&lt;/strong&gt; — Distrobox management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VAULT&lt;/strong&gt; — age encryption&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REGISTRY&lt;/strong&gt; — Community profiles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every command goes through a strict security gate. State is crash-safe with atomic writes and append-only logs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/Sumama-Jameel/nexus-engine/cmd/nexus@latest

&lt;span class="c"&gt;# Initialize&lt;/span&gt;
nexus init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus wsl setup    &lt;span class="c"&gt;# Full WSL2 setup&lt;/span&gt;
nexus wsl enter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Competitor Comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Static Binary&lt;/th&gt;
&lt;th&gt;Cross-Distro&lt;/th&gt;
&lt;th&gt;Security Gate&lt;/th&gt;
&lt;th&gt;Rollback&lt;/th&gt;
&lt;th&gt;WSL2&lt;/th&gt;
&lt;th&gt;One-Command Init&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Nexus&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ansible&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nix&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;chezmoi&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nexus combines the best ideas into one tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I Built It
&lt;/h3&gt;

&lt;p&gt;The Linux desktop (and Windows-to-Linux migration) should be accessible to everyone — not just people who’ve memorized package manager flags. Nexus makes reproducible, secure dev environments simple.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get Involved
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Add or improve profiles&lt;/li&gt;
&lt;li&gt;Test on your distro and open issues&lt;/li&gt;
&lt;li&gt;Contribute to WSL2 or container features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Sumama-Jameel/nexus-engine" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/nexus-engine&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What’s the most painful part of setting up a new dev machine for you? Have you tried tools like Nix or Ansible? I’d love your feedback.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>linux</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
    <item>
      <title>SubZero: Privacy-First Subscription Detector (Open Source Alternative to Rocket Money)</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 21 Jul 2026 06:47:38 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/subzero-privacy-first-subscription-detector-open-source-alternative-to-rocket-money-31dd</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/subzero-privacy-first-subscription-detector-open-source-alternative-to-rocket-money-31dd</guid>
      <description>&lt;p&gt;I’m 14 and I built an open-source tool that finds every subscription in your bank statement — &lt;strong&gt;without Plaid, without storing your data, and without selling your financial history&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SubZero&lt;/strong&gt; is a Next.js web app where you upload a PDF or CSV bank statement. It scans everything in memory and returns a detailed report of recurring charges, price hikes, and cancellation options.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;People waste hundreds of dollars every year on forgotten subscriptions. Commercial tools like Rocket Money and Trim solve this by connecting directly to your bank via Plaid — which means giving a third party your login credentials and full financial data.&lt;/p&gt;

&lt;p&gt;That’s a privacy nightmare.&lt;/p&gt;

&lt;h3&gt;
  
  
  SubZero’s Approach
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Upload → Scan in memory → Delete.&lt;/strong&gt; No accounts. No persistent storage. Your data never leaves the server except in the response.&lt;/p&gt;

&lt;p&gt;It uses &lt;strong&gt;8 detection methods&lt;/strong&gt; running in parallel for high accuracy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keyword + fuzzy matching (Fuse.js)&lt;/li&gt;
&lt;li&gt;Time-delta and amount clustering&lt;/li&gt;
&lt;li&gt;500+ vendor database (including local services like JazzCash, Daraz, Foodpanda)&lt;/li&gt;
&lt;li&gt;Trigram index + Double Metaphone phonetic matching&lt;/li&gt;
&lt;li&gt;Business/SaaS usage-based detection&lt;/li&gt;
&lt;li&gt;Cross-report comparison for price hikes and cancellations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Privacy by design&lt;/strong&gt; — Zero data persistence. PII scrubbing (SSNs, account numbers, etc.).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-format support&lt;/strong&gt; — CSV + PDF (using mupdf).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart heuristics&lt;/strong&gt; — Detects truncated vendor names, variable SaaS charges, and single-occurrence subscriptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional LLM&lt;/strong&gt; — Only anonymized hints sent. Cancel URLs restricted to safe whitelist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5-layer upload security&lt;/strong&gt; — Validation, sanitization, magic bytes, size limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-upload mode&lt;/strong&gt; — Compare statements across months automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-click Vercel deploy&lt;/strong&gt; — No database required.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture Deep Dive
&lt;/h3&gt;

&lt;p&gt;The core is a 10-stage pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rate limiting + Upload validation (5 layers)&lt;/li&gt;
&lt;li&gt;Parsing (CSV via Papaparse, PDF via mupdf)&lt;/li&gt;
&lt;li&gt;PII scrubbing + bank detection&lt;/li&gt;
&lt;li&gt;Heuristics Engine (8 parallel methods)&lt;/li&gt;
&lt;li&gt;Confidence scoring (0-100 based on 8 signals)&lt;/li&gt;
&lt;li&gt;Merge + deduplication&lt;/li&gt;
&lt;li&gt;Enrichment (actions, health score A-F)&lt;/li&gt;
&lt;li&gt;Optional LLM normalization&lt;/li&gt;
&lt;li&gt;Report generation&lt;/li&gt;
&lt;li&gt;Response (JSON + optional PDF export)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The entire engine lives in &lt;code&gt;lib/audit/&lt;/code&gt;. It’s designed to be easy to extend with new heuristics or vendor patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security Model
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Per-IP rate limiting&lt;/li&gt;
&lt;li&gt;Zod schema validation at every boundary&lt;/li&gt;
&lt;li&gt;Strict PII regex scrubbing&lt;/li&gt;
&lt;li&gt;CSP, HSTS, and other security headers&lt;/li&gt;
&lt;li&gt;Body size limits (max 11MB)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Competitor Comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Bank Login&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;th&gt;Privacy&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SubZero&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Zero persistence&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rocket Money&lt;/td&gt;
&lt;td&gt;Yes (Plaid)&lt;/td&gt;
&lt;td&gt;$6–12/month&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Full data shared&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Trim&lt;/td&gt;
&lt;td&gt;Yes (Plaid)&lt;/td&gt;
&lt;td&gt;% of savings&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Full data shared&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SubFind&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;One-time&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Closed source&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;SubZero gives you comparable detection power with actual privacy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js&lt;/strong&gt; + TypeScript + Tailwind&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zod&lt;/strong&gt; for validation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fuse.js&lt;/strong&gt;, Trigram, Double Metaphone for matching&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mupdf&lt;/strong&gt; for PDF extraction&lt;/li&gt;
&lt;li&gt;Deployable on Vercel with zero config&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Get Involved
&lt;/h3&gt;

&lt;p&gt;This project needs help expanding the vendor database (especially for non-US banks) and improving detection accuracy.&lt;/p&gt;

&lt;p&gt;Try it here: Upload a statement and see what it finds.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Sumama-Jameel/subzero" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/subzero&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What’s the most annoying subscription tracking problem you’ve faced? Or if you’ve tried it, what did it miss or get right?&lt;br&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%2Fiqbmj0gte8rehae5x87q.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%2Fiqbmj0gte8rehae5x87q.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;br&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%2F1tpjos71s818co2f47h5.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%2F1tpjos71s818co2f47h5.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;br&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%2Fth1hhdarss7f02u2sbw3.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%2Fth1hhdarss7f02u2sbw3.png" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Scam Intelligence Network: One API for Threat Intelligence (URL, Email, Phone &amp; Crypto)</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 21 Jul 2026 06:44:24 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/scam-intelligence-network-one-api-for-threat-intelligence-url-email-phone-crypto-5f8b</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/scam-intelligence-network-one-api-for-threat-intelligence-url-email-phone-crypto-5f8b</guid>
      <description>&lt;p&gt;I’m a 14-year-old builder. My first big project using AI was trying to commercialize a threat intelligence tool. I failed to sell it. So I open-sourced it instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scam Intelligence Network (SIN)&lt;/strong&gt; is an open-source “OpenRouter for threat intelligence.” One unified API to check suspicious URLs, emails, phone numbers, and crypto addresses against 1.43 million local records + 10+ external sources + optional LLM analysis.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;Cybercrime is exploding, but checking threats is fragmented and painful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need 10–12 different APIs (VirusTotal, AbuseIPDB, HIBP, EmailRep, IPQualityScore, etc.).&lt;/li&gt;
&lt;li&gt;Each has different keys, rate limits, response formats, and pricing.&lt;/li&gt;
&lt;li&gt;Most solutions are either expensive, closed-source, or lack coverage for all four vectors (URL + Email + Phone + Crypto).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is especially hard for indie developers, small security teams, and self-hosted setups.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Scam Intelligence Network Solves
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;One POST request. One consistent response format.&lt;/strong&gt; Parallel checks. Smart fallback. Local-first design.&lt;/p&gt;

&lt;p&gt;Key Highlights:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1.43 million local threat records&lt;/strong&gt; — Instant offline detection (under 10ms). Skips external calls on matches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10+ external sources&lt;/strong&gt; checked in parallel using &lt;code&gt;asyncio.gather()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unified verdict engine&lt;/strong&gt; with weighted scoring + rule-based overrides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Circuit breakers&lt;/strong&gt; and caching for reliability.&lt;/li&gt;
&lt;li&gt;Full &lt;strong&gt;Docker&lt;/strong&gt; deployment + CLI tool.&lt;/li&gt;
&lt;li&gt;Privacy-first and self-hostable.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Core Architecture
&lt;/h3&gt;

&lt;p&gt;The system follows a clean vertical-slice + layered design:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;REST/CLI Layer → Analyzer Layer → Service Layer → Infrastructure Layer → Local Threat Data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Analyzer Layer&lt;/strong&gt; — One folder per type (URL, Email, Phone, Crypto). Easy to extend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Layer&lt;/strong&gt; — Parallel calls to VirusTotal, AbuseIPDB, URLhaus, HIBP, IPQS, Groq LLM, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure&lt;/strong&gt; — SQLite caching (with HMAC integrity), circuit breakers, rate limiting, API key auth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verdict Engine&lt;/strong&gt; — Combines signals into HIGH/MEDIUM/LOW/CRITICAL with confidence scores.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Local blacklist check happens first — massive speed win and cost saver.&lt;/p&gt;

&lt;h3&gt;
  
  
  Main Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Four analyzers behind a single &lt;code&gt;/analyze&lt;/code&gt; endpoint.&lt;/li&gt;
&lt;li&gt;Local + external + optional LLM reasoning (anonymized data only).&lt;/li&gt;
&lt;li&gt;Quality gates and tiered confidence scoring.&lt;/li&gt;
&lt;li&gt;Prometheus metrics, security headers, correlation IDs.&lt;/li&gt;
&lt;li&gt;Analytics database for tracking queries.&lt;/li&gt;
&lt;li&gt;Ready for monetization (tiered plans) but fully open source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Docker (recommended):&lt;/strong&gt;&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/Sumama-Jameel/scam-intelligence-network.git
&lt;span class="nb"&gt;cd &lt;/span&gt;scam-intelligence-network
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
docker-compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test it:&lt;br&gt;
&lt;/p&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/analyze &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: your-key"&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;'{"input": "https://suspicious-site.com", "input_type": "URL"}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or use the CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python main.py &lt;span class="s2"&gt;"suspicious@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why I Open Sourced It
&lt;/h3&gt;

&lt;p&gt;I tried selling it and failed. Couldn’t find customers or explain the value clearly. But the code is solid and catches real threats. If even one person uses it to block a phishing attempt, it was worth releasing.&lt;/p&gt;

&lt;p&gt;Threat intelligence shouldn’t be locked behind enterprise budgets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Competitor Comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;th&gt;Email&lt;/th&gt;
&lt;th&gt;Phone&lt;/th&gt;
&lt;th&gt;Crypto&lt;/th&gt;
&lt;th&gt;Local DB&lt;/th&gt;
&lt;th&gt;Open Source&lt;/th&gt;
&lt;th&gt;Self-Hosted&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SIN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;1.43M&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IPQualityScore&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AlienVault OTX&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No other open tool covers all four vectors with this level of local + parallel + resilient design.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack &amp;amp; Design Choices
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI&lt;/strong&gt; + Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite&lt;/strong&gt; for cache + analytics + auth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asyncio&lt;/strong&gt; for parallel checks&lt;/li&gt;
&lt;li&gt;Vertical slice architecture for easy extension&lt;/li&gt;
&lt;li&gt;Heavy focus on resilience (circuit breakers, caching, quality gates)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Get Involved
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Run it locally or deploy on a cheap VPS.&lt;/li&gt;
&lt;li&gt;Add new data sources or blocklists.&lt;/li&gt;
&lt;li&gt;Share feedback or issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Sumama-Jameel/scam-intelligence-network" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/scam-intelligence-network&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What’s the biggest pain point you face with threat intelligence today — fragmented APIs, cost, or lack of coverage for certain vectors? Let me know in the comments.&lt;/p&gt;

</description>
      <category>api</category>
      <category>opensource</category>
      <category>security</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Whelmer: Full-Visibility Browser DevTools for AI Agents</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Tue, 21 Jul 2026 06:40:30 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/whelmer-full-visibility-browser-devtools-for-ai-agents-22i5</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/whelmer-full-visibility-browser-devtools-for-ai-agents-22i5</guid>
      <description>&lt;p&gt;I’m a 14-year-old builder from Pakistan. After struggling with existing browser automation tools while building AI agents, I decided to create something better.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Whelmer&lt;/em&gt; is a Rust-based CLI tool that gives you complete, unfiltered access to everything a browser emits — across multiple protocols and browsers.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem with Existing Tools
&lt;/h3&gt;

&lt;p&gt;When you connect to a browser via CDP (Chrome DevTools Protocol), the browser fires hundreds of event types across 53 domains: Network, DOM, Console, Storage, Fetch, Security, and more.&lt;/p&gt;

&lt;p&gt;Most agent frameworks and tools do one (or more) of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filter events aggressively&lt;/li&gt;
&lt;li&gt;Hide protocol differences behind high-level abstractions&lt;/li&gt;
&lt;li&gt;Only support Chrome CDP&lt;/li&gt;
&lt;li&gt;Drop events they consider “unimportant”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates blind spots. You miss critical signals — like how an SPA handles auth tokens in localStorage, or subtle network patterns that reveal rate limiting logic.&lt;/p&gt;

&lt;p&gt;Multi-browser support makes it worse. Firefox uses BiDi or its own FDP. Safari has its own protocol. Most tools pretend these differences don’t exist.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Whelmer Does Differently
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Whelmer&lt;/strong&gt; shows &lt;strong&gt;everything&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Native support for &lt;strong&gt;CDP, BiDi, FDP&lt;/strong&gt;, and Foxbridge (CDP-to-Firefox proxy)&lt;/li&gt;
&lt;li&gt;Works out of the box with Chrome, Brave, Edge, Opera, and Firefox&lt;/li&gt;
&lt;li&gt;A central &lt;strong&gt;EventBus&lt;/strong&gt; with a 10,000-event ring buffer — nothing is dropped&lt;/li&gt;
&lt;li&gt;Raw NDJSON streaming for easy piping into other tools/agents&lt;/li&gt;
&lt;li&gt;Runtime domain management (enable/disable any of the 53 CDP domains)&lt;/li&gt;
&lt;li&gt;Structured JSON output for all commands&lt;/li&gt;
&lt;li&gt;Pure Rust static binary (~7MB) — no Node.js, no Python, no heavy dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-protocol support&lt;/strong&gt; — One binary, consistent event model across browsers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raw event firehose&lt;/strong&gt; — Every WebSocket message is available. Use &lt;code&gt;events --json&lt;/code&gt; and pipe to &lt;code&gt;jq&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History replay&lt;/strong&gt; — Access the last 10k events with &lt;code&gt;events --history N&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Powerful commands&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dom&lt;/code&gt;, &lt;code&gt;eval&lt;/code&gt;, &lt;code&gt;cookies&lt;/code&gt;, &lt;code&gt;storage&lt;/code&gt;, &lt;code&gt;network&lt;/code&gt;, &lt;code&gt;screenshot&lt;/code&gt;, &lt;code&gt;perf&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;All support &lt;code&gt;--json&lt;/code&gt; output.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pluggable architecture&lt;/strong&gt; — Easy to extend with new protocols or handlers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Architecture Overview
&lt;/h3&gt;

&lt;p&gt;Whelmer uses a clean pipeline:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;WsConnection&lt;/strong&gt; — Manages persistent WebSocket connection with command/response routing and timeouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EventBus&lt;/strong&gt; — Broadcast channel + ring buffer. Every event reaches every consumer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display Consumer&lt;/strong&gt; — Formats known events for terminal output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Consumer&lt;/strong&gt; — For raw streaming and history queries.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This decoupling means the tool never silently drops data. You decide what matters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I Built It
&lt;/h3&gt;

&lt;p&gt;Whelmer was created for a specific use case: reverse-engineering the web interfaces of AI model providers. When OpenAI, Google, xAI, or others update their UIs or internal APIs, agent integrations break. Whelmer lets you see exactly what changed in real time.&lt;/p&gt;

&lt;p&gt;It is also the foundation for &lt;strong&gt;RynoVider&lt;/strong&gt; — my upcoming OpenAI-compatible API wrapper that routes through actual model web UIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Competitor Comparison
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Protocols&lt;/th&gt;
&lt;th&gt;Raw Events&lt;/th&gt;
&lt;th&gt;History Buffer&lt;/th&gt;
&lt;th&gt;Domain Toggle&lt;/th&gt;
&lt;th&gt;Runtime&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Whelmer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CDP + BiDi + FDP&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;10k events&lt;/td&gt;
&lt;td&gt;Yes (53)&lt;/td&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;agent-browser (Vercel)&lt;/td&gt;
&lt;td&gt;CDP only&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Rust+Node&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Puppeteer&lt;/td&gt;
&lt;td&gt;CDP only&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Node&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Quick Start
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
cargo &lt;span class="nb"&gt;install &lt;/span&gt;whelmer

&lt;span class="c"&gt;# Or from source&lt;/span&gt;
git clone https://github.com/Sumama-Jameel/Whelmer
&lt;span class="nb"&gt;cd &lt;/span&gt;Whelmer
cargo build &lt;span class="nt"&gt;--release&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Launch your browser with remote debugging:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;google-chrome &lt;span class="nt"&gt;--remote-debugging-port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;9222
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;whelmer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Future Plans
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Safari WebKit support&lt;/li&gt;
&lt;li&gt;Better integration as a library&lt;/li&gt;
&lt;li&gt;Enhanced agent-friendly features for RynoVider&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Whelmer&lt;/strong&gt; is open source under MIT. Feedback, issues, and contributions are welcome.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://github.com/Sumama-Jameel/Whelmer" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What’s the most painful hidden browser behavior you’ve encountered while building agents? I’d love to hear your experiences in the comments.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>automation</category>
      <category>rust</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I Spent a Year Setting Up New Machines. So I Built a Tool That Does It in One Command.</title>
      <dc:creator>Sumama-Jameel</dc:creator>
      <pubDate>Thu, 11 Jun 2026 08:03:22 +0000</pubDate>
      <link>https://dev.to/sumama_jamil_173056ab0be5/i-spent-a-year-setting-up-new-machines-so-i-built-a-tool-that-does-it-in-one-command-67j</link>
      <guid>https://dev.to/sumama_jamil_173056ab0be5/i-spent-a-year-setting-up-new-machines-so-i-built-a-tool-that-does-it-in-one-command-67j</guid>
      <description>&lt;p&gt;Every time I get a new laptop, the same thing happens. Day one. Fresh install. Nothing works the way I want it. No git. No Docker. No Node. No Vim config. Nothing. So I spend the next three hours Googling. "How to install Docker on Ubuntu." "How to set up WSL2 on Windows." "Why is my pacman command not found." Copy, paste, hope. Break something. Start over.&lt;/p&gt;

&lt;p&gt;By the end of the day I have a machine that sort of works, but I'm not sure what I installed or whether any of it is set up right. And I know I'll go through the exact same thing next time. If you've ever set up a new machine, you know this feeling. It's not hard. It's just tedious, repetitive, and easy to get wrong.&lt;/p&gt;

&lt;p&gt;I got tired of it. So I built "nexus-engine"(&lt;a href="https://github.com/Sumama-Jameel/nexus-engine" rel="noopener noreferrer"&gt;https://github.com/Sumama-Jameel/nexus-engine&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;You write a simple file that describes what you want on your machine. Then you run one command and it sets everything up.&lt;/p&gt;

&lt;p&gt;That's it.&lt;/p&gt;

&lt;p&gt;Here is what a setup file looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-setup&lt;/span&gt;
&lt;span class="na"&gt;packages&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;git&lt;/span&gt;
    &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;foundation&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;curl&lt;/span&gt;
    &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;foundation&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docker&lt;/span&gt;
    &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tool&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nodejs&lt;/span&gt;
    &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;language&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And it does the rest. Detects your OS, figures out which package manager to use, installs everything in the right order, and gives you a report when it's done.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Works The Same Everywhere
&lt;/h2&gt;

&lt;p&gt;This was the big one for me. I switch between Ubuntu, Arch, and Fedora depending on what I'm doing. Every distro has its own package manager. Different commands, different syntax, different package names.&lt;/p&gt;

&lt;p&gt;nexus-engine handles all four major Linux package managers through one interface:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;apt (Ubuntu, Debian)&lt;/li&gt;
&lt;li&gt;pacman (Arch, Manjaro)&lt;/li&gt;
&lt;li&gt;dnf (Fedora, RHEL)&lt;/li&gt;
&lt;li&gt;apk (Alpine)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You write your setup file once. It works everywhere. You don't need to know which command belongs to which distro.&lt;/p&gt;

&lt;h2&gt;
  
  
  Windows Gets Linux in About a Minute
&lt;/h2&gt;

&lt;p&gt;If you're on Windows and you want a Linux environment, normally you have to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enable WSL&lt;/li&gt;
&lt;li&gt;Pick a distro&lt;/li&gt;
&lt;li&gt;Download it&lt;/li&gt;
&lt;li&gt;Import it&lt;/li&gt;
&lt;li&gt;Configure wsl.conf&lt;/li&gt;
&lt;li&gt;Set up your packages inside it&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's a lot of steps and a lot of places to go wrong.&lt;/p&gt;

&lt;p&gt;With nexus-engine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus wsl setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It checks if your system is ready, downloads a Linux rootfs, imports it into WSL2, configures it with secure defaults, and you're in. About sixty seconds.&lt;/p&gt;

&lt;p&gt;Then you can drop into your Linux environment anytime:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus wsl enter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  If Something Breaks, It Cleans Up
&lt;/h2&gt;

&lt;p&gt;This is the part that always got me with manual setup. You're installing ten things. Number seven fails. Now you have six things installed, one broken, and three that never got attempted. What do you do? Uninstall manually? Start over? Just live with it?&lt;/p&gt;

&lt;p&gt;nexus-engine handles this differently. It installs things in priority order. Foundation packages first, then languages, then tools. If a foundation package fails, it removes everything it already installed that run. You're never left with a half-working setup.&lt;/p&gt;

&lt;p&gt;It also checks things before it starts. Disk space, network connectivity, whether you have the right permissions. It tells you upfront if something is going to be a problem instead of failing halfway through.&lt;/p&gt;

&lt;h2&gt;
  
  
  You Can Share and Reuse Setups
&lt;/h2&gt;

&lt;p&gt;I have a base setup that I use on every machine. Git, curl, a few essentials. Then I have specific setups for different projects. One for web development. One for data science. One for a particular client's stack.&lt;/p&gt;

&lt;p&gt;nexus-engine lets you layer these on top of each other. A data science setup can extend the base setup. You only define what's different. The rest is inherited.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;data-science&lt;/span&gt;
&lt;span class="na"&gt;extends&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;base-dev&lt;/span&gt;
&lt;span class="na"&gt;packages&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;python3&lt;/span&gt;
    &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;language&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;jupyter&lt;/span&gt;
    &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tool&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pandas&lt;/span&gt;
    &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;tool&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also share setups with other people. Your team can use the same setup file. New team member joins, they run one command, they have the same environment as everyone else.&lt;/p&gt;

&lt;h2&gt;
  
  
  You Should Be Able to Trust It
&lt;/h2&gt;

&lt;p&gt;Here's the thing about a tool that installs stuff on your machine. You need to trust it.&lt;/p&gt;

&lt;p&gt;I thought about this a lot. So I made some decisions early on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It doesn't run whatever it wants.&lt;/strong&gt; Every command goes through a strict allowlist. If it's not on the list, it doesn't run. No shell metacharacters, no arbitrary execution, no surprises.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It checks setup files for tampering.&lt;/strong&gt; Every profile gets a SHA256 integrity check. If someone modifies your setup file, nexus-engine will notice and refuse to use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Downloads are verified.&lt;/strong&gt; When it downloads a Linux rootfs or a remote profile, it checks that what it received is what it expected. No man-in-the-middle surprises.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your state is tracked.&lt;/strong&gt; It keeps a record of everything it installed, when, and why. You can always see what's on your machine and where it came from.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;It's a single binary. No dependencies. Download it and run.&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="c"&gt;# Install with Go&lt;/span&gt;
go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/Sumama-Jameel/nexus-engine/cmd/nexus@latest

&lt;span class="c"&gt;# Or download a binary from the releases page&lt;/span&gt;
&lt;span class="c"&gt;# https://github.com/Sumama-Jameel/nexus-engine/releases&lt;/span&gt;

&lt;span class="c"&gt;# Initialize your environment&lt;/span&gt;
nexus init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On Windows, the fastest path to Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus wsl setup
nexus wsl enter
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;This is v1.0.0. It works for my use case and I've been using it daily. But I built it in the open because I want it to work for more people.&lt;/p&gt;

&lt;p&gt;Things I'm thinking about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More rootfs options for WSL2&lt;/li&gt;
&lt;li&gt;A community directory of shared setups&lt;/li&gt;
&lt;li&gt;Better Windows support beyond WSL&lt;/li&gt;
&lt;li&gt;Package managers I haven't covered yet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If any of this sounds useful to you, check it out:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/Sumama-Jameel/nexus-engine" rel="noopener noreferrer"&gt;github.com/Sumama-Jameel/nexus-engine&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Apache 2.0, fully open source. Read the code, open an issue, tell me what's missing. I want this to be something people actually trust to run on their machines. That bar is high and I want to clear it.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
