OpenTabs
<div align="center">
<a href="https://opentabs.dev">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="assets/readme-banner-dark.svg">
<source media="(prefers-color-scheme: light)" srcset="assets/readme-banner-light.svg">
<img alt="OpenTabs" src="assets/readme-banner-light.svg" width="600">
</picture>
</a>
<br>
[](https://www.npmjs.com/package/@opentabs-dev/cli)
[](LICENSE)
[](https://github.com/opentabs-dev/opentabs/stargazers)
[Docs](https://opentabs.dev/docs) · [Plugins](plugins/) · [Discord](https://discord.gg/vDQDRz6S)
</div>
<br>
Your AI calls real web APIs through your browser session — no screenshots, no DOM scraping.
<p align="center">
<br>
<img src="assets/demo-hero.gif" alt="Demo: AI sends a Discord message and adds reactions through real API calls" />
<br>
<sub>AI sending a Discord message and adding reactions — real API calls, not browser automation</sub>
<br><br>
</p>
## How It Works
1. **Install** the CLI and load the Chrome extension
2. **Connect** — the extension bridges your browser to a local server
3. **Use** — your AI calls web APIs through your authenticated session
No API keys. No OAuth setup. If you're logged in, your AI can use it.
Works with any [MCP](https://modelcontextprotocol.io/) client. Don't want MCP? Use [CLI mode](https://opentabs.dev/docs/reference/mcp-server#cli-mode) instead.
## Quick Start
Requires [Node.js](https://nodejs.org/) 22+ and Chrome.
```bash
npm install -g @opentabs-dev/cli
opentabs start
```
Load the extension from `~/.opentabs/extension` in `chrome://extensions/` (Developer mode → Load unpacked).
```bash
opentabs plugin install <plugin-name>
```
Full walkthrough: [Quick Start guide](https://opentabs.dev/docs/quick-start)
## What You Get
- **100+ plugins, ~2,000 tools.** Slack, Discord, GitHub, Jira, Notion, Figma, AWS, Stripe, and [a lot more](plugins/). One command to install, works immediately.
- **Built-in browser tools.** Screenshots, clicking, typing, network capture — works on any tab, no plugin needed.
- **Build your own.** Scaffold a plugin in one command, publish to npm, anyone can install it. Or point your AI at any website — it discovers the APIs and builds the plugin for you. [Plugin Development guide](https://opentabs.dev/docs/guides/plugin-development)
<p align="center">
<br>
<img src="assets/demo-install-plugin.gif" alt="Demo: installing a Reddit plugin and immediately using it to create a post" />
<br>
<sub>Install a plugin, use it immediately — no restart needed</sub>
<br><br>
</p>
## Security
- **Everything starts off.** No tool executes until you explicitly enable it.
- **Code review built in.** Your AI reviews the plugin source before you enable it.
- **Version-aware.** Permissions reset when a plugin updates.
- **Three permission levels.** Off, Ask (confirmation dialog), or Auto — per-plugin or per-tool.
- **Runs locally.** No cloud. Full audit log. Anonymous [telemetry](https://opentabs.dev/docs/reference/telemetry) (opt-out).
## Contributing
```bash
git clone https://github.com/opentabs-dev/opentabs.git
cd opentabs && npm install && npm run build
npm run dev # tsc watch + MCP server + extension
npm run check # build + type-check + lint + knip + test
```
[Development Setup guide](https://opentabs.dev/docs/contributing/dev-setup) · [Discord](https://discord.gg/vDQDRz6S)
## License
[MIT](LICENSE) — Not affiliated with or endorsed by any third-party service. [Full disclaimer](DISCLAIMER.md).
---
<p align="center">
<a href="https://opentabs.dev/docs"><strong>Docs</strong></a> ·
<a href="https://opentabs.dev/docs/quick-start">Quick Start</a> ·
<a href="https://opentabs.dev/docs/guides/plugin-development">Plugin Development</a> ·
<a href="https://opentabs.dev/docs/sdk/plugin-class">SDK Reference</a> ·
<a href="https://opentabs.dev/docs/reference/browser-tools">Browser Tools</a> ·
<a href="https://opentabs.dev/docs/reference/cli">CLI Reference</a>
</p>
<p align="center"><sub>Built with <a href="https://github.com/anthropics/claude-code">Claude Code</a>, <a href="https://github.com/anomalyco/opencode">OpenCode</a>, <a href="https://github.com/snarktank/ralph">Ralph</a>, and <a href="https://github.com/Logging-Studio/RetroUI">RetroUI</a>.</sub></p>
TDQS
Scored across 42 tools
Tools are logically grouped by prefix (browser_, extension_, plugin_) with distinct purposes within each domain. While some similarity exists between content retrieval tools (browser_get_page_html vs browser_get_tab_content vs browser_get_resource_content), the descriptions clearly differentiate raw HTML, visible text, and cached resources respectively.
All 42 tools follow a rigorous snake_case convention with consistent prefix_verb_noun structure (e.g., browser_click_element, extension_get_state, plugin_analyze_site). No mixing of camelCase or kebab-case; verb choices are standardized across the surface.
At 42 tools, this significantly exceeds the 25+ threshold defined as 'too many' for appropriate scope. While the server covers browser automation, extension management, and plugin development, the surface is bloated with granular single-purpose tools that could potentially be consolidated (e.g., paired enable/disable operations).
Comprehensive coverage across all three domains: full browser lifecycle and interaction (tabs, navigation, DOM, network, storage), extension debugging and control, and plugin security review workflows. Minor gaps include lack of localStorage/sessionStorage modification (only get) and absence of bulk cookie operations.