Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@dokobot/cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@dokobot/cli
Connect your browser to AI agents. Free and privacy-first. Powered by Dokobot.
Supports Chrome, Edge, and Brave on macOS, Linux, Windows, and WSL2. Arc is supported on macOS, Windows, and WSL2.
- Free forever. Local mode gives you unlimited reads with no API key, no account, no usage limits.
- Privacy-first. Local mode keeps all data on your machine. Remote mode supports end-to-end encryption so the server never sees your content in plaintext.
- Works with any AI agent. Claude Code, Cursor, Codex, Hermes Agent, OpenClaw, WorkBuddy, Windsurf, or any tool that speaks MCP.
Install
npm i -g @dokobot/cliPrerequisites
Install the Dokobot extension first. The CLI connects to your browser through this extension. Works with Chrome, Edge, Brave, and Arc — all support Chrome Web Store extensions.
Quick Start
Local mode (free, unlimited)
dokobot install-bridge # Install native messaging bridge (one-time)
dokobot install-skill --id <skillId> # Install a skill (get ID from https://dokobot.ai/skill)
dokobot read --local https://dokobot.ai/aboutRemote mode (cloud API)
dokobot config # Configure your API key
dokobot install-skill --id <skillId> # Install a skill (get ID from https://dokobot.ai/skill)
dokobot read https://dokobot.ai/about
dokobot search "latest AI news"Running under Codex (or other sandboxed agents)
Codex executes shell commands inside a sandbox by default. dokobot needs to talk to a local browser bridge over a Unix socket, which the sandbox blocks — you'll see errors like No local bridge running or Bridge process not responding even though the bridge is actually up.
dokobot install-bridge writes the required rule to ~/.codex/rules/default.rules for you when it detects an existing ~/.codex/ directory. dokobot uninstall-bridge removes the rule once the last bridge is uninstalled.
If you only use remote mode (no install-bridge), or if you're driving dokobot from Codex without going through install-bridge, add this manually and restart Codex:
prefix_rule(
pattern = ["dokobot"],
decision = "allow",
justification = "Dokobot CLI runs outside the Codex sandbox.",
)See the Codex rules documentation for details. Other sandboxed agents have similar mechanisms; check their docs.
Commands
read <url>
Read a web page and output clean text.
# Local mode (free, unlimited, no API key needed)
dokobot read --local https://dokobot.ai/about
# Remote mode (via cloud API)
dokobot read https://dokobot.ai/about
# With options
dokobot read --local https://dokobot.ai/about --screens 3 --timeout 30
dokobot read https://dokobot.ai/about --device <id> --format chunks| Option | Description |
|---|---|
--local |
Connect directly to your local browser |
--device <id> |
Target device ID |
--screens <n> |
Number of screens to capture (default: auto) |
--timeout <seconds> |
Read timeout in seconds (default: 60) |
--format <type> |
Response format: text (default) or chunks |
--reuse-tab |
Reuse existing tab instead of opening a new one |
--session-id <id> |
Continue from a previous session |
-o, --output <file> |
Write output to a file instead of stdout |
When a page has more content to scroll, the output includes a session ID. Use --session-id to continue reading.
If the target page appears to be blocked by Cloudflare, the CLI prints a warning so you know the returned text may not be the real page content.
# Save output to a file
dokobot read --local https://dokobot.ai/about -o page.mddownload images <url>
Download images from a web page through the browser extension. Works for images behind login, private galleries, or pages that require scrolling to lazy-load.
Requires the Dokobot browser extension v0.2.0 or later.
# Local mode — files stream straight to disk, no size limit
dokobot download images --local https://dokobot.ai/about
# Remote mode — images come back encrypted when E2E is enabled
dokobot download images https://dokobot.ai/about -o ./pics
# Filter by dimensions, format, and count
dokobot download images --local https://dokobot.ai/about --min-width 800 --format jpg,png --max 20| Option | Description |
|---|---|
--local |
Connect directly to your local browser |
--device <id> |
Target device ID |
-o, --output <dir> |
Output directory (default: ~/Downloads/dokobot/<timestamp>) |
--screens <n> |
Number of screens to scroll for lazy-loading (default: auto) |
--reuse-tab |
Reuse existing tab matching the URL instead of opening a new one |
--min-width <n> / --max-width <n> |
Filter by image width in px |
--min-height <n> / --max-height <n> |
Filter by image height in px |
--format <list> |
Comma-separated formats (e.g. jpg,png,webp) |
--max <n> |
Maximum number of images to download |
--min-size <size> / --max-size <size> |
Filter by file size (e.g. 500, 10k, 2m) |
--include-bg |
Also collect CSS background-image URLs |
--timeout <seconds> |
Extraction timeout in seconds (default: 90) |
screenshot <url>
Capture a full-page (scrolling) screenshot via the browser extension. Output is JPEG.
Requires the Dokobot browser extension v0.3.0 or later.
# Local mode — file is written directly to disk
dokobot screenshot --local https://dokobot.ai/about -o page.jpg
# Remote mode — bytes come back encrypted when E2E is enabled
dokobot screenshot https://dokobot.ai/about -o page.jpg
# Cap how far down the page to capture (default: 20 screens)
dokobot screenshot --local https://en.wikipedia.org/wiki/Anthropic --max-screens 3 -o top3.jpg| Option | Description |
|---|---|
--local |
Connect directly to your local browser |
--device <id> |
Target device ID |
-o, --output <file> |
Output file path (default: ~/Downloads/dokobot/<timestamp>/screenshot.jpg) |
--max-screens <n> |
Maximum number of screens to capture (default: 20) |
--reuse-tab |
Reuse existing tab matching the URL instead of opening a new one |
--timeout <seconds> |
Screenshot timeout in seconds (default: 90) |
The screenshot uses Chrome DevTools Protocol to capture beyond the viewport, so the browser tab does not need to be focused or visible. Dokobot's own overlays and popup iframe are hidden during capture.
--max-screens is also a hard upper bound — the capture is always clipped to this many viewports, never beyond. This protects Chrome from running out of memory on infinite-scroll feeds (X/Twitter, Threads, old reddit) or runaway SPAs that report a content height of hundreds of thousands of pixels. If the page is taller than the cap and you didn't specify --max-screens explicitly, the CLI prints a one-line warning to stderr suggesting a larger value.
stdout is JSON: { page: { url, title, ... }, image: { url: "file://...", filename, size, contentType, width, height, pageHeight, truncated? } }.
search <query>
Search the web and return results.
dokobot search "dokobot mcp integration"
dokobot search "latest AI news" --num 10| Option | Description |
|---|---|
--num <n> |
Number of results, 1-10 (default: 5) |
install-bridge
Install the native messaging bridge for local mode. This connects your CLI directly to the browser extension without going through the server. Supports Chrome, Edge, Brave, and Arc.
dokobot install-bridge # Interactive single-browser selection
dokobot install-bridge --browser chrome # Install for Chrome only
dokobot install-bridge --browser arc # Install for Arc onlyinstall-bridge installs one browser at a time. After writing the native messaging files, it waits for the browser extension to connect:
- Make sure Dokobot is installed from https://dokobot.ai/install.
- Restart the selected browser, or reload the Dokobot extension.
If activation does not complete, send feedback at https://dokobot.ai/feedback.
WSL2: On Windows Subsystem for Linux, the bridge is installed to the Windows side automatically. The CLI writes a .bat launcher, native messaging manifest, and registry keys so that Windows Chrome/Edge/Brave/Arc can communicate with Node.js running inside WSL2.
uninstall-bridge
Remove the native messaging bridge installation.
dokobot uninstall-bridge # Interactive single-browser selection
dokobot uninstall-bridge --browser chrome # Remove bridge from Chrome onlyuninstall-bridge removes one browser at a time. After uninstalling, restart the selected browser or reload the Dokobot extension.
install-skill
Install a skill from the Skill Gallery for your AI agent. Browse the gallery to find skills and copy their IDs.
Before installing a skill, complete the Dokobot setup guide: https://dokobot.ai/guide
dokobot install-skill --id <skillId> # Install a specific skill (get ID from the Skill Gallery)
dokobot install-skill --id <skillId> --agent claude-code # Install for a specific agent
dokobot install-skill --id <skillId> -o ./my-skills # Custom skills directory| Option | Description |
|---|---|
--agent <name> |
Target agent(s), comma-separated |
--id <skillId> |
Install a specific skill by its ID from the skill gallery |
-o, --output <path> |
Custom skills directory |
Supported agents: antigravity, claude-code (or claude), codebuddy, codex, cursor, hermes (or hermes-agent), openclaw, opencode, qwen-code (or qwen), trae, windsurf, workbuddy.
uninstall-skill
Remove an installed skill by its ID from all detected agents.
dokobot uninstall-skill --id <skillId>| Option | Description |
|---|---|
--id <skillId> |
(required) The skill ID to uninstall |
doko list
List available devices, including local bridges and remote dokos.
dokobot doko listShows local bridges (connected via native messaging) and remote dokos (connected via cloud API) with their online/offline status. When available, each entry also includes the browser and extension version.
close <sessionId>
Close an active read session and release the browser tab. The CLI auto-routes: local bridge if one is running, otherwise the remote API.
dokobot close <sessionId>| Option | Description |
|---|---|
--device <id> |
Target device ID (when multiple local bridges run) |
Legacy aliases
dokobot doko close <sid>anddokobot doko close-session <sid>remain available.
feedback
Send feedback or report a bug directly from the CLI.
dokobot feedback # Interactive mode
dokobot feedback -t bug -m "Something broke" -e me@example.com # Non-interactive| Option | Description |
|---|---|
-t, --type <type> |
Feedback type: bug, feature, general |
-m, --message <text> |
Feedback message (opens $EDITOR if omitted) |
-e, --email <email> |
Email for follow-up (optional) |
In interactive mode, the CLI prompts you to select a type, opens your editor for the message, and optionally asks for an email. If you have an API key configured, the feedback is linked to your account.
config
View or edit CLI configuration. Supports both interactive editing and non-interactive set/get/unset for scripts and AI agents.
dokobot config show # Show current configuration
dokobot config # Edit configuration interactively
# Non-interactive (script- and agent-friendly)
dokobot config set apiKey <key> # Set API key
dokobot config set serverUrl https://dokobot.ai
dokobot config set encryption <password> # Enable E2E encryption (requires apiKey)
dokobot config get apiKey # Print value to stdout
dokobot config get encryption # "enabled (key version N)" or "disabled"
dokobot config unset apiKey # Remove a field
dokobot config unset encryption # Disable E2E encryptionValid keys: apiKey, serverUrl, encryption.
Exit codes: get exits non-zero when a scalar field is unset; set/unset exit non-zero on errors (unknown key, wrong password, missing apiKey, etc.). Errors go to stderr, values go to stdout — safe for $(dokobot config get serverUrl).
The encryption key is a feature switch: the set value is the password, but only the derived AES key is stored on disk (never the password itself). set encryption requires apiKey to be configured first, because the key derivation needs to fetch the salt from the server.
update
Check for and auto-install CLI updates. Auto-update runs in the background on every CLI invocation (once per 24 hours). New versions take effect on the next run.
dokobot update # Check now and trigger update
dokobot update --status # Show install source, channel, and auto-update state
dokobot update --channel stable # Switch to stable channel (lags latest by ~1 week)
dokobot update --channel latest # Switch to latest channel (default)
dokobot update --disable # Disable background auto-update
dokobot update --enable # Re-enable background auto-updateDisable auto-update entirely with the DOKOBOT_DISABLE_AUTO_UPDATE=1 environment variable.
Auto-update is supported for npm i -g installs. If you installed via pnpm, yarn, bun, or Volta, the CLI will detect the install source and show a manual update command instead.
telemetry
Manage anonymous usage metrics. See the Telemetry section below for what is collected and why.
dokobot telemetry status # Show current state and install id
dokobot telemetry disable # Opt out
dokobot telemetry enable # Opt back in
dokobot telemetry reset-consent # Forget the install id and re-show the notice on next runEnd-to-End Encryption
Remote reads, image downloads, and screenshots support end-to-end encryption. When enabled, page content and binary bytes are encrypted on the server and only decrypted locally by your CLI.
dokobot config # Set encryption password during interactive setup
dokobot config set encryption <password> # Or non-interactivelyYou can also set the password via the DOKO_ENCRYPTION_PASSWORD environment variable or the --password flag. The CLI uses scrypt key derivation with AES-256-GCM encryption.
If encryption is configured, remote read results, download images bytes, and screenshot bytes are automatically encrypted and decrypted. The CLI will warn if the server returns unencrypted data when a key is configured, and fail fast if the encryption key doesn't match.
Global Options
| Option | Description |
|---|---|
--api-key <key> |
API key (or set DOKO_API_KEY env) |
--password <password> |
Encryption password (or set DOKO_ENCRYPTION_PASSWORD env) |
--server <url> |
Server URL (default: https://dokobot.ai) |
--verbose |
Enable verbose logging |
Telemetry
This CLI collects anonymous usage metrics to help us diagnose onboarding failures: command success/failure, error classifications, OS / Node / CLI versions, and an anonymous install id. It does not collect URLs, page content, API keys, or anything from config and --version. The first time you run a real command, a one-time notice appears on stderr. Telemetry runs in a detached background process and never blocks the CLI.
Opt out:
dokobot telemetry disable # persistent
export DOKOBOT_TELEMETRY_DISABLED=1 # per-shell or CILicense
MIT