How CLI_CODE works
An open, self-contained directory of command-line tools for developers. Everything runs in the browser over a built JSON dataset — no server, no tracking.
Overview
Each entry is one command-line tool with a structured profile. Two kinds:
- Harness CLIs — agent-native wrappers that drive real desktop software (Blender, GIMP, OBS…) or local services through their APIs, with structured JSON output.
- Public CLIs — third-party or official tools already published to npm, Homebrew, PyPI and similar, catalogued the same way.
25 entries have a human-verified profile (language, license, platforms, difficulty, use cases, alternatives). The rest are auto-derived from the source registry and are marked as such — nothing is fabricated.
Browse & search
Browse runs a weighted client-side search over data/clis.json:
| Field | Weight |
|---|---|
| name (exact / token / prefix) | 12 / 10 / 7 |
| aliases | 8 |
| tags | 6 |
| summary + description | 5 |
| categories | 4 |
| use cases | 4 |
| language / platform | 2 |
- Multi-word queries use AND semantics; matched terms are highlighted.
- Facets: source, category, platform, language, install method, difficulty (shown only when data exists), plus a Curated only toggle.
- Sort by name, category, or verified date — click a header, again to reverse.
- Keyboard: / focus, ↑↓ move, Enter open, Esc clear.
- State is in the URL:
registry.html?q=mock&cat=testing&source=harnessreopens the same view.
Find my CLI
Find takes a plain-language goal and scores every tool against its tags, categories and use cases, with a small synonym map (“inspect http” → api, rest, request…). Each result shows exactly which fields matched. Deterministic — no AI service, no network call. Deep-linkable: find.html?goal=edit+video.
Stacks
Stacks has two parts:
- Preset stacks (
data/stacks.json) — curated tool sets for Frontend, Backend, DevOps, Cloud, AI Engineering, Cybersecurity and Data Engineering, each pick annotated with its role. “Copy all installs” yields a commented shell block. Thin areas carry an explicit note. - Capability matrices (
data/matrix_registry.json) — for a whole workflow, the intents and the provider CLIs that satisfy each, designed to hand to an agent.
Compare
Compare puts 2–4 tools side by side. A Key differences summary leads (difficulty, language, license, platform gaps, missing data), then a field table with changed rows marked. Add tools from the Compare control on Browse or a tool page; the queue is deep-linkable as compare.html?slugs=a,b,c.
Cheat sheets
Cheat sheet composes a printable command reference from a set of tools — ?slugs=a,b, ?stack=devops, ?favorites=1, or the compare queue. It shows install steps and any documented examples; it never invents commands, so derived entries show install steps plus a pointer to --help.
AI models
A separate dataset — 50 AI/LLM models across 18 providers, with an
independent schema, validation and stats. Every factual field traces to a
source in the record's sources[] (official docs, model cards,
GitHub, technical reports); unverified fields are left blank.
- Openness is by license, not downloadability —
open-source(OSI-style: Apache-2.0, MIT),open-weight(Llama / Gemma / Modified-MIT and similar custom licenses),proprietary/api-only,research-license,commercial-use-restricted. - Models — search + facets: provider, openness, availability, capability, context-window bucket, local-capable.
- Find my model — pick requirements (coding, reasoning, local, low-resource, multimodal, large context, commercial use, open source, cheap API…); deterministic scoring, each result explains which requirements it met.
- Model Battle — 2–4 models with a key-differences summary (openness, license, commercial use, context range, local support) then a diff-marked table. No "winner".
- Run locally — the local-capable models grouped by runner (Ollama, llama.cpp, MLX, vLLM, Transformers). Hardware notes come from each model card, not estimates.
- AI OSS explorer — 20 GitHub AI projects (inference, serving, training, fine-tuning, agents, RAG, eval, observability, vector search), each verified against the GitHub API with a timestamped star count.
Volatile data carries its own timestamp — pricingVerifiedAt,
starsVerifiedAt, availabilityVerifiedAt — and is
never presented as permanently current. See
docs/MODEL-DATA.md
for the full policy and the DISCOVER → VERIFY → NORMALIZE → VALIDATE →
REVIEW → PUBLISH workflow.
Local state
Saved holds favorites, the compare queue, and recently-viewed tools. All of it lives in localStorage on this device only (schema-versioned; corrupt or old data is discarded on load). No account, nothing synced, nothing sent anywhere. The model comparison list is stored the same way under a separate key.
Tool pages & URLs
Every tool has a stable, deep-linkable page at cli.html?slug=<slug>: at-a-glance metadata, install methods, use cases, alternatives and related tools (cross-linked), tags, and authoritative external references. Categories are addressable via registry.html?cat=<category>.
Data model
A build step merges the upstream registry snapshots and the hand-curated catalog_registry.json with a human-verified overlay and emits the files the site loads, validated against schema/cli.schema.json (JSON Schema 2020-12). Derivation never invents domain facts — use cases, alternatives, difficulty and precise language come only from the overlay. A size gate in npm run check holds the active dataset at exactly 500 unique tools.
| File | Role |
|---|---|
data/clis.json | Built, normalized entries the site loads (generated) |
data/meta.json | Facet counts (generated) |
data/overlay.json | Contributor-maintained verified facts, keyed by slug |
data/stacks.json | Preset stacks (picks must reference real slugs) |
data/registry.json, data/public_registry.json, data/registry-dates.json | Upstream snapshots — build inputs |
data/catalog_registry.json | Hand-curated catalog of mainstream CLI tools (397) — build input |
data/matrix_registry.json | Capability matrices for Stacks |
schema/*.schema.json | Validation schemas for entries and stacks |
Built entry fields: id, slug, name, aliases, summary, description, categories, tags, useCases, platforms, language, runtime, license, install[], examples[], repository, documentation, packageManagers, difficulty, alternatives, related, source, dataQuality, lastVerified.
Contributing a tool profile
To add or correct verified facts for a tool, edit its block in data/overlay.json (keyed by slug). Set only what you can confirm from the tool's own docs. alternatives and related must point at slugs that exist in the dataset. Then:
npm install
npm run build # regenerate data/clis.json + data/meta.json
npm run check # schema + cross-references + drift + link integrity
CI runs npm run check on every push; a failing schema or dangling reference blocks the deploy.
Run & deploy
The shipped site is static and zero-dependency. fetch() needs HTTP, so serve the folder — do not open index.html directly:
npm install && npm run build
npx http-server -p 4173 # or: python -m http.server 4173
All paths are relative, so it works served from a subpath such as /CLI_CODE/. .github/workflows/deploy-pages.yml builds, validates and publishes to GitHub Pages on every push to main. One-time setup: repo Settings → Pages → Source: GitHub Actions.
For AI agents
The harness entries are designed to be discovered and driven by SKILL-compatible agents (Claude Code, OpenClaw, Nanobot, Codex). Add the meta-skill once and the agent reads the registry itself:
npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill -g -y
Then: “Find an appropriate CLI in CLI_CODE and complete the task: <task>”. A pip client also exists — pip install cli-anything-hub, then cli-hub list|search|install|info|update|uninstall.
License
Apache-2.0. The harness/public registry snapshots come from the upstream CLI-Anything project; the curated catalog is maintained in this repository.