<?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: Dipen Dedania</title>
    <description>The latest articles on DEV Community by Dipen Dedania (@i_m_vampire_).</description>
    <link>https://dev.to/i_m_vampire_</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%2F919515%2F84f28df9-ce0f-4cef-bc70-79e9dd294275.jpg</url>
      <title>DEV Community: Dipen Dedania</title>
      <link>https://dev.to/i_m_vampire_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/i_m_vampire_"/>
    <language>en</language>
    <item>
      <title>The Internet Lied to You About Portfolio Websites</title>
      <dc:creator>Dipen Dedania</dc:creator>
      <pubDate>Mon, 07 Sep 2026 11:25:50 +0000</pubDate>
      <link>https://dev.to/i_m_vampire_/the-internet-lied-to-you-about-portfolio-websites-i18</link>
      <guid>https://dev.to/i_m_vampire_/the-internet-lied-to-you-about-portfolio-websites-i18</guid>
      <description>&lt;p&gt;Here's what I found: most of the advice floating around is either outdated, wrong, or only applies if you're trying to impress other developers instead of getting hired.&lt;/p&gt;

&lt;p&gt;Let me break down the three biggest lies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lie #1: "Your Portfolio Needs a Modern Stack"
&lt;/h2&gt;

&lt;p&gt;This is the most pervasive myth. Every tutorial tells you to spin up Next.js, add TypeScript, configure Tailwind, set up MDX, deploy to Vercel, and hook up a CMS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wrong.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I sorted the 148 profiles by GitHub stars, something interesting happened. The top performers weren't the most technically complex. They were the ones with &lt;strong&gt;the clearest message and the fastest load time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the real tech stack distribution I found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vanilla HTML/CSS/JavaScript&lt;/strong&gt; — Clean, zero-dependency sites that load in under a second&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React/Next.js&lt;/strong&gt; — The most common framework choice, but far from the only path to a great portfolio&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hugo/Jekyll/11ty&lt;/strong&gt; — Static site generators that are boring, reliable, and fast&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vue/Svelte&lt;/strong&gt; — Less common, but the ones that use them tend to have distinctive designs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GSAP/Three.js&lt;/strong&gt; — The "impressive" stack — but often overkill for a portfolio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The portfolios that stood out didn't stand out because of their stack. They stood out because of &lt;strong&gt;clarity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Take &lt;a href="https://v4.brittanychiang.com/" rel="noopener noreferrer"&gt;Brittany Chiang's v4&lt;/a&gt; — React, Gatsby, styled-components. Nothing groundbreaking. But the design is so clean, the information so well-organized, and the personality so present that it became one of the most referenced developer portfolios on the internet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; Pick whatever you're comfortable with. A portfolio built in plain HTML by someone who understands design will always outperform a Next.js monstrosity built by someone who doesn't.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lie #2: "More Features = More Impressions"
&lt;/h2&gt;

&lt;p&gt;LinkedIn is full of portfolio showcases with parallax scrolling, 3D models, particle effects, custom cursors, page transitions, and easter eggs. And sure, they get screenshots shared on Twitter.&lt;/p&gt;

&lt;p&gt;But here's the data that nobody talks about: &lt;strong&gt;the portfolios that actually convert visitors into opportunities are boring.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not boring as in ugly. Boring as in &lt;strong&gt;predictable.&lt;/strong&gt; You land on the page, and within 3 seconds you know:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Who this person is&lt;/li&gt;
&lt;li&gt;What they do&lt;/li&gt;
&lt;li&gt;What they want you to do next&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The most common pattern among high-performing portfolios in my collection:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hero section&lt;/strong&gt; — Name, role, one-liner&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;About section&lt;/strong&gt; — Short bio, maybe a photo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Projects/Work&lt;/strong&gt; — 3-6 showcased projects with links&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contact&lt;/strong&gt; — Email, GitHub, LinkedIn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. No 3D globe. No particle system. No page that takes 4 seconds to load while a CSS animation plays.&lt;/p&gt;

