{"id":45724940,"url":"https://github.com/holon-run/uxc","last_synced_at":"2026-04-04T04:02:21.060Z","repository":{"id":339757659,"uuid":"1162257585","full_name":"holon-run/uxc","owner":"holon-run","description":"A unified CLI for discovering and invoking tools across OpenAPI, MCP, GraphQL, gRPC, and JSON-RPC","archived":false,"fork":false,"pushed_at":"2026-04-02T01:50:46.000Z","size":2322,"stargazers_count":99,"open_issues_count":14,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-02T02:38:55.120Z","etag":null,"topics":["agent-tools","ai-agents","api","cli","developer-tools","graphql","grpc","json-rpc","mcp","model-context-protocol","openapi","schema-driven"],"latest_commit_sha":null,"homepage":"https://uxc.holon.run","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/holon-run.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-20T03:27:50.000Z","updated_at":"2026-04-02T01:08:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/holon-run/uxc","commit_stats":null,"previous_names":["jolestar/uxc","holon-run/uxc"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/holon-run/uxc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holon-run%2Fuxc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holon-run%2Fuxc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holon-run%2Fuxc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holon-run%2Fuxc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/holon-run","download_url":"https://codeload.github.com/holon-run/uxc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/holon-run%2Fuxc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31385936,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T01:22:39.193Z","status":"online","status_checked_at":"2026-04-04T02:00:07.569Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-tools","ai-agents","api","cli","developer-tools","graphql","grpc","json-rpc","mcp","model-context-protocol","openapi","schema-driven"],"created_at":"2026-02-25T07:56:05.121Z","updated_at":"2026-04-04T04:02:21.053Z","avatar_url":"https://github.com/holon-run.png","language":"Rust","readme":"# UXC\n\n**One CLI for tools across protocols**\n\nEnglish | [简体中文](README.zh-CN.md)\n\n[Documentation](https://uxc.holon.run) | [Skills Directory](https://uxc.holon.run/skills/)\n\n[![CI](https://github.com/holon-run/uxc/workflows/CI/badge.svg)](https://github.com/holon-run/uxc/actions)\n[![Coverage](https://github.com/holon-run/uxc/workflows/Coverage/badge.svg)](https://github.com/holon-run/uxc/actions/workflows/coverage.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Rust](https://img.shields.io/badge/rust-1.83%2B-orange.svg)](https://www.rust-lang.org)\n\nUXC helps agents and automation discover and invoke APIs and tools across\nOpenAPI, MCP, GraphQL, gRPC, and JSON-RPC through one consistent workflow.\n\nFrom discovery to structured invocation, UXC aims to keep calling patterns\nconsistent across protocols while handling auth, output formatting, and\nprotocol-specific differences behind the scenes.\n\n## Start Here\n\nMost flows follow the same path:\n\n```bash\nuxc \u003chost\u003e -h\nuxc \u003chost\u003e \u003coperation_id\u003e -h\nuxc \u003chost\u003e \u003coperation_id\u003e key=value\n```\n\nArgument styles:\n\n```bash\n# nested fields\nuxc \u003chost\u003e \u003coperation_id\u003e filter.status=active items[0].id=1\n\n# one field as JSON\nuxc \u003chost\u003e \u003coperation_id\u003e filter:='{\"status\":\"active\"}' tags:='[\"rust\",\"cli\"]'\n\n# full payload\nuxc \u003chost\u003e \u003coperation_id\u003e '{\"filter\":{\"status\":\"active\"}}'\n```\n\nExample:\n\n```bash\nuxc petstore3.swagger.io/api/v3 -h\nuxc petstore3.swagger.io/api/v3 get:/pet/{petId} -h\nuxc petstore3.swagger.io/api/v3 get:/pet/{petId} petId=1\n```\n\n## Why UXC\n\nRemote capabilities are easy to access in isolation, but hard to reuse\nconsistently across systems.\n\nCommon friction points:\n\n- each protocol has its own discovery and invocation style\n- auth setup is scattered across shell scripts, prompts, SDKs, and local config\n- tool and schema details are hard to inspect before execution\n- automation breaks when output shape and error handling differ by provider\n- local agent workflows do not want one-off wrappers for every service\n\nUXC exists to turn schema-described remote capabilities into one reusable CLI\nentrypoint for agents, skills, scripts, and local applications.\n\n## How It Works\n\nUXC keeps the top-level interaction model simple:\n\n1. Discover what a host exposes.\n2. Inspect the shape of a specific operation.\n3. Invoke with structured arguments.\n4. Reuse the same calling pattern across protocols.\n\nThis makes remote interfaces feel more like a stable command surface than a\ncollection of protocol-specific request styles.\n\n## Why Not curl, SDKs, or MCP-Only Tooling\n\n### `curl`\n\n`curl` is request-first. It is excellent when the caller already knows the URL,\nmethod, headers, and payload shape.\n\nUXC is discovery-first. It helps callers inspect what is available, understand\nexpected input shape, and invoke with a more stable command contract.\n\n### Provider SDKs or protocol-specific CLIs\n\nProvider SDKs can be deep and powerful, but each one introduces its own usage\nmodel, auth conventions, and output shape.\n\nUXC trades provider-specific ergonomics for a shared interface across many\nproviders and protocol families.\n\n### MCP-only tool calling\n\nMCP is an important part of the ecosystem, but many useful systems are exposed\nthrough OpenAPI, GraphQL, gRPC, or JSON-RPC instead.\n\nUXC is designed to unify MCP with those adjacent protocol surfaces rather than\nstopping at MCP-only workflows.\n\n## What You Get\n\n- help-first discovery with `\u003chost\u003e -h` and `\u003chost\u003e \u003coperation_id\u003e -h`\n- structured invocation with key/value args, path-style nested args, `:=` per-field JSON, or positional JSON payloads\n- deterministic JSON output by default, with opt-in text mode\n- reusable auth credentials and endpoint bindings\n- shortcut links for frequently used hosts\n- MCP-first config import from common client/editor configs\n- daemon-backed session reuse and background subscriptions\n- a TypeScript daemon client for local integrations\n\n## Protocol Coverage\n\nUXC currently supports these protocol families behind one CLI contract:\n\n- OpenAPI / Swagger\n- MCP over HTTP and stdio\n- GraphQL introspection and execution\n- gRPC reflection-based discovery and unary invocation\n- JSON-RPC with OpenRPC-style discovery\n\nRelated runtime support also includes:\n\n- daemon-backed subscription lifecycle\n- WebSocket-based subscription flows\n- polling-based subscriptions\n- provider-aware event intake for Slack, Discord, Feishu, and similar systems\n\n## Auth Coverage\n\nUXC is intended for more than public demo endpoints. It includes reusable auth\nand binding primitives for real provider integrations.\n\nSupported auth patterns include:\n\n- bearer tokens\n- API keys with configurable header or query placement\n- multi-field credentials for signed APIs\n- signer-backed request generation\n- OAuth for supported MCP HTTP flows\n- secret sources from literal values, environment variables, or external secret\n  providers\n\nThe main auth model is:\n\n- credentials store auth material\n- bindings match endpoints and select which credential applies\n\nThat keeps auth setup reusable instead of embedding secrets and rules into every\nindividual command.\n\n## Skills and Integrations\n\nUXC is not only a CLI entrypoint. This repository also ships a growing set of\nofficial skills built on top of the shared execution layer.\n\nRepresentative categories include:\n\n- browser and local tooling: `playwright-mcp-skill`, `chrome-devtools-mcp-skill`\n- documentation and research: `context7-mcp-skill`, `deepwiki-mcp-skill`\n- workspace and messaging: `notion-*`, `slack-*`, `discord-*`, `telegram-*`\n- crypto and market data: `dune-*`, `etherscan-*`, `thegraph-*`, `coinmarketcap-*`\n\nUse the base `uxc` skill as the shared execution layer, then add wrapper skills\nwhen a service-specific workflow is worth packaging.\n\nSee [the Skills Directory](https://uxc.holon.run/skills/) for the full skill catalog and\n[`docs/operations/skills.md`](docs/operations/skills.md) for publish and maintenance logs.\n\n## Where It Fits\n\nUXC is a good fit for:\n\n- agent and skill authors who need one stable way to call many remote systems\n- automation and scripts that need structured output and predictable failure modes\n- local applications that want daemon-backed reuse instead of parsing CLI stdout\n- multi-provider workflows where auth and invocation patterns would otherwise drift\n\nUXC is not:\n\n- a hosted platform\n- an API gateway\n- a replacement for every provider SDK\n- a full bot framework or workflow orchestration system\n\n## Install\n\n### Homebrew (macOS/Linux)\n\n```bash\nbrew tap holon-run/homebrew-tap\nbrew install uxc\n```\n\n### Install Script (macOS/Linux)\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/holon-run/uxc/main/scripts/install.sh | bash\n```\n\nReview before running:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/holon-run/uxc/main/scripts/install.sh -o install-uxc.sh\nless install-uxc.sh\nbash install-uxc.sh\n```\n\nInstall a specific version:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/holon-run/uxc/main/scripts/install.sh | bash -s -- -v v0.13.0\n```\n\nWindows note: native Windows is no longer supported; run UXC through WSL.\n\n### Cargo\n\n```bash\ncargo install uxc\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/holon-run/uxc.git\ncd uxc\ncargo install --path .\n```\n\n## Quick Examples\n\n### OpenAPI\n\n```bash\nuxc petstore3.swagger.io/api/v3 -h\nuxc petstore3.swagger.io/api/v3 get:/pet/{petId} petId=1\n```\n\n### GraphQL\n\n```bash\nuxc countries.trevorblades.com -h\nuxc countries.trevorblades.com query/country code=US\n```\n\n### MCP\n\n```bash\nuxc mcp.deepwiki.com/mcp -h\nuxc mcp.deepwiki.com/mcp ask_question '{\"repoName\":\"holon-run/uxc\",\"question\":\"What does this project do?\"}'\n```\n\n### JSON-RPC\n\n```bash\nuxc fullnode.mainnet.sui.io -h\nuxc fullnode.mainnet.sui.io sui_getLatestCheckpointSequenceNumber\n```\n\n## Output and Help Conventions\n\nUXC is JSON-first by default.\nUse `--text` or `--format text` for human-readable CLI output.\n\nSuccess responses return a stable JSON envelope with fields such as:\n\n- `ok`\n- `kind`\n- `protocol`\n- `endpoint`\n- `operation`\n- `data`\n- `meta`\n\nThis makes UXC easier to consume from agents, scripts, and local applications.\n\n## TypeScript Daemon Client\n\nFor local app integration, UXC also ships an official Node/TypeScript client:\n\n```bash\nnpm install @holon-run/uxc-daemon-client\n```\n\nIt connects directly to the local daemon socket and returns structured objects\ninstead of CLI stdout envelopes.\n\nUse it when embedding UXC into applications that need runtime calls, daemon\nstatus, or subscription lifecycle and event streaming.\n\nFor generated runtime clients (#334), you can export host-scoped codegen input\nfrom CLI and generate a typed TypeScript client through the daemon client:\n\n```bash\nuxc \u003chost\u003e --codegen-schema\n```\n\n```ts\nimport { UxcDaemonClient } from \"@holon-run/uxc-daemon-client\";\n\nconst runtime = new UxcDaemonClient();\nconst source = await runtime.generateTypeScriptClient({\n  endpoint: \"https://petstore3.swagger.io/api/v3\",\n  options: { no_cache: true },\n  emitter: { className: \"PetstoreClient\" },\n});\n```\n\nSee [the daemon API docs](https://uxc.holon.run/daemon/api/) for the daemon contract.\n\n## Docs Map\n\n- getting started: [https://uxc.holon.run/getting-started/](https://uxc.holon.run/getting-started/)\n- public no-key endpoints: [https://uxc.holon.run/reference/public-endpoints/](https://uxc.holon.run/reference/public-endpoints/)\n- auth secret sources: [https://uxc.holon.run/auth/secret-sources/](https://uxc.holon.run/auth/secret-sources/)\n- MCP HTTP OAuth: [https://uxc.holon.run/auth/oauth-mcp-http/](https://uxc.holon.run/auth/oauth-mcp-http/)\n- daemon service setup: [https://uxc.holon.run/daemon/service/](https://uxc.holon.run/daemon/service/)\n- daemon API and TypeScript client: [https://uxc.holon.run/daemon/api/](https://uxc.holon.run/daemon/api/)\n- logging and troubleshooting: [https://uxc.holon.run/daemon/logging/](https://uxc.holon.run/daemon/logging/)\n- schema mapping and `--schema-url`: [https://uxc.holon.run/reference/schema-mapping/](https://uxc.holon.run/reference/schema-mapping/)\n- skills catalog: [https://uxc.holon.run/skills/](https://uxc.holon.run/skills/)\n- skills publish and maintenance log: [`docs/operations/skills.md`](docs/operations/skills.md)\n- release process: [`docs/operations/release.md`](docs/operations/release.md)\n\n## Contributing\n\nContributions are welcome.\n\n- development workflow: [`CONTRIBUTING.md`](CONTRIBUTING.md)\n- CI and releases: [GitHub Actions](https://github.com/holon-run/uxc/actions)\n\n## License\n\nMIT License. See [`LICENSE`](LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholon-run%2Fuxc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fholon-run%2Fuxc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fholon-run%2Fuxc/lists"}