Uni-CLI

One command for every interface: agents search, run, and inspect real software across APIs, browsers, desktops, local tools, and MCP, with a structured receipt for every call.

Stars
★ 232
Last updated
6d ago
License
Apache-2.0
Primary language
TypeScript

At a glance

How it runs
CLIMCP server
Works with
Universal · cross-platformChatGPT · Codex · Claude Code
Cost
Free, no paid service needed
Setup effort
Low · running in minutes
You'll need
Node.js 22.19+npmChrome 136+ caveat for remote debugging on default user-data directoryShell / CLINetwork accessLocal filesystemMCP Server
Typical use
A developer using coding agents (Claude Code, Codex, Cursor) needs a CLI or MCP tool to fetch and export data from sites like arXiv, OpenReview, and Hacker News with machine-readable JSON/YAML output.
Not a fit if
  • Teams that need fully offline operation with no browser available
  • Users on Chrome below 136 or unwilling to configure browser debugging
  • People who want a GUI instead of a terminal command
Source review
72/100 · Some gaps

What does this agent do, and when should you use it?

Uni-CLI is an Apache-2.0 licensed CLI runtime that turns natural-language intent into a selected operation and a structured receipt across web, browser, desktop, local subprocess, and MCP surfaces. Its static catalog ships 338 sites, 1891 registered commands, and 1268 adapters, and routes each task to the strongest operator with the smallest effective scope—structured APIs, a local runtime, browser protocol via CDP, desktop accessibility trees, or visual computer use. Every invocation returns a stable success/error envelope (schema_version 2); failures carry code, adapter_path, step, suggestion, and retryability. Adapters are readable YAML files, so drift can be fixed with unicli repair at the owned boundary or promoted through evolve adapter's paired and held-out evaluation gate. The tool supplies only the interface runtime—model, planner, agent loop, and sandbox stay independent choices—reachable from any host via the native CLI or MCP over stdio and Streamable HTTP.

The execution model is intent → candidate operations → explicit selection → policy → substrate → receipt. Concretely: unicli search performs compiled bilingual retrieval and returns a small ranked set with selection evidence; the caller selects one operation with a declared strategy and substrate; open/confirm/locked permission profiles evaluate effect and capability scope; then an adapter, core command, browser (CDP navigation, semantic actions, snapshots, screenshots), desktop (AX/UIA/AT-SPI control trees), or protocol path executes. Every command returns a stable ok/error envelope with code, adapter_path, step, suggestion, and retryable fields. On failure, unicli repair <site> <command> reruns the command as a bounded subprocess and saves an override under ~/.unicli/adapters/, or unicli evolve adapter submits one isolated YAML candidate that must pass paired baseline evaluation, prediction checks, and held-out cases before promotion. Desktop actions go through unicli compute apps/snapshot/find/click, preferring accessibility references. MCP access runs via npx @zenalexa/unicli-mcp or unicli mcp serve, exposing four meta-tools in the default profile.

  1. A developer using coding agents (Claude Code, Codex, Cursor) needs a CLI or MCP tool to fetch and export data from sites like arXiv, OpenReview, and Hacker News with machine-readable JSON/YAML output.
  2. A researcher needs authenticated, resumable conference archives, e.g. unicli --auth-retry openreview conference to pull multi-year records.
  3. An automation engineer needs to drive native desktop apps, such as clicking a macOS Calculator button via the accessibility tree instead of pixel screenshots.
  4. A team running its own agent pipelines uses repair/evolve to patch adapters locally when upstream sites drift, promoting changes only after evaluation passes without touching source or Git state.
  5. A security-minded operator governs browser, file, clipboard, subprocess, and desktop side effects with open/confirm/locked profiles, deny rules, recordings, and replay evidence.

How do you install or deploy this agent?

Requires Node.js 22.19 or newer. Install globally: npm install -g @zenalexa/unicli. Check updates with unicli upgrade --check -f and upgrade with unicli upgrade; persistent non-interactive agent installations auto-update in a detached worker by default, and unicli upgrade --no-auto-update switches back to explicit approval. For development: clone the repo, run npm install, then npm run typecheck, npm run lint, npm test, and npm run verify (full E2E and adapter coverage, required before release).

How do you use this agent?

Start with unicli search "list the top Hacker News stories" to discover operations, then execute unicli hackernews top --limit 3 -f . Inspect a surface with unicli list --site reddit and browser delivery state with unicli browser doctor --. Piped output defaults to Markdown; use -f /yaml/csv/compact for stable machine formats. For MCP hosts, configure {"mcpServers":{"unicli":{"command":"npx","args":["-y","@zenalexa/unicli-mcp"]}}} or run npx -y @zenalexa/unicli mcp serve, then check the projection with unicli mcp health -f . Desktop flow: unicli compute apps --format compact → snapshot → find --role AXButton → click --ref <ref>. Authenticate with unicli auth setup <site>; repair drift with unicli repair <site> <command>.