&lt;p&gt;One developer I analyzed — &lt;a href="https://taniarascia.com/" rel="noopener noreferrer"&gt;Tania Rascia&lt;/a&gt; — runs a blog-first portfolio built with React and Gatsby. No fancy animations. No interactive elements. Just well-written content and a clean layout. Her portfolio drives more traffic than most "impressive" portfolios because it's useful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; Every feature you add is a feature that can break, slow down, or distract from your actual message. The best portfolios are the ones where you can't find anything to remove.&lt;/p&gt;




&lt;h2&gt;
  
  
  Lie #3: "You Need to Build It From Scratch"
&lt;/h2&gt;

&lt;p&gt;This one keeps so many developers from ever launching a portfolio at all. They think they need to write every line, design every component, and craft every animation from nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You don't.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some of the best portfolios in the collection are forked templates that were customized:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.adeolaadeoti.site" rel="noopener noreferrer"&gt;Adeola Adeoti&lt;/a&gt; forked a template and made it his own with TypeScript, GSAP, and Next.js. The result is polished, professional, and completely "his."&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developerfolio.js.org" rel="noopener noreferrer"&gt;DeveloperFolio by Saad Pasta&lt;/a&gt; is a template that dozens of developers have forked. Each fork looks different because each person customized the content, colors, and sections.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arifszn.github.io/gitprofile/" rel="noopener noreferrer"&gt;gitprofile by Arif Szn&lt;/a&gt; is a GitHub-powered portfolio that pulls your repos and stats automatically. Zero content management required.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The developers who get this right understand something important: &lt;strong&gt;a portfolio is a tool, not an art project.&lt;/strong&gt; Its job is to communicate who you are and what you do. How you build it is irrelevant to the person viewing it.&lt;/p&gt;

&lt;p&gt;The fork → customize → deploy workflow works because:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The design decisions are already made&lt;/li&gt;
&lt;li&gt;The responsive layout is already handled&lt;/li&gt;
&lt;li&gt;The deployment is already configured&lt;/li&gt;
&lt;li&gt;You just need to add your personality&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The lesson:&lt;/strong&gt; Fork a portfolio template today. Customize it this weekend. Ship it Monday. Perfect is the enemy of deployed.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Works (From 148 Real Portfolios)
&lt;/h2&gt;

&lt;p&gt;After analyzing all of these profiles, five patterns emerged that separated the best from the rest:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Speed Wins
&lt;/h3&gt;

&lt;p&gt;Every top-performing portfolio loads fast. Not "acceptable" fast. Actually fast. Under 2 seconds, ideally under 1.&lt;/p&gt;

&lt;p&gt;This isn't just a technical nice-to-have. It's a first impression. A slow portfolio tells a recruiter: "This developer doesn't care about user experience." Harsh? Yes. True? Also yes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Personality Beats Polish
&lt;/h3&gt;

&lt;p&gt;The portfolios that get remembered aren't the most polished. They're the most personal. A developer who writes "I build things that make people's lives slightly less annoying" in their hero section will always be more memorable than one who writes "Passionate full-stack developer with 5+ years of experience."&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Projects Need Context
&lt;/h3&gt;

&lt;p&gt;Listing project names and links isn't enough. The best portfolios explain what the project does, what problem it solves, and what technologies were used. One sentence per project can make the difference between "cool" and "I want to hire this person."&lt;/p&gt;

&lt;h3&gt;
  
  
  4. One Clear CTA
&lt;/h3&gt;

&lt;p&gt;"What do you want me to do?" If a visitor has to think about this, you've already lost them. The best profiles end with exactly one clear action: email me, check my GitHub, download my resume. One. Not five. One.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Content &amp;gt; Container
&lt;/h3&gt;

&lt;p&gt;A beautiful portfolio with nothing interesting to say is still empty. The portfolios that perform best are the ones where the content — the projects, the writing, the personality — does the heavy lifting. The design just gets out of the way.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Portfolio That Gets You Hired
&lt;/h2&gt;

