Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

olo-dot-io/Uni-CLI

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

503 Commits
503 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Uni-CLI otter mascot

Uni-CLI

The agent execution substrate for the world's software.

Docs · Sites catalog · llms.txt

Search by intent, execute governed commands across web, apps, local tools, and system capabilities, then return evidence-rich AgentEnvelopes that agents can inspect and repair.

npm license Node 20+ MCP

238 sites · 1458 commands · 101 pipeline steps · 7920 tests

Web / Social / Knowledge
X Reddit Instagram TikTok YouTube Bilibili Zhihu Weibo Xiaohongshu Douyin Hacker News GitHub Stack Overflow Product Hunt npm PyPI Wikipedia Spotify IMDb Bloomberg Reuters BBC Binance Coinbase Yahoo Finance

Agent / IDE / Coding Surfaces
Claude Code Codex OpenCode Cursor Kiro Gemini Qwen Kimi MiniMax Cline Roo Code Windsurf Aider Goose OpenHands SWE-agent GitHub Copilot AgentAPI acpx

Desktop / Media / DevOps / Cloud
macOS Chrome Blender FFmpeg ImageMagick GIMP FreeCAD Audacity Docker GitHub CLI jq yt-dlp AWS Vercel Supabase Cloudflare Stripe Firebase Netlify Railway Azure Google Cloud Slack Notion Linear Figma

npm install -g @zenalexa/unicli
unicli search "hacker news frontpage"
unicli hackernews top -f json

What It Does

Uni-CLI sits under agent applications and turns software surfaces into commands that agents can discover, execute, record, and repair.

Surface What you get
Websites and APIs Declarative adapters for public, cookie, header, and browser-intercept workflows
Browser automation CDP steps for navigate, click, type, intercept, snapshot, extract, wait, and related browser work
Desktop and macOS System commands, app adapters, real-time Shortcuts/App Intent discovery, screenshots, clipboard, calendar, brightness, and local tools
External CLIs 58 registered pass-through bridges with install/status discovery
Agent backends Route matrix for native CLI, JSON stream, MCP, ACP, HTTP API, OpenAI-compatible, and bridge routes
Operation policy open, confirm, and locked profiles with effect/risk scopes, local deny rules, --yes, and persisted approval memory
Evidence Run traces with environment snapshots, probe/replay/compare scores, structured gate results, browser session leases with tab/auth posture, render-aware evidence, movement checks, and stale-ref details
Output v2 AgentEnvelope in Markdown, JSON, YAML, CSV, or compact format
Repair Structured errors with adapter_path, failing step, retryability, suggestions, and alternatives

For Agents

Use search first, then run the smallest matching command.

unicli search "connect slack messages" --limit 5
unicli slack search "deploy incident" -f json
unicli macos app-actions --app WhatsApp -f json
unicli macos automation-smoke -f json
unicli repair slack search

Output defaults to structured Markdown for non-TTY and agent-user-agent runs. Force a machine format when you need one:

UNICLI_OUTPUT=json unicli reddit hot --limit 10
unicli hackernews top --limit 5 -f yaml
unicli --record --permission-profile confirm twitter search "coding agents" -f json
unicli runs list -f json
unicli runs show <run_id> -f json
unicli runs probe <run_id> -f json
unicli runs replay <run_id> --permission-profile confirm --yes --min-score 1 --min-context-score 1 --min-overall-score 1 -f json
unicli runs compare <run_id> <replay_run_id> -f json
unicli runs compare <run_id> <replay_run_id> --min-score 1 --min-context-score 1 --min-overall-score 1 -f json
unicli --permission-profile locked --yes --remember-approval word set-font "Inter"
unicli approvals list -f json
unicli approvals revoke <approval_key> -f json
unicli browser evidence --render-aware --expect-domain example.com -f json

Protocol entry points:

npx @zenalexa/unicli mcp serve
npx @zenalexa/unicli mcp serve --transport streamable --port 19826
unicli acp
unicli agents recommend codex
unicli agents matrix

ACP is supported for editors and bridge tooling. The primary runtime path stays native CLI, JSON stream, or MCP when those routes are available.

Local Computer Control

unicli compute controls installed apps through native accessibility, Electron CDP, and visual fallback transports.

unicli compute apps
unicli compute snapshot --app Calculator --format compact
unicli compute find --role button --name 5 --first
unicli compute find --role input --text 8 --first
unicli compute click @e7
unicli doctor compute --json
npx @zenalexa/unicli mcp serve --profile computer-use

Start with Compute, Electron App Control, and Compute Troubleshooting.

Coverage

The catalog is intentionally broad. Every command is discoverable, typed, and repairable.

The grid below is generated from active manifest sites. Badge counts exclude quarantined commands.

social
band bluesky dingtalk discord-app douban facebook hupu instagram jike lark linux-do lobsters mastodon reddit signal slack teams tieba twitter v2ex wechat-work weibo whatsapp xiaohongshu zhihu zoom-app

video
bilibili douyin douyu kuaishou tiktok twitch youtube

news
36kr bbc bloomberg cnn hackernews infoq ithome nytimes reuters techcrunch theverge

finance
barchart binance coinbase eastmoney futu sinafinance xueqiu yahoo-finance

shopping
1688 amazon coupang dangdang dianping ele jd maoyan meituan pinduoduo smzdm taobao xianyu

