Chrome extension Manifest V3 Local-only MIT

Your browser is an OS. This is its shell.

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.

you@current-tab:~$ tabs | grep github
Install for Chrome Build from source · Load unpacked at chrome://extensions · Press ` to toggle
105commands
0servers
0telemetry
`to toggle
BrowserShell terminal overlay demo — toggling the shell and running tab and navigation commands

Quake-style overlay · stays on the page you're working on

Your browser can do everything.
Getting it to do anything takes forever.

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.

01

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.

02

Scattered tools

Tab managers, bookmark search, cookie viewers, and privacy cleaners live in separate extensions or buried chrome:// URLs. No single interface.

03

No composability

You can't pipe tab output into grep, alias your morning routine, or script "search history → open result → summarize page" as one flow.

04

Power users adapt

Developers already think in shells. The browser never gave them one — so they hack together shortcuts, bookmarks, and five extensions instead.

Built because the browser deserved a shell.

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.”

— The idea behind every command, pipe, and man page in v0.1

One overlay. Every browser capability as a command.

Press ` on any page. A fullscreen terminal drops in. Type. Click results. Close with Escape. Your page stays underneath — no navigation, no new tab.

Command everything

Tabs, windows, bookmarks, history, downloads, cookies, DOM links, inputs, images, extensions — each exposed as a typed command with help and man docs.

  • tabs | grep docs
  • bookmark search api
  • downloads

Compose workflows

Pipe 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 | head
  • watch 5 tabs
  • alias ll=tabs

Click the output

Numbered 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 row
  • links | head → click href
  • recent → restore session

Audit & forget

Inspect what a site stores, review permissions, and clear cookies or cache from the keyboard — with dry-run before destructive actions.

  • siteinfo
  • cookies
  • forget --dry-run

Five clicks → one command

Without BrowserShell

  • Right-click → "Search history for…"
  • chrome://downloads in a new tab
  • DevTools → Application → Cookies
  • Bookmark manager in another window
  • Extension popup #7 for tab search

With BrowserShell

  • history search react
  • downloads → click row 1
  • cookies
  • bookmark search docs
  • tabs | grep github

Three steps. You're productive in under a minute.

1

Press `

A Quake-style terminal overlays the current page. Works on any site. Toggle key is configurable in options.

2

Type a command

Tab completion, history, and Ctrl+R search. help and man tab when you're stuck.

3

Act on results

Click numbered rows to run follow-ups. Pipe output to grep, head, or the next command.

Live demos

Four real workflows. Switch tabs to explore — every command works in v1.0.0.

news.ycombinator.com
you@news.ycombinator.com:/$ tabs | grep -i hn
# Title URL
1 HN: AI agents thread news.ycombinator.com/item?id=…
2 Show HN: BrowserShell news.ycombinator.com/item?id=…
 
you@news.ycombinator.com:/$ tab switch 2
Switched to tab 2
 
you@news.ycombinator.com:/$ links | head
# Text Href
1 comments item?id=…
2 past news.ycombinator.com/past
you@news.ycombinator.com:/$

Switch scenarios above — numbered rows are clickable in the real extension.

Full demo walkthroughs with explanations →

105 commands. Nine categories.

Pipe them. Alias them. Watch them. All documented with man pages.

Navigationgo open back reload search
Tabstabs tab pin discard domain
Windowswindows recent sessions mute
Bookmarksbookmarks bookmark
Historyhistory search delete
Pagelinks read click fill shot tech
Privacyforget siteinfo permissions
Shellls cd cat grep alias export
Utilityoptions user config watch notify

Virtual filesystem

ls /tabs, cd /bookmarks, cat /current/url.txt — browser state as navigable paths.

Self-documenting

help, man tab, apropos privacy. Never stuck guessing syntax.

Common questions

Why does BrowserShell need access to all websites?

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.

Does BrowserShell send data to any server?

No. Zero servers, zero analytics, zero accounts. Everything runs locally in Chrome. Config and history live in chrome.storage.local on your device.

How is this different from Vimium or Surfingkeys?

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.

How is this different from the Chrome DevTools console?

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.

Can I use this without learning 105 commands?

Yes. Start with tabs, go, help, and man. Tab completion and search suggest commands as you type. apropos finds commands by keyword.

Is the forget command safe?

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.

Will this ship on the Chrome Web Store?

Planned. Privacy policy, permissions rationale, and security docs are ready. Until then, build from source and load unpacked from dist/.

Can websites extend BrowserShell?

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.

More questions →

Install in two minutes

Clone, build, load unpacked. Press ` on any page.

git clone https://github.com/jamalyusuf/browsershell.git
cd browsershell && npm install && npm run build

Load dist/ at chrome://extensions → Developer mode → Load unpacked.