&lt;p&gt;Here's the uncomfortable truth: nobody hires you because your portfolio has a dark mode toggle or a typing animation. They hire you because your portfolio made them believe you can do the job.&lt;/p&gt;

&lt;p&gt;That belief comes from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Seeing your work (real projects, real code)&lt;/li&gt;
&lt;li&gt;Understanding your thinking (project descriptions, technical decisions)&lt;/li&gt;
&lt;li&gt;Feeling your personality (writing style, design choices)&lt;/li&gt;
&lt;li&gt;Trusting your professionalism (it loads fast, it works on mobile, the links aren't broken)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else is decoration.&lt;/p&gt;




&lt;h2&gt;
  
  
  I Built a Tool to Make This Easier
&lt;/h2&gt;

&lt;p&gt;Creating a portfolio from scratch is overwhelming. Even with inspiration, you're staring at a blank editor wondering where to start.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;&lt;a href="https://dipen-dedania.github.io/awesome-github-profile-website/" rel="noopener noreferrer"&gt;Awesome GitHub Websites&lt;/a&gt;&lt;/strong&gt; — a free, curated gallery of GitHub-hosted profile websites.&lt;/p&gt;

&lt;p&gt;Here's what makes it different from every other "portfolio inspiration" list:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;148 real, working portfolios&lt;/strong&gt; — Not mockups. Not dribbble shots. Live sites you can visit, inspect, and learn from.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filter by style&lt;/strong&gt; — Find minimal designs, creative showcases, or blog-first setups in seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple views&lt;/strong&gt; — Browse as a gallery, flip through a book, or swipe through cards like Tinder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct source code links&lt;/strong&gt; — Every portfolio links to its GitHub repo. Fork it, customize it, ship it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup guide&lt;/strong&gt; — Step-by-step instructions for publishing your own portfolio on GitHub Pages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built this because I was tired of seeing developers waste months on their portfolio when they could have spent 30 minutes forking a template and shipping something real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://dipen-dedania.github.io/awesome-github-profile-website/" rel="noopener noreferrer"&gt;Browse the gallery →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The 30-Minute Portfolio Challenge
&lt;/h2&gt;

&lt;p&gt;You don't need a week. You don't need a tutorial series. You don't need to learn a new framework.&lt;/p&gt;

&lt;p&gt;You need 30 minutes and a decision.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Browse the gallery&lt;/strong&gt; and pick a portfolio that matches your style&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fork the repository&lt;/strong&gt; (every template links to its source code)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customize three things&lt;/strong&gt;: your name, your bio, and your projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable GitHub Pages&lt;/strong&gt; in your repository settings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push and deploy&lt;/strong&gt; — your portfolio is live&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's it. Your GitHub profile URL becomes your portfolio URL. When someone Googles your name, your work shows up.&lt;/p&gt;

&lt;p&gt;No excuses. No "I'll do it next month." Do it now.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;The internet will keep telling you to use the latest framework, add the flashiest features, and spend weeks perfecting every pixel. The internet is wrong.&lt;/p&gt;

&lt;p&gt;The best portfolio is the one that's &lt;strong&gt;live.&lt;/strong&gt; The one that clearly communicates who you are. The one that makes it easy for someone to say "I want to talk to this person."&lt;/p&gt;

&lt;p&gt;Build that one. Ship it today. Improve it tomorrow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop planning. Start shipping.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://dipen-dedania.github.io/awesome-github-profile-website/" rel="noopener noreferrer"&gt;Awesome GitHub Websites&lt;/a&gt;&lt;/strong&gt; — Free curated gallery of 148+ GitHub portfolio websites&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://pages.github.com/" rel="noopener noreferrer"&gt;GitHub Pages Docs&lt;/a&gt;&lt;/strong&gt; — Official guide to hosting on GitHub Pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme" rel="noopener noreferrer"&gt;GitHub Profile README&lt;/a&gt;&lt;/strong&gt; — How to create a profile README&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Think I missed a myth? Found a portfolio that proves me wrong? &lt;a href="https://github.com/Dipen-Dedania/awesome-github-profile-website/issues" rel="noopener noreferrer"&gt;Open an issue&lt;/a&gt; or drop a comment below — I'll add it to the gallery.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I lost 40 minutes to an AI agent that had already crashed. So I built a nervous system for all of them.</title>
      <dc:creator>Dipen Dedania</dc:creator>
      <pubDate>Tue, 21 Jul 2026 12:04:43 +0000</pubDate>
      <link>https://dev.to/i_m_vampire_/i-lost-40-minutes-to-an-ai-agent-that-had-already-crashed-so-i-built-a-nervous-system-for-all-of-37ie</link>
      <guid>https://dev.to/i_m_vampire_/i-lost-40-minutes-to-an-ai-agent-that-had-already-crashed-so-i-built-a-nervous-system-for-all-of-37ie</guid>
      <description>&lt;p&gt;I gave Claude Code a gnarly refactor, hit enter, and switched to something else. That's the whole promise of agentic coding, right? Fire and forget.&lt;/p&gt;

&lt;p&gt;Forty minutes later I tabbed back to check on it.&lt;/p&gt;

&lt;p&gt;It had died in the first ninety seconds.&lt;/p&gt;

&lt;p&gt;A transient error, a half-printed stack trace, and then… nothing. The terminal just sat there, cursor blinking, looking &lt;em&gt;exactly&lt;/em&gt; like an agent deep in thought. I had spent forty minutes "letting it cook" while it was stone cold.&lt;/p&gt;

&lt;p&gt;And here's the part that actually stung: I wasn't even sure &lt;em&gt;which&lt;/em&gt; agent I'd left it running in. Claude Code? The Cursor pane? The Codex tab I'd opened that morning? I now have &lt;strong&gt;seven&lt;/strong&gt; of these things installed — Claude Code, Cursor, Copilot, Codex, Kiro, Antigravity, Grok — and checking on them had quietly become a full-time tab-hopping job.&lt;/p&gt;

&lt;p&gt;I was paying an &lt;strong&gt;alt-tab tax&lt;/strong&gt; on every single agent run. And the tax kept going up.&lt;/p&gt;

&lt;p&gt;So I built the thing I wanted: &lt;strong&gt;&lt;a href="https://github.com/Dipen-Dedania/agent-pulse" rel="noopener noreferrer"&gt;Agent Pulse&lt;/a&gt;&lt;/strong&gt; — ambient, glanceable awareness of every AI coding agent on your machine, in a floating frosted-glass bubble that lives on your desktop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk7xkv3rtnj9rex5akyko.gif" 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%2Fk7xkv3rtnj9rex5akyko.gif" alt="Agent Pulse bubbles floating on the desktop" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The idea in one sentence
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Your agents already emit lifecycle events. Nobody was listening. Agent Pulse listens — and turns them into a single, ambient heartbeat you can see from across the room.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A soft pulsing glow means &lt;strong&gt;working&lt;/strong&gt;. A calm breathing effect means &lt;strong&gt;idle&lt;/strong&gt;. A red shake means &lt;strong&gt;your agent just died&lt;/strong&gt; — so you find out in two seconds, not forty minutes.&lt;/p&gt;

&lt;p&gt;That's it. That's the whole pitch. Everything below is the fun part: how it actually works, and the genuinely strange things I found out trying to make seven very different tools speak the same language.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 1: Seven tools, seven dialects, one schema
&lt;/h2&gt;

&lt;p&gt;Every one of these agents &lt;em&gt;can&lt;/em&gt; tell you what it's doing. The problem is they all do it differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code fires &lt;code&gt;PreToolUse&lt;/code&gt;, &lt;code&gt;Stop&lt;/code&gt;, and friends and can POST them over HTTP.&lt;/li&gt;
&lt;li&gt;Cursor, Copilot, Codex, Kiro, and Antigravity run &lt;strong&gt;shell hooks&lt;/strong&gt; — they shell out to a script on lifecycle events.&lt;/li&gt;
&lt;li&gt;Grok's runtime blocks HTTP hooks (SSRF protection), so it needs a command hook writing to a dedicated file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of them agree on event names. None agree on payload shape. Some don't even agree on where their config lives.&lt;/p&gt;

&lt;p&gt;So the core of Agent Pulse is boring in the best way: a tiny &lt;strong&gt;local HTTP bridge&lt;/strong&gt; on &lt;code&gt;localhost:4242&lt;/code&gt; that ingests everyone's events and normalizes them into one schema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// The entire vocabulary. Every tool, every event, collapses into this.&lt;/span&gt;
&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;AgentState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;working&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;waiting&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;idle&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;error&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dead&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;PreToolUse&lt;/code&gt; → &lt;code&gt;working&lt;/code&gt;. &lt;code&gt;Stop&lt;/code&gt; → &lt;code&gt;idle&lt;/code&gt;. A non-zero exit → &lt;code&gt;dead&lt;/code&gt;. One-click install writes the right hook into the right config file for each tool (&lt;code&gt;~/.claude/settings.json&lt;/code&gt;, &lt;code&gt;~/.cursor/hooks.json&lt;/code&gt;, &lt;code&gt;.kiro/hooks/…&lt;/code&gt;, and so on), and one click removes it again. No manual JSON surgery.&lt;/p&gt;

&lt;p&gt;The bubbles are just a thin, pretty layer on top: React 19 + Tailwind 4 + Framer Motion, always-on-top, draggable, glassmorphic. The hard part was never the glow. It was getting seven vendors to agree on what "busy" means.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 2: The rabbit holes nobody warns you about
&lt;/h2&gt;

&lt;p&gt;This is the section I'd have killed to read before starting. If you're building anything that observes AI agents, save yourself the weeks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🕳️ Copilot's logs don't contain token counts. At all.&lt;/strong&gt; VS Code Copilot's hooks give you lifecycle state and &lt;em&gt;sometimes&lt;/em&gt; a model name, but no real token usage — not even in the transcript. Every tool that shows you "Copilot tokens" is re-tokenizing the text and &lt;em&gt;estimating&lt;/em&gt; (a common heuristic is ~0.25 tokens/char plus a tool-call fudge factor). I went looking for ground truth and found there wasn't any.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🕳️ Codex over-reports if you're naive about it.&lt;/strong&gt; Codex tokens live in a rollout file as cumulative diffs. If you just sum the tail like a reasonable person would, you overcount by ~5%. You have to read the cumulative-diff structure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🕳️ Cursor's real usage is behind a cookie you have to reconstruct.&lt;/strong&gt; The only source of truth for Cursor usage is &lt;code&gt;cursor.com/api/usage-summary&lt;/code&gt; — authenticated with a session cookie you rebuild from the access token sitting in Cursor's local &lt;code&gt;state.vscdb&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🕳️ "Learned limits" are a trap.&lt;/strong&gt; Some tools &lt;em&gt;guess&lt;/em&gt; your rate limits from usage history. I decided early: never guess billing. Agent Pulse polls &lt;strong&gt;real quota APIs&lt;/strong&gt; (Anthropic's OAuth usage endpoint, Codex's usage backend, Cursor, Antigravity) — and all cost figures are clearly labeled &lt;strong&gt;estimated API list prices&lt;/strong&gt;, never your actual subscription bill. Trust is the whole product.&lt;/p&gt;

&lt;p&gt;The meta-lesson: &lt;strong&gt;the ecosystem is wildly inconsistent, and most "analytics" you see are educated guesses wearing a suit.&lt;/strong&gt; Being honest about that turned out to be a feature.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 3: The part that surprised even me
&lt;/h2&gt;

&lt;p&gt;Once you have a reliable signal for "is this agent working or idle," you can build things that felt like sci-fi a year ago.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A self-running backlog.&lt;/strong&gt; There's a Kanban board where you queue tasks. Define a scheduler window (say, "weeknights 8pm–11pm"), and Agent Pulse feeds queued cards to your agents &lt;em&gt;while you're asleep&lt;/em&gt;. Execution tasks run in an isolated &lt;strong&gt;git worktree&lt;/strong&gt; and hand you back an uncommitted diff — with an optional QA gate that runs your tests/lint/typecheck and auto-retries once before flagging the card as blocked. You wake up to a stack of reviewable diffs, not a mess.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attention that finds you.&lt;/strong&gt; When an agent sits in the &lt;code&gt;waiting&lt;/code&gt; state past a threshold, Agent Pulse escalates: intensifies the bubble, raises an OS notification, and can ping &lt;strong&gt;Discord or Slack&lt;/strong&gt; with the task summary and how long it's been stuck. Your agent needs you? You'll know — even away from your desk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A local timeline.&lt;/strong&gt; Every normalized event lands in a local SQLite DB (no telemetry, all on your machine). That gives you a GitHub-style activity heatmap, an hour-of-day rhythm chart ("apparently I pair with agents most at 11pm, cool, cool"), a tool-mix breakdown, and estimated-cost analytics.&lt;/p&gt;

&lt;p&gt;None of this needed a new API. It all falls out of &lt;em&gt;listening to signals that were already there.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this resonates (and why I think you'll feel it too)
&lt;/h2&gt;

&lt;p&gt;We crossed a line recently and barely noticed. We stopped having &lt;strong&gt;one&lt;/strong&gt; AI assistant and started running a &lt;strong&gt;fleet&lt;/strong&gt;. But our tooling still assumes one agent, one terminal, one tab.&lt;/p&gt;

&lt;p&gt;Managing a fleet by alt-tabbing is like monitoring a server farm by SSH-ing into each box every few minutes to run &lt;code&gt;top&lt;/code&gt;. At some point you build a dashboard. Agent Pulse is that dashboard — but ambient, so it fades into your peripheral vision until something actually needs you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;You don't check on it. It taps you on the shoulder.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's local-first.&lt;/strong&gt; No account, no telemetry, no cloud. The bridge is loopback-only.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's open source&lt;/strong&gt; (AGPLv3), cross-platform (Windows / macOS / Linux), and adding a new tool is a documented, welcomed contribution.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try it (2 minutes)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Dipen-Dedania/agent-pulse.git
&lt;span class="nb"&gt;cd &lt;/span&gt;agent-pulse
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run rebuild:native   &lt;span class="c"&gt;# for the local SQLite timeline&lt;/span&gt;
npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or grab a prebuilt installer from the &lt;a href="https://github.com/Dipen-Dedania/agent-pulse/releases/latest" rel="noopener noreferrer"&gt;&lt;strong&gt;Releases page&lt;/strong&gt;&lt;/a&gt; — Windows &lt;code&gt;.exe&lt;/code&gt;, macOS &lt;code&gt;.dmg&lt;/code&gt;, Linux &lt;code&gt;.AppImage&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then open Settings, click &lt;strong&gt;Install hook&lt;/strong&gt; next to whichever agents you use, and watch the bubbles come alive.&lt;/p&gt;




&lt;h2&gt;
  
  
  I want to hear from you
&lt;/h2&gt;

&lt;p&gt;Two questions, and I'll reply to every comment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How many AI coding agents are you running right now?&lt;/strong&gt; Be honest. I bet it's more than you think.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which tool should I add support for next?&lt;/strong&gt; &lt;a href="https://github.com/Dipen-Dedania/agent-pulse/issues/new?template=tool_support_request.yml" rel="noopener noreferrer"&gt;Open a request&lt;/a&gt; or drop it below.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If this saved you even one "wait, it crashed 40 minutes ago?!" moment, a ⭐ on the &lt;a href="https://github.com/Dipen-Dedania/agent-pulse" rel="noopener noreferrer"&gt;repo&lt;/a&gt; is the best thank-you — it's genuinely what decides whether the next person finds it.&lt;/p&gt;

&lt;p&gt;Now go check on your agents. One of them is probably lying to you about being busy. 👀&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
