Inspiration
We’ve all been there: 47 tabs open, 3 we actually need, and a browser so sluggish that switching tabs takes seconds. Existing tab managers either just archive everything (OneTab) or force us to manually click through each tab. We wanted something smarter—an assistant that understands what we mean when we say “close all shopping tabs except the one with my order” or “group all research papers together.” That’s when we discovered agentic AI. What if a browser extension could not only see your tabs but also reason about them, route your request to the right specialist, and act safely? That idea became Tab Clean.
What it does
Tab Clean is an agentic browser extension that cleans your tabs using AI. Instead of rigid rules, you type natural language commands:
- “Close all duplicate tabs from the same news article.”
- “Find all my active subscriptions and show them in a list.”
- “Group my open arXiv papers into a folder and generate a Markdown bibliography.”
Behind the scenes, Tab Clean uses a multi‑agent system:
- A Purchase & Subscription Agent identifies shopping carts, checkout pages, and recurring subscriptions.
- A Research Organizing Agent semantically groups academic papers, GitHub repos, and documentation.
- A General Management Agent handles everyday tasks like deduplication, tab aging (“close tabs older than two weeks”), and memory hogs.
All actions are previewed first (human‑in‑the‑loop), and you can undo anything from a log. A visual “aging heatmap” shows fresh / stale / dead tabs at a glance.
How we built it
Frontend (Extension) – Chrome Extension Manifest V3, React, Tailwind CSS. Backend – Express.js server, Elasticsearch for fast tab indexing, MongoDB for action logging. AI / Agent Layer – LangChain + Gemini / Qwen LLMs. We built an LLM Router that analyzes your prompt and delegates to one of three specialized agents. Browser APIs – Chrome Tabs API, Storage API, and Alarms API for periodic sync.
Data flow:
- Extension syncs all open tabs → backend.
- Backend indexes tabs in Elasticsearch and pre‑classifies them (shopping, research, etc.).
- User enters a request.
- Router selects the right agent.
- Agent queries Elasticsearch, asks LLM for which tabs to act on.
- Extension executes actions and logs to MongoDB.
Challenges we ran into
- Keeping the UI responsive while syncing 100+ tabs. We solved it by streaming updates incrementally and using web workers for heavy parsing.
- Agent hallucinations – sometimes the AI wanted to close pinned tabs. We added a hard safety layer that filters out pinned / active tabs before any action.
- Latency of LLM calls – waiting 2‑3 seconds for a response felt slow. We mitigated by caching common queries (e.g., “close duplicates”) and pre‑classifying tabs on sync.
- Elasticsearch index mapping – titles and URLs varied wildly; we had to tune analyzers to handle HTML entities and UTM parameters for duplicate detection.
Accomplishments that we're proud of
- True natural language tab management – no dropdowns, no checkboxes. Just type what you want.
- Multi‑agent design – the first extension we know of that routes to specialists (purchase, research, general). This made the LLM outputs far more accurate.
- Safety first – every destructive action is reversible, and pinned tabs are invincible. We actually use it ourselves every day.
- Performance – even with 100+ tabs, the popup loads in under 300ms, and the heatmap updates in real time.
What we learned
- Agentic patterns are powerful but need guardrails. A single “super‑agent” fails; breaking tasks into specialized agents with narrow prompts works much better.
- Elasticsearch is overkill for small projects… but perfect for this – because tabs can be searched by content, age, domain, and custom attributes, having a real index made “find all tabs about React hooks” instant.
- Chrome extension permissions are scary – we had to be very explicit about why we need tabs, storage, and host_permissions. We added an onboarding screen that explains each permission in plain English.
What's next for Tab Clean
- Workspace persistence – save a set of tabs as a named “session” (e.g., “Monday morning research”) and restore them later.
- Cross‑browser support – Firefox and Edge using the same backend.
- Local LLM option – for privacy‑conscious users, run a small model (e.g., Phi‑3 or Llama 3 8B) via Ollama.
- Automatic periodic cleaning – schedule a daily cleanup that follows your rules (e.g., “every night at 11 PM, close all tabs older than 3 days that aren’t pinned”).
- One‑click “focus mode” – close everything except tabs related to your current project (detected via your recent activity).
Built With
- css
- elastic
- express.js
- javascript
- mongodb
- qwen
- react
- tailwind
Log in or sign up for Devpost to join the conversation.