CLI tool discovery for AI agents
Search, compare, and install 5,000+ command-line tools with structured YAML/JSON output.
# Install
cargo install clidex # or: curl -fsSL https://raw.githubusercontent.com/syshin0116/clidex/main/install.sh | sh
# Search (auto-downloads index on first run)
clidex "csv to json" # Pretty output in terminal, YAML in pipes
clidex "csv to json" --json # JSON output
clidex info jq # Detailed tool info
clidex compare jq dasel yq # Side-by-side comparisonAI agents like Claude Code, Codex, and Gemini CLI can run terminal commands — but they don't know which tools exist beyond the basics. An agent uses grep when ripgrep is 10x faster, or find when fd is simpler.
Clidex bridges this gap. It's a local CLI that returns structured metadata about CLI tools: what they do, how to install them, and where to find docs. No web search API calls, no HTML parsing, no cost — just a fast local lookup.
| awesome-cli-apps / cli-anything | Clidex | |
|---|---|---|
| Target user | Humans | AI agents (+ humans) |
| Output | Markdown / TUI | YAML / JSON / Pretty |
| Install info | Links only | brew install jq — ready to run |
| Docs access | Click a link | llms.txt URL for agents to read |
| Pipeline | No | clidex ... | next_tool (YAML in pipes) |
| Compare | No | clidex compare jq dasel yq |
cargo install clidexLinux / macOS:
curl -fsSL https://raw.githubusercontent.com/syshin0116/clidex/main/install.sh | shWindows:
curl -fsSL -o clidex.zip https://github.com/syshin0116/clidex/releases/latest/download/clidex-x86_64-pc-windows-msvc.zip
tar -xf clidex.zip
move clidex.exe %USERPROFILE%\.local\bin\Or download directly from Releases.
Note: In an interactive terminal, the index is downloaded automatically on first search. In non-interactive environments (CI, pipes), run
clidex updatefirst.
clidex "csv to json" # Pretty in terminal, YAML in pipes
clidex "csv to json" --yaml # Force YAML output
clidex "csv to json" --json # JSON output
clidex "csv to json" --pretty # Force pretty output
clidex "file manager" -n 3 # Limit to top 3 results
clidex "json processor" --score # Include relevance scoresSearch also works as an explicit subcommand:
clidex search "csv to json" --category data -n 5Example output (terminal):
jq ★ 34.0k Data Manipulation > Processors [67.8]
JSON processor
$ brew install jq
dasel ★ 7.9k Data Manipulation > Processors [59.9]
JSON/YAML/TOML/XML processor (like jq/yq)
$ brew install dasel
clidex info ripgrep # Detailed tool metadata
clidex info ripgrpe # Typo → "Did you mean: ripgrep"clidex compare jq dasel yq # Side-by-side comparison jq dasel yq
────────────────────────────── ────────────────────────────── ──────────────────
Description JSON processor JSON/YAML/TOML/XML processor… YAML processor
Category Processors Processors Processors
Stars ★ 30.8k ★ 5.3k ★ 2.6k
Install brew install jq brew install dasel brew install yq
clidex trending # Top tools by GitHub stars
clidex trending -n 10 # Top 10
clidex trending --category git # Top Git tools
clidex trending --updated-since 2026-01-01 # Filter by repo activity dateclidex categories # List all categories with tool counts
clidex categories git # Filter categories by name
clidex --category docker -n 5 # Browse tools in a categoryclidex update # Download/update index
clidex stats # Show index statistics| Flag | Format | When |
|---|---|---|
| (none, terminal) | Pretty | Auto-detected when stdout is a TTY |
| (none, pipe) | YAML | Auto-detected when stdout is piped |
--pretty |
Pretty | Force human-friendly table |
--yaml |
YAML | Force structured YAML |
--json |
JSON | Force JSON |
--score |
+ Score | Add relevance scores to results |
| Flag | Description |
|---|---|
-n <N> |
Max number of results (default: 10) |
Clidex is built for AI agents to consume programmatically. The typical workflow:
- Agent runs
clidex "task description"(YAML output when piped) - Parses the structured result
- Extracts
install.breworinstall.cargocommand - Installs and uses the tool
Each tool in the result contains:
name: string # Tool name
binary: string? # Binary name (if different from name)
desc: string # One-line description
category: string # Category path (e.g. "Files and Directories > Search")
tags: [string] # Search tags
install: # Install commands by package manager
brew: string?
cargo: string?
npm: string?
pipx: string?
stars: number? # GitHub stars
links:
repo: string? # GitHub repository
homepage: string? # Project homepage
docs: string? # Documentation URL
llms_txt: string? # llms.txt URL (LLM-readable docs)With --score, search results use a wrapper schema: {score: number, ...tool}. Without --score, output is plain [Tool] — same schema as info/compare/trending.
The llms_txt field is especially useful — it points to llms.txt files that agents can fetch to learn how to use a tool.
Clidex uses BM25 text search with domain-specific optimizations:
- Field weighting: Tool name (3x) > tags + category (2x) > description (1x)
- Synonym expansion:
grep→ also matchessearch,find,ripgrep,rg(30+ synonym groups) - Intent coverage: Bonuses based on how many query terms appear in tool metadata
- Category boost: Query terms matching category names get boosted
- Popularity boost: GitHub stars or Homebrew install counts add 0–8 bonus points (tie-breaker, not primary signal)
- Fuzzy matching: Catches typos via edit distance (
ripgrpe→ripgrep) and subsequence matching - Alias mapping:
rg→ ripgrep,btm→ bottom,z→ zoxide (24 pairs) - Confidence gates: Minimum lexical evidence required to prevent false positives from garbage queries
Search performance: ~3ms per query on the full 5,000+ tool index (with cached BM25 engine).
| Source | What it provides |
|---|---|
| awesome-cli-apps | Curated tool list with categories |
| toolleeo/cli-apps | 2,200+ tools from CSV |
| modern-unix | Modern replacements for classic tools |
| awesome-tuis | Terminal UI applications |
| Homebrew | brew install commands, formulae + casks |
| GitHub API | Stars, last updated, homepage |
| crates.io | cargo install commands + category-based discovery |
| npm | npm install -g commands |
| PyPI | pipx install commands for Python CLI tools |
| Homebrew analytics | 365-day install counts |
| llms.txt | LLM-readable documentation probing |
The index is rebuilt daily via GitHub Actions and published as a release asset.
cargo run --bin build_index -- index.yaml| Variable | Default | Description |
|---|---|---|
GITHUB_TOKEN |
— | GitHub API token (increases rate limit from 60 to 5000/hr) |
GITHUB_LIMIT |
50 |
Max GitHub API requests |
CRATES_LIMIT |
100 |
Max crates.io lookups |
NPM_LIMIT |
50 |
Max npm registry lookups |
LLMS_LIMIT |
100 |
Max llms.txt probes |
Contributions are welcome! Some areas that could use help:
- Adding tools to the index: Suggest popular CLI tools that are missing
- Search quality: Report queries that return unexpected results
- New data sources: Integrations with other package managers
- Platform support: Testing on different OS/architecture combinations
# Development
cargo build
cargo test
cargo clippy
cargo fmt
