OpenCLI: A Command Line Front End for Your Logged-In Chrome Session
Make Any Website into CLI & Use your logged-in browser by AI agent.
At a glance
- What is it?
- OpenCLI turns websites, browser sessions, and local tools into deterministic command line interfaces. It targets both humans who want quick commands and AI agents that need a stable way to drive a real browser.
- Who is it for?
- Adopt OpenCLI if you want a deterministic, scriptable interface for sites you already log into, or if your AI agent needs a browser bridge that uses your existing session instead of a separate automation profile. Skip it if you need headless scraping at scale, because the project explicitly depends on a live Chrome profile and a browser extension.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 7 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- jackwener/OpenCLI31,079 ★ · +3,747
| Repository | 2026-07-28 | 2026-11-14 |
|---|---|---|
| jackwener/OpenCLI | 27.3k | 31.1k |
3,747 Stars in the last 109 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What OpenCLI Actually Solves
The project bundles three distinct capabilities under one command. First, built-in adapters for sites like Bilibili, Zhihu, Xiaohongshu, Reddit, HackerNews, Twitter/X. Second, a browser skill that lets AI agents operate any page through your logged-in Chrome. Third, a way to write your own adapters end-to-end. It also acts as a CLI hub for local binaries like `gh`, `docker`, and `tg`. That breadth is both the appeal and the risk: you get one tool for many jobs, but each job has its own failure modes.
The Architecture: Browser Bridge, Daemon, and DOM Snapshots
OpenCLI's mechanism is visible in the setup steps. It connects to Chrome through a Browser Bridge extension plus a small local daemon that auto-starts when needed. The extension, installed from the Chrome Web Store or loaded unpacked, is what gives OpenCLI access to your logged-in session. The daemon likely communicates with the extension over a local channel, and the `opencli` command talks to the daemon. The `opencli browser` primitives let an agent navigate, click, type or fill, extract, and inspect pages. The agent handles those commands internally, so the human only describes the goal in natural language.
Installation and First Commands: Real Steps from the README
The README gives two installation paths. For desktop use on macOS or Windows, the recommended route is OpenCLIApp, downloaded from opencli.info/download. That app bundles the runtime, keeps the `opencli` command installed, and adds a system tray UI for setup, diagnostics, and updates. For CLI-only use, CI, or servers, you install via npm: `npm install -g @jackwener/opencli`. The npm path requires Node.js >= 20.18.1, so check `node --version` first. After installation, you need the Browser Bridge extension. The recommended path is the Chrome Web Store listing, but there is a manual fallback: download the extension zip from GitHub Releases, unzip it, open `chrome://extensions`, enable Developer mode, and load the unpacked folder. Then run `opencli doctor` to verify connectivity. The README also covers multi-profile handling: `opencli profile list`, `opencli profile rename <contextId> work`, and `opencli profile use work`. If you have multiple connected profiles and no default, OpenCLI asks you to choose rather than guessing. That is a sensible safety measure, but it means your automation scripts must set a profile explicitly or they will stall on a prompt.
The Skill System: How AI Agents Get Their Instructions
The AI agent integration relies on a set of skills installed via `npx skills add jackwener/opencli`. The README lists six skills: `opencli-adapter-author`, `opencli-autofix`, `opencli-browser`, `opencli-browser-sitemap`, `opencli-sitemap-author`, and `opencli-usage`. Each skill maps to a different task. `opencli-browser` is the core one for ad-hoc driving of a page. `opencli-adapter-author` guides writing a reusable adapter for a new site. `opencli-autofix` repairs a broken adapter when a built-in command returns empty. The sitemap skills let an agent consume site sitemap context to avoid blind clicking. This is a thoughtful split: the browser skill handles the generic case, while the sitemap and author skills handle the long tail of site-specific quirks. The system is designed so the agent, not the human, invokes the `opencli browser` commands. The human just says something like "Help me check my Xiaohongshu notifications." That division of labor is practical, but it also means the quality of the result depends heavily on the agent's ability to follow the skill instructions. If the agent misuses the primitives, you get the same kind of flaky automation that OpenCLI claims to avoid.
Extending OpenCLI: Adapters, Plugins, and Ejected Commands
OpenCLI provides several extension paths, each with a different scope. For personal website commands kept in your own Git repo, the README suggests `opencli plugin create` followed by `opencli plugin install file://...`. For a quick private draft, you can run `opencli adapter init <site>/<command>` inside `~/.opencli/clis/`. To modify an official adapter, you eject it with `opencli adapter eject <site>` and later reset it with `opencli adapter reset <site>`. Third-party commands install via `opencli plugin install github:user/repo`. Local binaries register with `opencli external register <name>`. The eject/reset cycle is a notable design point: it acknowledges that official adapters will break when sites change, and gives you a way to patch them locally without forking the whole project. But ejected adapters become your responsibility. When the site markup changes again, you own the fix. The README points to a separate guide for the directory layout and source-control model, which suggests the extension system is non-trivial and not fully documented in the main README.
Limitations and Failure Modes
The most obvious limitation is the hard dependency on a live Chrome session. OpenCLI is not a headless scraper. It needs the Browser Bridge extension installed and a Chrome profile connected. If you run it in a CI environment without a display, you will need to arrange for a Chrome instance with the extension loaded, which is a significant operational burden. The README explicitly positions the npm install as suitable for CI and servers. A second limitation is the adapter fragility. The README includes `opencli-autofix` as a skill for repairing broken adapters, which is an admission that built-in commands will fail. When a site changes its HTML structure or API responses, the adapter breaks. The autofix skill presumably helps, but it still requires an agent to diagnose and patch the adapter. A third limitation is the multi-profile ambiguity. With multiple Chrome profiles connected and no default, OpenCLI asks you to choose. That is safe, but it breaks unattended automation unless you explicitly set a profile.
Alternatives: Browser Use and Site-Specific Scrapers
The README itself mentions "Browser Use" as a concept, and there is a separate open-source project called Browser Use that provides a Python library for AI agents to control a browser. The difference in approach is significant. Browser Use typically runs its own browser instance, often headless or with a dedicated profile, and it uses computer vision or DOM extraction depending on the configuration. OpenCLI instead insists on your logged-in Chrome and works through your logged-in Chrome. That means OpenCLI can access sites that require your existing authentication, while Browser Use would need you to handle login separately. On the other hand, Browser Use is a general-purpose library with a larger ecosystem of integrations, whereas OpenCLI is a self-contained CLI with its own skill system. For simple site-specific tasks, a dedicated scraper like `youtube-dl` or a custom script using `curl` and `jq` might be lighter than installing OpenCLI and running a Chrome extension. OpenCLI's value only appears when you want a uniform interface across many sites or when you want your AI agent to act on your behalf in a real browser session.
Maintenance and License
The repository is licensed under Apache-2.0, which means you can use, modify, and distribute it, including for commercial purposes, as long as you preserve the license notice and state changes. The project is not archived, and the last push was 26 October 2026 and the latest release is v2.0.2 (20 October 2026). That suggests active maintenance, but the maintenance burden is uneven. The core CLI and adapter system need updates to keep up with Node.js and Chrome changes. The browser extension must track Chrome's extension API changes. The built-in adapters must track each site's markup. The README's own `opencli-autofix` skill is a response to that ongoing cost. Upgrading OpenCLI is not a one-time event; it is a recurring chore for anyone relying on the built-in adapters. The npm package is named `@jackwener/opencli`, and the extension is distributed separately (the Chrome Web Store or an `opencli-extension-v{version}.zip` release asset), so you have two components to keep in sync. Verify the extension version matches the CLI version before assuming a feature works.
Editorial conclusion
Adopt OpenCLI if you want a deterministic, scriptable interface for sites you already log into, or if your AI agent needs a browser bridge that uses your existing session instead of a separate automation profile. Skip it if you need headless scraping at scale, because the project explicitly depends on a live Chrome profile and a browser extension. Before adopting, verify your Node.js version is at least 20.18.1, confirm the Chrome Web Store extension works with your Chrome channel, and check whether the built-in adapters cover the sites you actually use. The project is Apache-2.0 licensed, so you can fork it, but the maintenance cost depends on the browser extension staying compatible with Chrome updates and on the adapter set staying current with site markup changes.
Frequently asked questions
What is OpenCLI?
OpenCLI gives you one surface for three kinds of automation: built-in adapters for sites such as Bilibili, Zhihu, Xiaohongshu, Reddit, HackerNews and Twitter/X, AI agents driving any website through your logged-in Chrome, and a way to write new adapters end-to-end with `opencli browser` and the `opencli-adapter-author` skill. The npm package is @jackwener/opencli and it needs Node.js 20.18.1 or newer.
Is OpenCLI an alternative to Claude Code?
No, they sit at different layers. Claude Code and Cursor are named as the agents you install OpenCLI's skills into, and the agent then drives your logged-in Chrome through opencli browser primitives.
How do I install OpenCLI and check that it works?
Install the runtime with npm install -g @jackwener/opencli, which requires Node.js 20.18.1 or newer, or use OpenCLIApp on macOS and Windows. Then install the OpenCLI Browser Bridge extension from the Chrome Web Store, or load an unzipped opencli-extension-v{version}.zip through Developer mode, and run opencli doctor to diagnose browser connectivity.
What happens when more than one Chrome profile is connected?
Each Chrome profile runs its own extension instance, so you can list them with opencli profile list and assign aliases with opencli profile rename. With one connected profile OpenCLI uses it automatically; with several and no default, it asks you to choose instead of guessing.
How do I repair a built-in OpenCLI command that stops working?
Use the opencli-autofix skill, which exists to repair a broken adapter when a built-in command fails. To modify an official adapter yourself, the documented path is opencli adapter eject for the site and opencli adapter reset to put it back.
What license is OpenCLI released under?
Apache-2.0, with the LICENSE file at the repository root. The repository also carries a PRIVACY.md, which is worth reading before you install the browser extension on a profile with real sessions in it.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/jackwener-opencli)Star history chart for your README
[](https://hysenlabs.com/projects/jackwener-opencli)Was this useful?