Context switching
Close a tab, check downloads, search history — each action opens a new surface. You lose your place on the page you were actually working on.
BrowserShell gives you a real terminal on top of any webpage — tabs, history, bookmarks, privacy tools, and page inspection as typed commands. Not another popup. Not another settings maze.
Press ` anywhere. Run tabs | grep github. Click row 2 to switch.
105 commands, pipes, aliases, and clickable output.

Quake-style overlay · stays on the page you're working on
The problem
Chrome is an OS with dozens of subsystems — tabs, history, cookies, downloads, extensions, DevTools. But every task sends you through a different UI: menus, chrome:// pages, popups, and right-click detours.
Close a tab, check downloads, search history — each action opens a new surface. You lose your place on the page you were actually working on.
Tab managers, bookmark search, cookie viewers, and privacy cleaners live in separate extensions or buried chrome:// URLs. No single interface.
You can't pipe tab output into grep, alias your morning routine, or script "search history → open result → summarize page" as one flow.
Developers already think in shells. The browser never gave them one — so they hack together shortcuts, bookmarks, and five extensions instead.
Why it was created
BrowserShell started from a simple frustration: the browser is the most-used app on your machine, yet the fastest way to triage tabs is still clicking through UI chrome designed for casual users.
Terminal users already have a mental model — commands, pipes, man pages, aliases. BrowserShell applies that model to browser primitives: tabs become listable rows, bookmarks become searchable paths, site data becomes commands you type and audit.
It's open source, runs entirely in your browser, stores config locally, and never phones home. If you live in the keyboard, this is the interface Chrome should have shipped.
Read the design philosophy →“Treat the browser like an OS. Give it bash.”
What it does
Press ` on any page. A fullscreen terminal drops in. Type. Click results. Close with Escape.
Your page stays underneath — no navigation, no new tab.
Tabs, windows, bookmarks, history, downloads, cookies, DOM links, inputs, images, extensions — each exposed as a typed command with help and man docs.
tabs | grep docsbookmark search apidownloadsPipe output between commands. Set aliases for routines. Watch any command on an interval. Bang-expansion and a virtual filesystem for browser state.
history search react | headwatch 5 tabsalias ll=tabsNumbered rows are actions, not decoration. List tabs → click 3 to switch. List downloads → click 1 to open. A TUI that lives inside your browser.
tabs → click rowlinks | head → click hrefrecent → restore sessionInspect what a site stores, review permissions, and clear cookies or cache from the keyboard — with dry-run before destructive actions.
siteinfocookiesforget --dry-runBefore & after
chrome://downloads in a new tabhistory search reactdownloads → click row 1cookiesbookmark search docstabs | grep githubHow it works
`A Quake-style terminal overlays the current page. Works on any site. Toggle key is configurable in options.
Tab completion, history, and Ctrl+R search. help and man tab when you're stuck.
Click numbered rows to run follow-ups. Pipe output to grep, head, or the next command.
Try it
Four real workflows. Switch tabs to explore — every command works in v1.0.0.
Switch scenarios above — numbered rows are clickable in the real extension.
Command surface
Pipe them. Alias them. Watch them. All documented with man pages.
go open back reload searchtabs tab pin discard domainwindows recent sessions mutebookmarks bookmarkhistory search deletelinks read click fill shot techforget siteinfo permissionsls cd cat grep alias exportoptions user config watch notifyls /tabs, cd /bookmarks, cat /current/url.txt — browser state as navigable paths.
help, man tab, apropos privacy. Never stuck guessing syntax.
No cloud. No telemetry. Config in chrome.storage.local. Audit the MIT source.
FAQ
The Quake-style overlay injects on every page so you can press ` anywhere. Page commands (links, read, click) run scripts in the active tab only when you execute them — never silently.
No. Zero servers, zero analytics, zero accounts. Everything runs locally in Chrome. Config and history live in chrome.storage.local on your device.
Those are keyboard navigation layers. BrowserShell is a full shell — pipes, VFS, 105 commands, clickable lists, aliases, watch mode. You manage tabs, history, bookmarks, downloads, and page DOM from one prompt.
DevTools is for debugging JavaScript on one page. BrowserShell operates on browser-level resources (tabs, windows, bookmarks, history) and composes commands with pipes — closer to Bash than a REPL.
Yes. Start with tabs, go, help, and man. Tab completion and search suggest commands as you type. apropos finds commands by keyword.
Always run forget --dry-run first. It shows exactly what would be deleted. Confirmation is required unless you pass --force. Named presets live in the options page.
Planned. Privacy policy, permissions rationale, and security docs are ready. Until then, build from source and load unpacked from dist/.
On the roadmap. Sites will opt in via browser-shell.json manifests to register domain-specific commands when you visit them. See the Future page.
Open source
MIT licensed. No telemetry. Built in public.
Get started
Clone, build, load unpacked. Press ` on any page.
git clone https://github.com/jamalyusuf/browsershell.git
cd browsershell && npm install && npm run buildLoad dist/ at chrome://extensions → Developer mode → Load unpacked.