What are this agent's strengths and limitations?

Pros
  • Explicit task-boundary routing: structured APIs, local runtime, browser protocol, accessibility trees, and visual computer use are chosen by smallest effective scope, and a failed path keeps its original cause plus a repair command.
  • Adapters are readable, locally replaceable YAML; repair only reruns a bounded subprocess and succeeds only when the target returns ok:true with exit code 0, and overrides survive npm updates.
  • Every command returns a schema_version 2 stable envelope with exit codes distinguishing success, empty results, missing dependencies, temporary failures, auth, and configuration—easy for agents to handle programmatically.
  • Clear trust boundaries: browser cookies stay in process memory by default, permission rules authorize before side effects, malformed policies fail closed, and diagnostics exclude arguments, content, URLs, and credentials.
Limitations
  • Requires Node.js 22.19+, and Chrome 136+ does not support remote debugging on its default user-data directory, so browser delivery must be verified via browser doctor with the documented repair.
  • Full verification requires npm run verify (complete E2E and adapter coverage), a substantial local cost for contributors.
  • Visual routes require a real configured backend; missing providers return a structured error with no hidden fallback.
  • The evolve promotion scope is strictly constrained: operation identity, I/O contracts, pipeline topology, request methods and headers, and subprocess invocations stay fixed, and replacing a network origin requires an explicit --allow-origin declaration.

How does this agent compare with similar options?

The repository references integration with coding agents (Claude Code, Codex, Cursor), but Uni-CLI positions itself as the interface runtime beneath such agents rather than a competing product; the source names no direct like-for-like alternative.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
Uni-CLI This agent 72 · Some gaps CLIFree ★ 232 6d ago TypeScript ChatGPT · Codex · Claude Code
OpenTabs 49 · Major gaps CLIFree + model costs ★ 994 2mo ago TypeScript Claude Code
Stagehand: The AI Browser Automation Framework 47 · Major gaps Library / SDKFree + model costs ★ 26k 1d ago TypeScript —
CamoFox Browser Server 72 · Some gaps Self-hosted serviceFree ★ 428 1mo ago JavaScript Claude Code

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Some gaps
72/ 100 5-point scale 3.6 / 5
This review covers the source as of Sep 10, 2026. The project has shipped 1 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 19/29
Reliability 11/14
Adaptability 14/18
Convention 13/18
Effectiveness 10/13
Verifiability 5/8
Why each dimension lost points
Trust19 / 29 · 3.3/5

Evidence is strong on sensitive data: SECURITY.md specifies 0700/0600 cookie permissions, explicit persistence commands only, SSRF checks, fail-closed malformed policies, and diagnostics excluding arguments/credentials (3 for sensitive_data_handling). Least privilege, confirmation (Y/N update, confirm/locked profiles, scoped approvals), and external-effects governance are documented, but implementation details rely on docs/guide/trust.md which was not supplied, so 2. Automatic updates default to a detached worker (opt-out only), a permissive default for unattended agents — deducted. Identity is inconsistent: npm author is ZenAlexa, LICENSE copyright is OLo (olo-dot.io), publisher unverified; source_attribution 1.

Reliability11 / 14 · 3.9/5

Failure handling is excellent: stable error envelopes with adapter_path, step, suggestion, retryable, and classified exit codes (3). Self-consistency is backed by stats:check and truth:check gates, but Cargo workspace version 0.218.0 diverges from npm 1.2.1 (presumably sidecars only), so 2. Dependency availability is supported by browser doctor and Node 22.19+ pinning across multi-OS CI, but full degradation strategy is not shown (2).

Adaptability14 / 18 · 3.9/5

Audience (agent developers) and scenarios (API/browser/desktop/local/MCP) are clearly delineated with a routing decision table (3). Capability boundaries are stated (visual routes need explicit backend, quarantine mechanism, Chrome 136+ caveat) but much detail lives in unsupplied trust.md, so 2. Trigger precision is supported by the task-boundary table and explicit selection; environment fit covers Linux/macOS/Windows CI with cross-compiled Rust sidecars (2 each).

Convention13 / 18 · 3.6/5