dev
claude-code cocoapods codex codex-cli crates-io cursor devto docker-desktop docker-hub gitee github-desktop github-trending gitkraken gitlab homebrew insomnia maven npm npm-trends nuget opencode packagist postman producthunt pub-dev pypi rubygems stackoverflow vscode

ai
antigravity chatgpt chatwise claude deepseek doubao doubao-app doubao-web gemini grok hf huggingface-papers lm-studio minimax notebooklm novita ollama openrouter perplexity replicate yuanbao

reference
arxiv chaoxing cnki dictionary google imdb paperreview wikipedia

audio
apple-podcasts netease-music spotify xiaoyuzhou

content
medium pixiv sspai substack weread zsxq

productivity
apple-notes evernote-app logseq mubu notion obsidian typora

jobs
boss linkedin

desktop
blender comfyui docker drawio excel ffmpeg figma freecad gimp imagemagick inkscape libreoffice macos mermaid musescore pandoc powerpoint word

games
steam

utility
bitwarden exchangerate ip-info linear qweather todoist web

other
51job adguardhome audacity autoagent aws baidu baidu-scholar chatgpt-app chrome cloudcompare cua doctl feishu flyctl gh godot google-scholar gov-law gov-policy hermes imessage itch-io jianyu jimeng jq juejin kdenlive ke krita leetcode lesswrong maimai motion-studio neonctl netlify nowcoder obs ones openharness pexels powerchina pscale quark railway renderdoc shotcut sinablog sketch slay-the-spire-ii slock stagehand supabase tdx threads ths toutiao uiverse unsplash vercel wanfang wechat-channels weixin wiremock wrangler xiaoe ycombinator yollomi yt-dlp zoom zotero

See the live catalog:

unicli list
unicli list --site macos
unicli ext list
unicli ext list --tag agent

Browse the same generated catalog on the docs site: https://olo-dot-io.github.io/Uni-CLI/reference/sites

Output Contract

Every normal command returns a v2 envelope. mcp serve and acp are protocol servers and keep their raw stdio protocol.

ok: true
schema_version: "2"
command: "twitter.search"
meta:
  duration_ms: 412
  count: 20
  surface: web
data:
  - { id: "...", text: "...", author: "..." }
error: null

Errors are meant to be acted on:

ok: false
schema_version: "2"
command: "twitter.search"
meta:
  duration_ms: 91
data: null
error:
  code: auth_required
  message: "401 Unauthorized"
  adapter_path: "src/adapters/twitter/search.yaml"
  step: 1
  suggestion: "Run: unicli auth setup twitter"
  retryable: false
  alternatives: ["twitter.timeline", "twitter.profile"]

Exit codes: 0 ok, 66 empty, 69 unavailable, 75 temporary failure, 77 auth, 78 config.

Self-Repair

Adapters are small YAML files by default. A failed command gives an agent enough context to patch the broken part without waiting for a package release.

1. Run the command.
2. Read the error envelope.
3. Open error.adapter_path.
4. Patch the failing step.
5. Save the override in ~/.unicli/adapters/<site>/<command>.yaml.
6. Verify with unicli repair <site> <command>.

Local overrides survive npm updates.

Write An Adapter

site: example
name: search
description: "Search example.com"
transport: http
strategy: public
capabilities: [fetch, select, map, limit]
minimum_capability: http.fetch
trust: public
confidentiality: public
quarantine: false
pipeline:
  - fetch:
      url: "https://api.example.com/search?q=${{ args.query }}"
  - select: data.results
  - map:
      title: "${{ item.title }}"
      url: "${{ item.url }}"
  - limit: "${{ args.limit }}"
args:
  - { name: query, type: string, required: true, positional: true }
  - { name: limit, type: int, default: 20 }
columns: [title, url]

Docs:

Trust And Limits

  • Auth-required sites use local cookie files under ~/.unicli/cookies/<site>.json.
  • Browser adapters require a reachable Chrome/CDP session.
  • Permission profiles are user-selected runtime policy. The default is open; stricter confirm and locked profiles require --yes or UNICLI_APPROVE=1 for blocked operations. Add --remember-approval with --yes to store the same command capability and resource scope under ~/.unicli/approvals.jsonl. Resource scope covers stable metadata such as domain, account surface, app, process family, and path argument slots. Use unicli approvals list, revoke, and clear to inspect or remove remembered scopes. The file stores scope metadata; runtime args stay out of approval memory.
  • Local deny rules live at ~/.unicli/permission-rules.json, or at UNICLI_PERMISSION_RULES_PATH. They match site, command, effect, capability dimensions, and resource metadata, then block before --yes and remembered approvals. Runtime guards also check fetched domains, browser navigation targets, download and output paths, and subprocess executables before the request, write, or process spawn happens.
  • Run recording is opt-in. Use --record or UNICLI_RECORD_RUN=1 when you need append-only evidence under ~/.unicli/runs.
  • CUA routes require a configured real backend. Declared-but-unavailable providers fail closed with structured errors.
  • User adapters and repairs live in ~/.unicli/adapters/; committed adapters remain the package baseline.
  • If a site blocks automation or changes a private API, Uni-CLI returns a clear failure envelope.

Development

npm install
npm run typecheck
npm run lint
npm run verify

License

Apache-2.0

v0.219.0 — Vostok · Gagarin

About

Command-grade software access for AI agents. 235+ websites, desktop apps, MCP servers, and external CLIs as one searchable, self-repairing CLI catalog. YAML adapters, structured error envelopes, ~80 tokens per call.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.