Integrate Tabbit browser automation into DeepSeek Harness, automatically detecting browser version and runtime, and downloading compatible installation packages in the background when missing.
- Language
- JavaScript
- Branch
- main
Install
$ dsh plugin --profile web add dsh-tabbitRun the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial
Install via your agent
Install the DeepSeek Harness plugin Tabbit-Browser/dsh-plugin for me: review the repository at https://github.com/Tabbit-Browser/dsh-tabbit first, then run the install command and verify the plugin loads successfully.
Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.
One-Sentence Positioning
A DSH package branded as "Tabbit Browser" in the DSH plugin marketplace that equips DeepSeek Harness with a Skill capable of controlling the local Tabbit browser for automation operations, and automatically downloads the installer when the browser is missing or using an outdated version.
Core Capabilities
- Register a bundled Skill named
tabbit-browserin DSH, enabling the model to invoke it via/tabbit-browserorskill({ name: "tabbit-browser" }) - Provide
tabbit_browser_installtool to automatically check whether a stable Tabbit version 1.9.0 or higher is installed on the local machine - Detect
tabbit-clidaemon runtime and Playwright Runtime processes (browser-runtime-service.mjs/nodejs-playwright-runtime.mjs) - Cache detection results per agent session to reduce redundant detection overhead; use
refresh: trueto actively invalidate and re-detect - When the browser is missing or the version doesn't match, download the appropriate regional and architecture installer to the
Downloadsdirectory via DSH background tasks - Automatically select download source based on system locale (tabbit.com for Mainland China, tabbit.ai for other regions), and verify file format (exe/dmg)
Technical Implementation
- Language: JavaScript (ESM)
- Key Dependencies:
@deepseek-ai/cordis,@deepseek-ai/dsh-tools,@deepseek-ai/dsh-jobs,@deepseek-ai/dsh-skill - Architecture Pattern: DSH bundle package + Cordis patch injection; declare
inject: ['skills', 'tools', 'jobs'], inject Skill Provider viacordis.patch.ymlat host startup, and register bundled Skill and detection tool viaapply(ctx) - Entry Files:
index.js(main entry) +installer.js(environment detection and installer download implementation)
Use Cases
When users want AI agents to directly operate the local browser for web interaction, data extraction, automation testing, or evaluation tasks, this plugin exposes the Tabbit browser as a controlled Playwright runtime to the DSH model. It fits the bridging scenario where "the agent runs in sandbox, the browser runs on host GUI"; when users haven't manually installed Tabbit, the plugin can also handle the download phase for them.
Prerequisites and Compatibility
| Dependency | Minimum Version | Description |
|---|---|---|
| DSH Host | dsh CLI | Must be able to run in an environment where dsh --version executes |
| Cordis | >=4.0.0 | Internal DSH dependency, provides Skill/Tool/Job registration capability |
@deepseek-ai/dsh-jobs | >=0.1.0-rc.5 | Background task support, this plugin starts downloads via ctx.jobs.start |
@deepseek-ai/dsh-tools | >=0.1.0-rc.5 | Tool registration framework |
@deepseek-ai/dsh-skill | >=0.1.0-rc.5 | Skill Provider registration framework |
| Node.js | >=20 | Declared by package.json#engines.node |
| Platform | macOS (arm64/x64) / Windows x64 | Linux is not in the installer list; source code will throw errors |
Installation
dsh plugin --profile web add github:Tabbit-Browser/dsh-plugin
Configuration Options
| Config | Type | Description | Default |
|---|---|---|---|
tabbit_browser_install.refresh | boolean | Force re-run browser and runtime detection, discarding current session cache. Only use when Runtime/launcher errors occur or browser is updated/restarted | false |
This plugin has no DSH global configuration items; all adjustable parameters are passed as arguments when calling the tool.
FAQ
Q: Do I need to manually install Tabbit browser before using it?
A: Not required. The plugin first tries to detect whether Tabbit stable version 1.9.0 or higher is already installed on the system; if not, it automatically starts a background task to download the appropriate regional and architecture installer to the Downloads directory for the user to manually complete the native installation.
Q: Which operating systems are supported?
A: Only macOS (Apple Silicon and Intel) and Windows 64-bit. The source code only declares installer specifications for these three platform/arch combinations; Linux will error out due to not finding matching download configuration.
Q: Do I need to separately install tabbit-browser Skill after installing the plugin?
A: No. The plugin comes with a bundled Skill pre-installed; skill-tabbit-browser is inserted into the DSH host via cordis.patch.yml, and the Skill becomes visible after DSH starts.
Q: Will detection results run every time?
A: No. Successful detection results are cached in WeakMap per agent session; subsequent calls directly return cached: true. Only when Runtime/launcher fails or the browser changes, passing refresh: true will invalidate and re-run.
Q: What happens if multiple downloads run simultaneously in the same agent?
A: The plugin tracks in-progress jobs; repeated calls will return the existing jobId and prompt "a download is already in progress", preventing concurrent download tasks.
Q: How to troubleshoot CLI connection failure on Windows (BROWSER_RUNTIME_UNAVAILABLE)?
A: The plugin doesn't proactively request Full Permission. First normally call tabbit-cli tasks for connection probing; if the browser, launcher, and Runtime processes are all detected but this error persists, ask the user to switch the current DSH session to Full Permission and stop the current task, don't retry or switch browsers.
Q: What's the difference between installers downloaded by Mainland China and overseas users?
A: The plugin reads the system locale: Mainland China CN downloads the domestic version from tabbit.com ("Tabbit Browser", bundleId com.tab-browser.Tabbit), other or unknown locales download the international version from tabbit.ai ("Tabbit", bundleId com.tabbit-ai.Tabbit). Both versions are supported, but the display name and bundleId differ.
Q: How to uninstall?
A: Use dsh plugin --profile web remove github:Tabbit-Browser/dsh-plugin. The plugin doesn't modify persistent data outside the system; detection cache only exists in the current DSH agent session memory and becomes invalid upon restart.
Difficulty Level
Beginner — The installation command is a single line, and the plugin automatically handles Skill registration and browser detection; you only need to read the README's "Prerequisites" and "Scope" sections when troubleshooting Runtime connection or download failures.
Known Issues and Limitations
- Does not recognize dev builds: Only detects stable
TabbitandTabbit Browser; dev builds are ignored (installer.js hardcodeschannel: 'stable') - Does not auto-launch installer: After download completes, it only tells the user the path; the user must manually double-click
.dmg/.exe; the plugin won't open it (README.md:67 explicitly states) - Won't replace or supplement native browser tools: This plugin only exposes
tabbit_browser_install; it doesn't provide tools liketabbit_browser_evaluatefor direct browser invocation (README.md:96 explicitly states) - Windows sandbox mode limited: DSH's
read-onlyandworkspace-writemodes on Windows use restricted tokens and cannot write to Runtime named pipes; only when Browser, launcher, and Runtime are all detected but CLI connection fails, prompt the user to switch to Full Permission and stop the task, don't retry - Linux not supported:
installer.jsonly defines three platform/arch combinations for macOS and Windows; Linux is neither in the detection scope nor has available download sources (installer.js:113-140) - Multiple Tabbit instances will prompt ambiguity without error: If multiple Tabbit instances are running, detection results will mark
playwrightRuntimeAmbiguous: trueand prompt setting theTABBIT_PLAYWRIGHT_INSTANCEenvironment variable, rather than misidentifying as Runtime not running
English | 简体中文