Information architecture is excellent: catalog grid, operation contract, generated docs site (3). Install notes are concise but thin beyond global install (2). Full Apache-2.0 text matches metadata (3). Changesets and a generated release history exist, but no CHANGELOG.md body was shown (2). Maintenance responsibility is weak: a single personal email (connect.ust.hk) for security, unclear governance, and a support table referencing 'latest 0.x' while npm is at 1.2.1 — deducted to 1. Naming is consistent (2); examples are plentiful but no FAQ (2); known limitations are scattered across README/SECURITY (2).

Effectiveness10 / 13 · 3.8/5

Output usability is strong: multiple formats, schema_version, meta, and dual CLI/MCP agent entry points (3). Marginal value lies in the unified multi-surface runtime and self-repair/evolve workflow, but these value claims were not execution-verified (2). Cost/benefit is reasonable — local, no mandatory cloud — yet the maintenance burden of 1891 commands and adapter drift risk is unquantified (2).

Verifiability5 / 8 · 3.1/5

Claims are traceable: README statistics are CI-generated with stats:check and truth:check gates (2 — figures like 10389 tests cannot be independently confirmed in this static review). Cross-source corroboration holds across README, package., CI workflows, and SECURITY.md (2, minus for the Cargo/npm version split and author-vs-copyright mismatch). Fact/inference separation is good: docs explicitly defer security claims to actual audit results rather than asserting them (2).

Risks and how to mitigate them
  • Publisher identity is unverified and the npm author (ZenAlexa) differs from the copyright holder (OLo); verify supply-chain provenance before adoption.
  • Automatic updates default to a detached worker; in unattended agent environments explicitly set --no-auto-update and pin versions.
  • auth import / browser cookies persist plaintext JSON cookies under ~/.unicli/cookies/ with hardening on POSIX only; Windows relies on filesystem ACLs — avoid on shared hosts.
  • Cargo sidecar version (0.218.0) diverges from npm version (1.2.1); check sidecar compatibility when upgrading.
  • The claimed 10389 tests and CI gates are static assertions not verified in this review; run npm run verify yourself before critical deployment.
Evidence confidence: Low Reviewed Sep 10, 2026 Reviewed revision aed1a389b748 New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v1.3.0 v1.3.0 — 2026-10-10 — Artemis · Rubins
    Release notes excerpt
    Minor Changes - Add retrieval acquire to discover resources, download assets, and save structured documents through one bounded workflow. Reuse source ranking, deduplicate URLs, publish completed files atomically, and retain per-resource recovery details. Reuse site credentials from persisted records and the selected browser profile. Refresh declared HTTP cookies once after a read-only command reports authentication failure. CLI, MCP, ACP, and hub calls share this recovery path; --no-auth-retry disables automatic credential recovery. Direct document reads and downloads acquire cred …
    View on GitHub ↗
  2. v1.2.1 v1.2.1 — 2026-08-21 — Artemis · Wiseman
    Release notes excerpt
    Full Changelog: https://github.com/olo-dot-io/Uni-CLI/compare/v1.2.0...v1.2.1
    View on GitHub ↗
  3. v1.2.0 v1.2.0 — 2026-08-11 — Artemis · Hansen
    Release notes excerpt
    What's Changed * feat: ship harness evolution kernel by @ZenAlexa in https://github.com/olo-dot-io/Uni-CLI/pull/118 Full Changelog: https://github.com/olo-dot-io/Uni-CLI/compare/v1.1.1...v1.2.0
    View on GitHub ↗

FAQ

Does it lock me into a specific model or agent framework?
No. Uni-CLI supplies only the interface runtime; the model, planner, agent loop, and sandbox are independent choices, reachable via the native CLI or MCP (stdio, Streamable HTTP, ACP) from any host.
How are my credentials handled?
Browser cookies remain in process memory unless you explicitly run auth import or browser cookies. Automation uses Uni-CLI-owned profiles under ~/.unicli/, and permission rules authorize before browser, file, clipboard, subprocess, or desktop side effects.
What happens when a site changes and a command breaks?
The error envelope includes code, adapter_path, step, and suggestion. Run unicli repair <site> <command> to verify a fix at the owned boundary—the override is saved under ~/.unicli/adapters/. For repeated failures, use evolve adapter to submit a YAML candidate that must pass paired and held-out evaluation.
Will updates disrupt long-running agents?
Non-interactive installations update in a detached worker by default, reporting progress through meta.update.automatic_update; interactive terminals keep a Y/N choice, and --no-auto-update restores explicit approval.
How broad is the coverage?
The static catalog includes 338 sites, 1891 commands, 1268 adapters, and 113 pipeline actions, plus 25 desktop sites; the generated operation catalog is the authoritative inventory.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents