Three things to keep straight:
- x-cmd — a POSIX shell superpowers toolkit. The thing you install and run.
x install/x eget— two commands inside x-cmd that resolve "how do I get tool X onto my machine?".x installpicks the best available install rule;x egetfetches a prebuilt binary from a GitHub release. (Seex-cmd.com/mod/installandx-cmd.com/mod/eget.)- This repository (
x-cmd-install/install) — the data those commands consume. Not the code, not the modules — just the curated YAML index: for each of 2,350+ tools, the install rules per OS / per package manager.
In short: x-cmd has the brain; this repo has the lookup table.
📦 2,350+ packages across 70+ categories under
src/. 🚀 Daily-rebuilt artifacts (TSV + tar.xz) ship as immutablevYYYYMMDDGitHub Releases at 12:00 UTC (= 20:00 Asia/Shanghai). Consumers fetch from the latest release (marked "Latest"), not frommain.
We welcome interesting new tools, and we don't judge by stars or popularity. Closed-source, commercial, and AI-generated are all fine — what we don't accept are tools with no human thinking behind them, no safety consideration, and no long-term maintenance plan.
That said, this isn't a marketing page. The following are auto-declined, and existing entries that turn out to fall into any of these will be tagged yellow or removed:
- Tools that engage in malicious behavior
- Tools that collect user privacy without clear, prominent disclosure
- Tools that hide what they do — undocumented network calls, hidden background processes, obfuscated payloads
x install runs on the user's machine, so the final say is the user's. But on the index side, we try to be one extra check.
You're welcome here. Whether you want to add a tool you love, fix a wrong URL, or sharpen a translation — small PRs and big PRs alike, we'd love to review them.
Start with CONTRIBUTING.md for the full workflow, yml template, and quality bar.
The one thing we ask before you open a PR: the upstream project must show ongoing active development — not a one-off burst followed by silence, but a steady cadence of commits and releases over its lifetime. This keeps the index trustworthy.
中文版见 CONTRIBUTING.cn.md。
Reference https://github.com/x-cmd/install/blob/main/CONTRIBUTING.md, and submit this tool to x-cmd/install: https://github.com/<owner>/<repo>
Replace <owner>/<repo> with the tool's GitHub location. Hand it to your AI coding assistant.
Normally, x install provide a bunch of tools to query the data at ease. You can just ask your AI to consult x install --help.
However, AI coding agents (Claude Code, Cursor, etc.) can directly fetch this index to answer "how do I install <name>?" without going through x install / x eget:
-
Fetch the TSV (≈ 2,350 rows, flat index):
curl -L https://github.com/x-cmd/install/releases/latest/download/v1.all.tsv
-
Parse: the header is
name category lang source desc_cn desc_en binlist rule other. Each row is one package. Therulecolumn is a compact JSON object mapping<os>/<tool>→ install command. -
Match against the user's OS / package manager and respond with the matching command.
For richer metadata (license, x.source, custom fields), fetch all.tar.xz instead and read the raw yml.
Web: https://x-cmd.com
Go to https://x-cmd.com for interactive search across install / module / pkg / skills; for install-only filtering, use https://x-cmd.com/install.
Open the interactive UI from your terminal with x i (short for x install):
This data also feeds x eget
x-cmd-install/
├── src/ # the package index (one yml per package)
├── .x-cmd/ # per-format conversion scripts (v1.yml2tsv.py, ...)
├── .github/workflows/ # release-today.yml + update-dev-release.yml
├── CONTRIBUTING.md # contributor guide (en)
├── CONTRIBUTING.cn.md # contributor guide (zh)
├── FAQ.md # maintainer FAQ — design, ops, philosophy (en)
├── FAQ.cn.md # 维护者 FAQ — 设计、运维、理念
├── LICENSE # Apache 2.0
└── README.md # this file
The v0.1.0 branch is a frozen snapshot of the legacy state (kept for historical reference) and is no longer updated.
x install reads the package index from this repo. Different versions of x install consume different format versions:
x installv1.x → readsv1.all.tsvx installv2.x → readsv2.all.tsv- ...
Each format version is a frozen schema (column names, escape rules, rule: JSON shape). Once shipped, it never changes.
But the data keeps updating: when a new package lands in src/, the pipeline rebuilds every shipped format (v1, v2, …) with the latest content. Every format gets a fresh rebuild every day.
The payoff:
- Old
x installv1.x keeps readingv1.all.tsv— schema doesn't change. - But
v1.all.tsvcarries today's newest packages and rules. - New packages appear for old consumers automatically — no need to upgrade
x installto see them. - Breaking schema changes (add column, rename, change escape) ship as
v2— old consumers are untouched.
That's forward compatibility: new data is visible to old formats automatically; breaking changes require a new format version.
The operational side — when to bump, how to ship v2, what stays frozen — lives in FAQ.md → "Format versioning".
This repo is the data — yml install rules. The actual module code lives in x-cmd/x-cmd. Open your PR there.
Module docs:
x install→ https://x-cmd.com/mod/installx eget→ https://x-cmd.com/mod/eget
This index is for software to consume, not humans to read. The canonical consumer is x install / x eget — they fetch the latest release every day and pick the right install rule automatically.
Any third-party tool plugs in the same way:
# Flat index — one row per package (name + install rule)
curl -L -o all.tsv https://github.com/x-cmd/install/releases/latest/download/v1.all.tsv
# Full bundle — index plus the raw yml tree
curl -L -o all.tar.xz https://github.com/x-cmd/install/releases/latest/download/v1.all.tar.xzall.tsv≈ 2,350 rows, one per package — use when you just need to look up "how do I install<name>".all.tar.xz=all.tsvplus the completesrc/yml tree — use when you need the raw yml for richer metadata.
Schema details live in FAQ.md → "Format versioning".
This repo ships data through two paths:
- Daily (
v<YYYYMMDD>) — runs at 12:00 UTC. Captures whatever changed since yesterday; skipped if nothing changed. Stable consumption uses this. - Dev (
dev) — manually triggered. Always overwrites. Dev / testing the next build uses this.
Operational details (button names, triggers, skip logic) live in FAQ.md.
Open an issue at https://github.com/x-cmd/install/issues/new. Include:
- The package name (e.g.
fd) - The OS you tried on
- The error message (if any)
- A link to the upstream changelog / release notes showing the install method changed
We'll turn it into a fix PR or label it [REC] for someone to pick up.
Apache 2.0. See LICENSE.