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.
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.
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).
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).
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).
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).
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).
- 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.
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.
- 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.
- A researcher needs authenticated, resumable conference archives, e.g. unicli --auth-retry openreview conference to pull multi-year records.
- An automation engineer needs to drive native desktop apps, such as clicking a macOS Calculator button via the accessibility tree instead of pixel screenshots.
- 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.
- A security-minded operator governs browser, file, clipboard, subprocess, and desktop side effects with open/confirm/locked profiles, deny rules, recordings, and replay evidence.
What are this agent's strengths and limitations?
- 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.
- 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 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>.
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.