A plugin for DeepSeek Harness (DSH) that gives the agent control over your Tabbit Browser: real pages, real login state, and real interactions, driven through tabbit-cli — the task-isolated Playwright CLI owned by the browser itself. Use it for web automation, information extraction, QA, and benchmarks.
What you get
| Component | Description |
|---|---|
tabbit-browser skill | The working guide for browser automation: persistent task spaces, locators and waits, screenshots, receipts and recovery. Discovered and loaded automatically with the plugin — no separate skill install. The model loads it via skill({ name: "tabbit-browser" }) or /tabbit-browser. |
tabbit_browser_install tool | Environment preflight: detects installed stable Tabbit editions, requires version 1.9.0 or newer, and verifies the tabbit-cli resident runtime. When Tabbit is missing or outdated, it starts a DSH background job that downloads the region-appropriate installer. |
tabbit_plugin_update tool | Plugin update check: compares the installed plugin version with the published changelog at most once a day, silently skips offline failures, and records a version the user declined. When a newer release exists, the skill loads with an update notice showing what the new version added. |
Installation
1. Check or install DeepSeek Harness
Check whether DSH is already installed:
dsh --version
If the command prints a version number, continue to the next step. If it is not found, install it for your operating system.
macOS
Install Node.js 20 or newer, then install DSH:
brew install node
npm install -g @deepseek-ai/dsh
Windows
Install Node.js LTS in PowerShell:
winget install OpenJS.NodeJS.LTS
Reopen PowerShell after the installation, then install DSH:
npm install -g @deepseek-ai/dsh
Run dsh --version again to confirm DSH works.
2. Install the tabbit-browser plugin
dsh plugin --profile web add github:Tabbit-Browser/dsh-plugin
3. Start DSH
dsh web
How it works
After installation, the bundle automatically registers its skill provider. The model loads the skill via skill({ name: "tabbit-browser" }) or /tabbit-browser. Before the first browser operation in a task, the skill calls tabbit_browser_install:
ready— a stable Tabbit edition at1.9.0or newer is installed and the runtime is running; the agent continues with thetabbit-cliworkflow.restart-required— the installed version is sufficient, but thetabbit-cliruntime is not running; the user is asked to restart Tabbit Browser once.background— no stable edition is installed, or none reaches1.9.0; the tool starts a DSH background job that reads the operating system's configured region (macOS reads the system locale, Windows calls the system region API) and downloads the matching stable installer: the domestic build fromtabbit.comfor mainland China, or the international build fromtabbit.aifor every other or unknown region. It selects the right Windows x64, macOS Apple Silicon, or macOS Intel package, saves it to the user'sDownloadsfolder, reports download progress, and notifies the absolute installer path on completion.
The environment check also:
- Treats the runtime as available when multiple Tabbit instances are running; the agent sets
TABBIT_PLAYWRIGHT_INSTANCEfrom the CLI's hint instead of reporting the instance ambiguity as an unavailable runtime. - Diagnoses the DSH sandbox mode required to invoke the CLI on the current platform: Windows reports
cliSandboxMode: danger-full-access, other platforms reportdefault. - Caches a successful environment check per agent session and re-checks only after a Runtime/launcher failure or an installation change, via
refresh: true.
Requirements
- A stable Tabbit Browser at version
1.9.0or newer: either the internationalTabbitor the domesticTabbit Browser— installing either one is enough. If it is missing or outdated, the plugin downloads the installer for you. - The current DSH profile provides
ctx.skills,ctx.tools, andctx.jobstogether with the corresponding model tools. dsh-tool-jobsprovides background job control and completion notifications for the current agent.- The current DSH profile provides a Bash/Shell tool running on the same host machine as Tabbit Browser.
- The shell's execution environment can reach the Browser-owned Runtime Service.
- On Windows, DSH's
read-onlyandworkspace-writerestricted tokens cannot write to the Runtime named pipe. The skill first runs the normaltabbit-cli tasksconnection probe and requests no permission at all when it succeeds. Only when the Browser, launcher, and Runtime processes are all detected but the connection returnsBROWSER_RUNTIME_UNAVAILABLEdoes it ask the user to switch the current DSH session to Full Permission — and it then stops the task immediately, without retrying or continuing browser operations.
Notes and limitations
- Mainland China uses the domestic
tabbit.comdownload source; all other regions use the internationaltabbit.aisource. - The background download reports progress and notifies the absolute installer path when it finishes. It never opens the
.dmg/.exeautomatically. - Development builds are not detected.
- The plugin does not provide native browser tools such as
tabbit_browser_evaluate. - If DSH's Bash runs in a sandbox such as E2B or a remote container that cannot access the local GUI browser, this skill cannot make Tabbit automation work there.
Development
npm test
npm pack --dry-run
License
MIT
Read the usage guide →
Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.
Listing badge
[](https://deepseek-plugin.org/plugins/Tabbit-Browser/dsh-plugin)Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.