From fbe916f615bbcb4e861c4f19690f5779ef420172 Mon Sep 17 00:00:00 2001 From: Alexgodoroja Date: Fri, 10 Jul 2026 15:21:35 -0700 Subject: [PATCH] app-store: add io.pilot.tldr card (simplified man pages via tlrc) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Data-driven card for io.pilot.tldr — the tldr-pages client tlrc 1.13.1 fronting example-first man pages for ~7,350+ CLIs. Adds the app to app-overrides.json + app-methods.json, wires gen-apps maps (infra category, official teal-on-navy logo), and regenerates apps.ts. Build + plain-coverage green. --- public/appicons/io.pilot.tldr.png | Bin 0 -> 29780 bytes scripts/gen-apps.mjs | 6 +- src/data/app-methods.json | 42 +++++ src/data/app-overrides.json | 47 ++++++ src/data/apps.ts | 257 +++++++----------------------- 5 files changed, 154 insertions(+), 198 deletions(-) create mode 100644 public/appicons/io.pilot.tldr.png diff --git a/public/appicons/io.pilot.tldr.png b/public/appicons/io.pilot.tldr.png new file mode 100644 index 0000000000000000000000000000000000000000..00d601bfc938e409a7bb98e97bf894d5ffb428b5 GIT binary patch literal 29780 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. The page cache auto-downloads on first use." +}, +{ +"name": "tldr.raw", +"summary": "Return a page as raw Markdown (unrendered) \u2014 the most machine-parseable form, ideal for an agent that wants to extract the example commands programmatically. This is `tldr --quiet --raw `." +}, +{ +"name": "tldr.search", +"summary": "Full-text search across the entire tldr catalog for a keyword and return each matching page as `language platform page`. First-class content search \u2014 find the right tool when you only know the task (\"compress\", \"screenshot\", \"json\"). This is `tldr --quiet --search `." +}, +{ +"name": "tldr.list", +"summary": "List every documented command for the current platform plus the cross-platform `common` set \u2014 a directory of all tools tldr covers, one name per line. Pair with tldr.search to explore the catalog. This is `tldr --quiet --list`. (Use tldr.exec with [\"--list-all\"] for every platform.)" +}, +{ +"name": "tldr.info", +"summary": "Show cache information: the on-disk cache path, its age, the installed languages, and the total page count. This is `tldr --info`." +}, +{ +"name": "tldr.update", +"summary": "Refresh the local page cache from the tldr-pages archive (downloads only the languages that changed). Needs network; the cache also auto-downloads on first use, so this is only for an explicit refresh. This is `tldr --update`." +}, +{ +"name": "tldr.render", +"summary": "Render a local tldr page file (a `.md` in tldr format) as clean text \u2014 preview a page you are authoring or one written elsewhere. This is `tldr --quiet --color never --render `." +}, +{ +"name": "tldr.exec", +"summary": "Run the tldr client with a verbatim argv \u2014 the full surface beyond the curated methods. Payload is {\"args\":[...]} forwarded straight to `tldr`, plus optional {\"stdin\":\"...\"}. Use it for any flag or combination the curated methods don't cover: `--platform linux systemctl` to force a platform, `--list-all`/`--list-platforms`/`--list-languages`, `-L es` for another language, `--short-options`/`--long-options`, `--edit`, `--offline`, `--gen-config`, or a multi-word page as separate args. Examples: {\"args\":[\"--platform\",\"linux\",\"systemctl\"]}; {\"args\":[\"--list-all\"]}; {\"args\":[\"git\",\"commit\"]}; {\"args\":[\"-L\",\"es\",\"tar\"]}." +}, +{ +"name": "tldr.cli_help", +"summary": "Return the complete tldr command-palette reference \u2014 every operation and modifier flag, its values and defaults, the platform list, cache/offline behavior, search & directory usage, worked examples, and licensing \u2014 as clean, color-free text. The full contract for what tldr.get / tldr.exec accept. This is `tldr --help`." +}, +{ +"name": "tldr.version", +"summary": "Print the delivered client and tldr-client-spec version, e.g. \"tlrc v1.13.1 (implementing the tldr client specification v2.3)\". Needs no cache. This is `tldr --version`." +} ] } \ No newline at end of file diff --git a/src/data/app-overrides.json b/src/data/app-overrides.json index 08db79d5..e392a973 100644 --- a/src/data/app-overrides.json +++ b/src/data/app-overrides.json @@ -931,5 +931,52 @@ "publishedAt": null, "grants": [], "inCatalogue": true +}, +"io.pilot.tldr": { +"name": "tldr", +"tagline": "Simplified man pages for ~7,350+ CLIs \u2014 instant, example-first command recall for agents", +"description": "# tldr \u2014 simplified man pages for almost every CLI, native for agents\n\nThis app installs the official **tldr-pages** client **tlrc v1.13.1** on the host and fronts it as typed\nmethods. tldr is *\"simplified, community-driven man pages\"* \u2014 concise, **example-first** cheat-sheets for\n**~7,350+ command-line tools**, the practical opposite of a dense `man` page. Instead of scrolling a manual,\nan agent asks `tldr docker` and gets the handful of commands it actually needs, each with a one-line\ndescription. The bundle is the upstream tlrc binary (sha-pinned per OS/arch, fetched from the Pilot artifact\nregistry at install) plus a tiny wrapper that serves a complete, color-free command-palette reference.\n\n**Open source, and every command is tested.** The tlrc client is **MIT**; the pages are written by the\ntldr-pages community and licensed **CC-BY-4.0**. The full page catalog (~3 MiB) auto-downloads on first use\nand then works offline.\n\n## Why an agent wants this\n\n- **Recall any CLI instantly.** `tldr ` returns the 5\u201310 invocations that matter \u2014 no manual to parse,\n no web search. The dictionary of man pages, for the whole toolbox an agent builds and deploys with.\n- **Discover tools by task.** `tldr.search ` does first-class full-text search across the catalog\n (\"compress\", \"screenshot\", \"certificate\"); `tldr.list` prints the whole directory of documented commands.\n- **Machine-parseable.** `tldr.raw` returns raw Markdown so an agent can lift the exact example lines\n programmatically; `tldr.get` returns clean rendered text for humans-in-the-loop.\n- **Self-contained + offline.** One static binary, no dependencies; after the first fetch, lookups need no\n network. Runs on macOS and Linux (arm64 + amd64).\n- **The complete palette.** Every flag is reachable \u2014 platform overrides, languages, list/search, render a\n local page \u2014 via curated methods plus a verbatim-argv `tldr.exec` passthrough.\n\n## What it documents (a taste \u2014 all verbatim from real tldr pages)\n\n**Version control & GitHub**\n- `git` \u2014 Clone a repository: `git clone https://example.com/repo.git` \u00b7 View status: `git status`\n- `gh` \u2014 Clone a repo: `gh repo clone owner/repository` \u00b7 List open issues: `gh issue list`\n\n**Containers, orchestration & IaC**\n- `docker` \u2014 List all containers: `docker ps -a` \u00b7 Run a named container: `docker run --name name image`\n- `kubectl` \u2014 Wide resource listing: `kubectl get pods -o wide` \u00b7 Everything: `kubectl get all`\n- `terraform` \u2014 Initialize: `terraform init` \u00b7 Format config: `terraform fmt`\n- `ansible` \u2014 Ping a host group: `ansible group -m ping` \u00b7 Gather facts: `ansible group -m setup`\n- `helm` \u2014 Create a chart: `helm create chart_name` \u00b7 Add a repo: `helm repo add repository_name`\n\n**Cloud**\n- `aws` \u2014 Configure SSO: `aws configure sso` \u00b7 Who am I: `aws sts get-caller-identity`\n- `ssh` \u2014 Connect: `ssh username@remote_host` \u00b7 With an identity key: `ssh username@remote_host -i key`\n\n**Languages & package managers**\n- `npm` \u2014 Install deps: `npm install` \u00b7 A pinned version: `npm install package@version`\n- `cargo` \u2014 Install a crate: `cargo install crate_name` \u00b7 List installed: `cargo install --list`\n- `go` \u2014 Run a file: `go run file.go` \u00b7 Build a binary: `go build -o executable file.go`\n\n**Data & text**\n- `jq` \u2014 Pretty-print JSON: `jq '.' file.json`\n- `sed` \u2014 Replace text: `command | sed 's/apple/mango/g'` \u00b7 First line: `command | sed -n '1p'`\n- `awk` \u2014 Print a column: `awk '{print $5}' file` \u00b7 Last field, comma-separated: `awk -F ',' '{print $NF}' file`\n- `grep` \u2014 Recursive search: `grep -rI \"pattern\" path/to/dir`\n- `psql` \u2014 Connect: `psql -h host -p port -U username database`\n\n**Networking, files & archives**\n- `curl` \u2014 GET a URL: `curl https://example.com` \u00b7 Save to a file: `curl -O https://example.com/file.zip`\n- `rsync` \u2014 Archive-mode copy: `rsync -a path/to/source path/to/destination`\n- `tar` \u2014 Create a gzipped archive: `tar czf target.tar.gz file1 file2`\n- `find` \u2014 By extension: `find path/to/dir -name '*.ext'`\n- `openssl` \u2014 Self-signed cert: `openssl req -new -x509 -key private.key -out certificate.crt -days 365`\n- `ffmpeg` \u2014 Extract audio: `ffmpeg -i video.mp4 -vn sound.mp3`\n\n**System & services (Linux)**\n- `systemctl` \u2014 Failed units: `systemctl --failed` \u00b7 Manage a service: `systemctl start|stop|status unit`\n- `journalctl` \u2014 Follow a unit's logs: `journalctl -u unit -f`\n\n\u2026and ~7,300 more, across `common`, `linux`, `osx`, `windows`, `android`, and `sunos`.\n\n## Methods\n\n- `tldr.get` \u2014 a command's cheat-sheet as clean text.\n- `tldr.raw` \u2014 a page as raw Markdown (machine-parseable).\n- `tldr.search` \u2014 full-text search across the whole catalog for a keyword.\n- `tldr.list` \u2014 the directory of every documented command for this platform.\n- `tldr.info` \u2014 cache path / age / languages / page count.\n- `tldr.update` \u2014 refresh the local page cache.\n- `tldr.render` \u2014 render a local tldr-format `.md` page.\n- `tldr.exec` \u2014 run the client with a verbatim argv (any flag: `--platform`, `-L`, `--list-all`, \u2026) + optional stdin.\n- `tldr.cli_help` \u2014 the complete command-palette reference as clean text.\n- `tldr.version` \u2014 the delivered client + spec version. `tldr.help` \u2014 the self-describing method list.\n\n## How to use it\n\n1. **Recall a tool (no setup):** `tldr.get` `{ \"command\": \"tar\" }` \u2192 the tar cheat-sheet. First call auto-downloads the cache.\n2. **Multi-word page:** `tldr.get` `{ \"command\": \"git-commit\" }` (hyphen-joined) or `tldr.exec` `{ \"args\": [\"git\",\"commit\"] }`.\n3. **Find a tool by task:** `tldr.search` `{ \"keyword\": \"compress\" }` \u2192 every page mentioning compression.\n4. **Browse the catalog:** `tldr.list` \u2192 all documented commands for this platform.\n5. **Anything else:** `tldr.exec` `{ \"args\": [\"--platform\",\"linux\",\"systemctl\"] }` to force a platform.\n\n## Good to know\n\n- The page cache (~3 MiB, ~7,350+ pages) auto-downloads on first use and refreshes when stale; progress goes\n to stderr so method output on stdout stays clean. Use `tldr.update` to refresh, `--offline` (via `tldr.exec`)\n to pin the current cache.\n- On a non-zero exit the reply is `{stdout, stderr, exit}` so the caller sees everything the CLI produced.\n- Runs on **macOS and Linux** (arm64 + amd64); the binary is fetched from the Pilot artifact registry and\n sha-pinned on install. Client license **MIT** (tlrc); pages content **CC-BY-4.0**, \u00a9 tldr-pages contributors.\n- `tldr.help` lists every method with its latency class \u2014 the self-describing discovery contract.\n\n## tldr command palette (`tldr.cli_help`)\n```\ntldr \u2014 simplified, community-driven man pages (io.pilot.tldr)\n================================================================================\nPowered by tlrc v1.13.1, the official tldr-pages client (tldr client spec v2.3).\ntldr gives you concise, example-first help for ~7,350+ command-line tools \u2014 a\npractical cheat-sheet for almost every CLI an agent uses to build, deploy, and\noperate software. Open source: the tlrc client is MIT; the pages are authored by\nthe tldr-pages community and licensed CC-BY-4.0. Every command below is tested.\n\nUSAGE\n--------------------------------------------------------------------------------\n tldr [OPTIONS] [PAGE]...\n\n PAGE The command to look up, e.g. `tar`, `docker`, `kubectl`.\n Multi-word pages: join with a hyphen -> `git-commit`,\n `docker-compose`, `gh-repo` (or pass the words as separate\n arguments via the passthrough method: [\"git\",\"commit\"]).\n\nOPERATIONS (choose at most one per invocation)\n--------------------------------------------------------------------------------\n Show the tldr page for a command (rendered).\n -u, --update Update the local page cache (downloads only the\n languages that changed). Needs network.\n -l, --list List every page for the current platform (plus\n the cross-platform `common` set) \u2014 a directory of\n all documented tools, one name per line.\n -a, --list-all List every page across ALL platforms.\n -s, --search Search page CONTENTS for a keyword and print each\n match as `language platform page`. First-class\n full-text search across the whole catalog.\n --list-platforms List the available platforms.\n --list-languages List the installed languages.\n -i, --info Show cache info: path, age, installed languages,\n and total page count.\n -r, --render Render a local tldr page file (`.md`) \u2014 preview a\n page you are authoring or one you fetched.\n --clean-cache Interactively delete the cache directory contents.\n --gen-config Print the default config (TOML) to stdout.\n --config-path Print the default config path (creates the dir).\n -v, --version Print the client + spec version.\n -h, --help Print this complete command-palette reference.\n\nMODIFIERS (change how an operation behaves)\n--------------------------------------------------------------------------------\n -p, --platform Force a platform instead of the host's.\n Values: linux, osx (macOS), windows, android,\n sunos, common. Default: the OS you are on.\n -L, --language Force a language (repeatable), e.g. `-L es`,\n `-L fr`, `-L ja`. Default: config, else $LANG.\n --short-options Prefer short option forms in placeholders (-s).\n --long-options Prefer long option forms in placeholders (--long).\n --edit Show a GitHub \"edit this page\" link for the page.\n -o, --offline Never touch the network, even if the cache is\n stale (use the pages already downloaded).\n -c, --compact Strip empty lines from the output.\n --no-compact Keep empty lines (overrides --compact).\n -R, --raw Print the page as raw Markdown (no rendering) \u2014\n the most machine-parseable form.\n --no-raw Render instead of raw (overrides --raw).\n -q, --quiet Suppress status/progress messages and warnings.\n --verbose Print debug info (repeatable).\n --color Color output: auto (default), always, never.\n --config Use an alternative config file path.\n\nPLATFORM VALUES\n--------------------------------------------------------------------------------\n common Cross-platform tools (the largest bucket: git, docker, curl, jq, ...)\n linux Linux-specific pages (systemctl, journalctl, apt, ip, ...)\n osx macOS-specific pages (brew, pbcopy, launchctl, ...)\n windows Windows-specific pages (choco, taskkill, ...)\n android Android tool pages (adb, pm, ...)\n sunos illumos / SunOS pages\n\nCACHE & OFFLINE\n--------------------------------------------------------------------------------\n The page cache auto-downloads on first use (a ~3 MiB archive of ~7,350+ pages)\n and thereafter refreshes automatically when it goes stale. After the first\n fetch, lookups (`get`, `raw`, `search`, `list`, `info`, `render`) are fully\n local and offline. Progress messages are written to stderr, so method output\n on stdout stays clean. Use --offline to pin the current cache and --update to\n refresh on demand. Cache path: `tldr --info`.\n\nEXAMPLES\n--------------------------------------------------------------------------------\n tldr tar # show the tar cheat-sheet\n tldr git-commit # multi-word page (hyphen-joined)\n tldr --raw docker # raw Markdown for docker\n tldr --search compress # find every page mentioning \"compress\"\n tldr --list # directory of all tools for this platform\n tldr --list-all # every page across all platforms\n tldr --platform linux systemctl # force the linux page\n tldr --update # refresh the cache\n tldr --info # cache path / age / page count\n\nLICENSING\n--------------------------------------------------------------------------------\n Client (tlrc): MIT \u2014 https://github.com/tldr-pages/tlrc\n Pages content: CC-BY-4.0, (c) tldr-pages contributors \u2014\n https://github.com/tldr-pages/tldr\n Project home: https://tldr.sh\n\n```\n", +"vendor": "Pilot Protocol", +"vendorUrl": "https://pilotprotocol.network", +"license": "MIT", +"sourceUrl": "https://github.com/tldr-pages/tldr", +"homepage": "https://tldr.sh", +"version": "1.13.1", +"categoriesRaw": [ +"developer-tools", +"documentation", +"cli" +], +"keywords": [ +"tldr", +"tldr-pages", +"tlrc", +"man-pages", +"cheatsheet", +"cli-reference", +"documentation", +"examples", +"terminal", +"offline-docs", +"command-examples" +], +"bundleBytes": 5355931, +"installedBytes": 9629519, +"changelog": [ +{ +"version": "1.13.1", +"notes": [ +"Released v1.13.1 (tlrc client)" +] +} +], +"minPilotVersion": "1.0.0", +"runtimes": [ +"go" +], +"protection": "guarded", +"publishedAt": null, +"grants": [], +"inCatalogue": true } } \ No newline at end of file diff --git a/src/data/apps.ts b/src/data/apps.ts index ccc85deb..538aa517 100644 --- a/src/data/apps.ts +++ b/src/data/apps.ts @@ -2477,261 +2477,126 @@ export const apps: App[] = [ ], "publishedAt": "2026-07-07", "updatedAt": "2026-07-07" - } - , + }, { - "id": "io.pilot.didit", - "name": "Didit", - "tagline": "One API for identity and fraud \u2014 KYC, liveness, face match, AML, and more, with a no-broker key you mint in one call.", - "description": "**Didit is one API for identity and fraud** \u2014 KYC/ID verification, liveness, face match, AML screening, proof of address, database validation, and email/phone OTP, wrapped as a single Pilot app. It fronts Didit's full platform: **hosted verification sessions**, reusable **workflows**, **users**, **billing**, **blocklists**, **questionnaires**, and **webhooks** \u2014 40 methods in all.\n\n## Your own key, minted in one call \u2014 no email, no code\n\nThe hard part of using an identity provider is usually onboarding: signing up, confirming an email code, and wiring the key. This app removes all of it. **`didit.signup` takes no arguments** and returns a working key:\n\n- It signs a keyless request (your Pilot identity) to Pilot's Didit broker. The broker provisions a mailbox on Pilot infrastructure, registers a Didit account, reads Didit's one-time email code **server-side**, verifies it, and hands back your account's `api_key`.\n- The adapter caches `{email, api_key}` to `$APP/secrets.json`. From then on **every other method sends your key as `x-api-key` automatically** \u2014 you never see an inbox, a code, or the key unless you ask (`didit.account`).\n- **Idempotent:** the broker mints at most one Didit account per Pilot identity, so a repeat call \u2014 or a fresh install on another machine \u2014 returns the *same* account. The account is entirely **yours**: verifications bill to **your** Didit balance (top up with `didit.billing_topup`), and Pilot adds no markup. Each account includes Didit's **500 free full-KYC checks/month**; account creation, management, sessions CRUD, users, billing, blocklists, questionnaires and webhooks are all **free** \u2014 you pay only per verification you run.\n\n## The fast path\n\n1. `didit.signup {}` \u2192 your key is cached (one call, ~5s, no email).\n2. `didit.create_workflow` `{workflow_label:\"KYC\", features:[{feature:\"OCR\"},{feature:\"LIVENESS\"},{feature:\"FACE_MATCH\"}]}` \u2192 get `uuid`.\n3. `didit.create_session` `{workflow_id, vendor_data:\"user-123\"}` \u2192 send the user to the returned `url`.\n4. `didit.get_decision` `{session_id}` (or a webhook) \u2192 read the Approved/Declined result and extracted data.\n\n`didit.account` returns your provisioned email + key any time.\n\n## What each area does\n\n- **Sessions** \u2014 hosted flows where the user completes verification at a Didit URL, so you never handle document images: `create_session`, `get_decision`, `list_sessions`, `update_session_status` (approve/decline/resubmit), `delete_session`, `batch_delete_sessions`, `share_session` / `import_session` (B2B KYC reuse), `list_reviews`, `create_review`.\n- **Workflows** \u2014 templates built from an ordered `features` array (`OCR`, `LIVENESS`, `FACE_MATCH`, `AML`, `PROOF_OF_ADDRESS`, `PHONE_VERIFICATION`, `EMAIL_VERIFICATION`, `DATABASE_VALIDATION`, `IP_ANALYSIS`, `AGE_ESTIMATION`, `NFC`, `QUESTIONNAIRE`, `KYB_*`), each with an optional per-feature `config`: `create_workflow`, `list_workflows`, `get_workflow`, `update_workflow`, `delete_workflow`.\n- **Standalone checks (JSON, no session)** \u2014 `aml` (sanctions/PEP/adverse-media, $0.20), `database_validation` (gov sources, from $0.05).\n- **Contact** \u2014 `email_send`/`email_check` ($0.03) and `phone_send`/`phone_check` (from $0.03) OTP verification.\n- **Billing** \u2014 `billing_balance`, `billing_topup` (Stripe checkout URL).\n- **Governance** \u2014 `blocklist_*` (auto-flag repeat faces/docs/phones/emails), `questionnaire_*` (custom forms), `users_*` (people grouped by your `vendor_data`), `get_webhook`/`update_webhook` (set + rotate the HMAC secret programmatically).\n\n## Pricing\n\nPay-per-check on **your** Didit balance \u2014 no Pilot markup. See the full rate card in `didit.help`. Highlights: full KYC bundle **$0.33/check** (first **500/month free**), ID verification $0.15, passive liveness $0.10, face match $0.05, **face search free**, AML $0.20, PoA $0.20, email/phone from $0.03. Image-upload APIs (direct ID scan, liveness, face match, face search, age estimation, PoA) run through the **hosted session** flow rather than as direct methods.\n\n## Notes\n\n- The adapter dials exactly two hosts: Pilot's broker (`broker.pilotprotocol.network`) for the one-call `didit.signup`, and Didit (`verification.didit.me`) for every operational call with your cached key. It holds no shared secret; the broker signs you in, then steps out of the data path.\n- Plain request/response REST \u2014 no websockets, no async jobs. Rate limits: ~600 session-creates/min, 300/min per other method; the account OTP register is 5/IP/hour.\n- Errors surface verbatim: `401` (run `didit.signup` first), `403` (top up credits), `429` (back off).\n", + "id": "io.pilot.tldr", + "name": "tldr", + "tagline": "Simplified man pages for ~7,350+ CLIs — instant, example-first command recall for agents", + "description": "# tldr — simplified man pages for almost every CLI, native for agents\n\nThis app installs the official **tldr-pages** client **tlrc v1.13.1** on the host and fronts it as typed\nmethods. tldr is *\"simplified, community-driven man pages\"* — concise, **example-first** cheat-sheets for\n**~7,350+ command-line tools**, the practical opposite of a dense `man` page. Instead of scrolling a manual,\nan agent asks `tldr docker` and gets the handful of commands it actually needs, each with a one-line\ndescription. The bundle is the upstream tlrc binary (sha-pinned per OS/arch, fetched from the Pilot artifact\nregistry at install) plus a tiny wrapper that serves a complete, color-free command-palette reference.\n\n**Open source, and every command is tested.** The tlrc client is **MIT**; the pages are written by the\ntldr-pages community and licensed **CC-BY-4.0**. The full page catalog (~3 MiB) auto-downloads on first use\nand then works offline.\n\n## Why an agent wants this\n\n- **Recall any CLI instantly.** `tldr ` returns the 5–10 invocations that matter — no manual to parse,\n no web search. The dictionary of man pages, for the whole toolbox an agent builds and deploys with.\n- **Discover tools by task.** `tldr.search ` does first-class full-text search across the catalog\n (\"compress\", \"screenshot\", \"certificate\"); `tldr.list` prints the whole directory of documented commands.\n- **Machine-parseable.** `tldr.raw` returns raw Markdown so an agent can lift the exact example lines\n programmatically; `tldr.get` returns clean rendered text for humans-in-the-loop.\n- **Self-contained + offline.** One static binary, no dependencies; after the first fetch, lookups need no\n network. Runs on macOS and Linux (arm64 + amd64).\n- **The complete palette.** Every flag is reachable — platform overrides, languages, list/search, render a\n local page — via curated methods plus a verbatim-argv `tldr.exec` passthrough.\n\n## What it documents (a taste — all verbatim from real tldr pages)\n\n**Version control & GitHub**\n- `git` — Clone a repository: `git clone https://example.com/repo.git` · View status: `git status`\n- `gh` — Clone a repo: `gh repo clone owner/repository` · List open issues: `gh issue list`\n\n**Containers, orchestration & IaC**\n- `docker` — List all containers: `docker ps -a` · Run a named container: `docker run --name name image`\n- `kubectl` — Wide resource listing: `kubectl get pods -o wide` · Everything: `kubectl get all`\n- `terraform` — Initialize: `terraform init` · Format config: `terraform fmt`\n- `ansible` — Ping a host group: `ansible group -m ping` · Gather facts: `ansible group -m setup`\n- `helm` — Create a chart: `helm create chart_name` · Add a repo: `helm repo add repository_name`\n\n**Cloud**\n- `aws` — Configure SSO: `aws configure sso` · Who am I: `aws sts get-caller-identity`\n- `ssh` — Connect: `ssh username@remote_host` · With an identity key: `ssh username@remote_host -i key`\n\n**Languages & package managers**\n- `npm` — Install deps: `npm install` · A pinned version: `npm install package@version`\n- `cargo` — Install a crate: `cargo install crate_name` · List installed: `cargo install --list`\n- `go` — Run a file: `go run file.go` · Build a binary: `go build -o executable file.go`\n\n**Data & text**\n- `jq` — Pretty-print JSON: `jq '.' file.json`\n- `sed` — Replace text: `command | sed 's/apple/mango/g'` · First line: `command | sed -n '1p'`\n- `awk` — Print a column: `awk '{print $5}' file` · Last field, comma-separated: `awk -F ',' '{print $NF}' file`\n- `grep` — Recursive search: `grep -rI \"pattern\" path/to/dir`\n- `psql` — Connect: `psql -h host -p port -U username database`\n\n**Networking, files & archives**\n- `curl` — GET a URL: `curl https://example.com` · Save to a file: `curl -O https://example.com/file.zip`\n- `rsync` — Archive-mode copy: `rsync -a path/to/source path/to/destination`\n- `tar` — Create a gzipped archive: `tar czf target.tar.gz file1 file2`\n- `find` — By extension: `find path/to/dir -name '*.ext'`\n- `openssl` — Self-signed cert: `openssl req -new -x509 -key private.key -out certificate.crt -days 365`\n- `ffmpeg` — Extract audio: `ffmpeg -i video.mp4 -vn sound.mp3`\n\n**System & services (Linux)**\n- `systemctl` — Failed units: `systemctl --failed` · Manage a service: `systemctl start|stop|status unit`\n- `journalctl` — Follow a unit's logs: `journalctl -u unit -f`\n\n…and ~7,300 more, across `common`, `linux`, `osx`, `windows`, `android`, and `sunos`.\n\n## Methods\n\n- `tldr.get` — a command's cheat-sheet as clean text.\n- `tldr.raw` — a page as raw Markdown (machine-parseable).\n- `tldr.search` — full-text search across the whole catalog for a keyword.\n- `tldr.list` — the directory of every documented command for this platform.\n- `tldr.info` — cache path / age / languages / page count.\n- `tldr.update` — refresh the local page cache.\n- `tldr.render` — render a local tldr-format `.md` page.\n- `tldr.exec` — run the client with a verbatim argv (any flag: `--platform`, `-L`, `--list-all`, …) + optional stdin.\n- `tldr.cli_help` — the complete command-palette reference as clean text.\n- `tldr.version` — the delivered client + spec version. `tldr.help` — the self-describing method list.\n\n## How to use it\n\n1. **Recall a tool (no setup):** `tldr.get` `{ \"command\": \"tar\" }` → the tar cheat-sheet. First call auto-downloads the cache.\n2. **Multi-word page:** `tldr.get` `{ \"command\": \"git-commit\" }` (hyphen-joined) or `tldr.exec` `{ \"args\": [\"git\",\"commit\"] }`.\n3. **Find a tool by task:** `tldr.search` `{ \"keyword\": \"compress\" }` → every page mentioning compression.\n4. **Browse the catalog:** `tldr.list` → all documented commands for this platform.\n5. **Anything else:** `tldr.exec` `{ \"args\": [\"--platform\",\"linux\",\"systemctl\"] }` to force a platform.\n\n## Good to know\n\n- The page cache (~3 MiB, ~7,350+ pages) auto-downloads on first use and refreshes when stale; progress goes\n to stderr so method output on stdout stays clean. Use `tldr.update` to refresh, `--offline` (via `tldr.exec`)\n to pin the current cache.\n- On a non-zero exit the reply is `{stdout, stderr, exit}` so the caller sees everything the CLI produced.\n- Runs on **macOS and Linux** (arm64 + amd64); the binary is fetched from the Pilot artifact registry and\n sha-pinned on install. Client license **MIT** (tlrc); pages content **CC-BY-4.0**, © tldr-pages contributors.\n- `tldr.help` lists every method with its latency class — the self-describing discovery contract.\n\n## tldr command palette (`tldr.cli_help`)\n```\ntldr — simplified, community-driven man pages (io.pilot.tldr)\n================================================================================\nPowered by tlrc v1.13.1, the official tldr-pages client (tldr client spec v2.3).\ntldr gives you concise, example-first help for ~7,350+ command-line tools — a\npractical cheat-sheet for almost every CLI an agent uses to build, deploy, and\noperate software. Open source: the tlrc client is MIT; the pages are authored by\nthe tldr-pages community and licensed CC-BY-4.0. Every command below is tested.\n\nUSAGE\n--------------------------------------------------------------------------------\n tldr [OPTIONS] [PAGE]...\n\n PAGE The command to look up, e.g. `tar`, `docker`, `kubectl`.\n Multi-word pages: join with a hyphen -> `git-commit`,\n `docker-compose`, `gh-repo` (or pass the words as separate\n arguments via the passthrough method: [\"git\",\"commit\"]).\n\nOPERATIONS (choose at most one per invocation)\n--------------------------------------------------------------------------------\n Show the tldr page for a command (rendered).\n -u, --update Update the local page cache (downloads only the\n languages that changed). Needs network.\n -l, --list List every page for the current platform (plus\n the cross-platform `common` set) — a directory of\n all documented tools, one name per line.\n -a, --list-all List every page across ALL platforms.\n -s, --search Search page CONTENTS for a keyword and print each\n match as `language platform page`. First-class\n full-text search across the whole catalog.\n --list-platforms List the available platforms.\n --list-languages List the installed languages.\n -i, --info Show cache info: path, age, installed languages,\n and total page count.\n -r, --render Render a local tldr page file (`.md`) — preview a\n page you are authoring or one you fetched.\n --clean-cache Interactively delete the cache directory contents.\n --gen-config Print the default config (TOML) to stdout.\n --config-path Print the default config path (creates the dir).\n -v, --version Print the client + spec version.\n -h, --help Print this complete command-palette reference.\n\nMODIFIERS (change how an operation behaves)\n--------------------------------------------------------------------------------\n -p, --platform Force a platform instead of the host's.\n Values: linux, osx (macOS), windows, android,\n sunos, common. Default: the OS you are on.\n -L, --language Force a language (repeatable), e.g. `-L es`,\n `-L fr`, `-L ja`. Default: config, else $LANG.\n --short-options Prefer short option forms in placeholders (-s).\n --long-options Prefer long option forms in placeholders (--long).\n --edit Show a GitHub \"edit this page\" link for the page.\n -o, --offline Never touch the network, even if the cache is\n stale (use the pages already downloaded).\n -c, --compact Strip empty lines from the output.\n --no-compact Keep empty lines (overrides --compact).\n -R, --raw Print the page as raw Markdown (no rendering) —\n the most machine-parseable form.\n --no-raw Render instead of raw (overrides --raw).\n -q, --quiet Suppress status/progress messages and warnings.\n --verbose Print debug info (repeatable).\n --color Color output: auto (default), always, never.\n --config Use an alternative config file path.\n\nPLATFORM VALUES\n--------------------------------------------------------------------------------\n common Cross-platform tools (the largest bucket: git, docker, curl, jq, ...)\n linux Linux-specific pages (systemctl, journalctl, apt, ip, ...)\n osx macOS-specific pages (brew, pbcopy, launchctl, ...)\n windows Windows-specific pages (choco, taskkill, ...)\n android Android tool pages (adb, pm, ...)\n sunos illumos / SunOS pages\n\nCACHE & OFFLINE\n--------------------------------------------------------------------------------\n The page cache auto-downloads on first use (a ~3 MiB archive of ~7,350+ pages)\n and thereafter refreshes automatically when it goes stale. After the first\n fetch, lookups (`get`, `raw`, `search`, `list`, `info`, `render`) are fully\n local and offline. Progress messages are written to stderr, so method output\n on stdout stays clean. Use --offline to pin the current cache and --update to\n refresh on demand. Cache path: `tldr --info`.\n\nEXAMPLES\n--------------------------------------------------------------------------------\n tldr tar # show the tar cheat-sheet\n tldr git-commit # multi-word page (hyphen-joined)\n tldr --raw docker # raw Markdown for docker\n tldr --search compress # find every page mentioning \"compress\"\n tldr --list # directory of all tools for this platform\n tldr --list-all # every page across all platforms\n tldr --platform linux systemctl # force the linux page\n tldr --update # refresh the cache\n tldr --info # cache path / age / page count\n\nLICENSING\n--------------------------------------------------------------------------------\n Client (tlrc): MIT — https://github.com/tldr-pages/tlrc\n Pages content: CC-BY-4.0, (c) tldr-pages contributors —\n https://github.com/tldr-pages/tldr\n Project home: https://tldr.sh\n\n```\n", "categories": [ - "security" + "infra" ], - "primaryCategory": "security", + "primaryCategory": "infra", "keywords": [ - "kyc", - "identity", - "verification", - "aml", - "liveness", - "face-match", - "biometrics", - "proof-of-address", - "sanctions", - "pep", - "onboarding", - "fraud", - "kyb", - "otp", - "didit" - ], - "version": "1.0.0", - "vendor": "Didit", - "vendorUrl": "https://didit.me", - "license": "Proprietary", - "sourceUrl": "https://github.com/didit-protocol/skills", - "homepage": "https://didit.me", + "tldr", + "tldr-pages", + "tlrc", + "man-pages", + "cheatsheet", + "cli-reference", + "documentation", + "examples", + "terminal", + "offline-docs", + "command-examples" + ], + "version": "1.13.1", + "vendor": "Pilot Protocol", + "vendorUrl": "https://pilotprotocol.network", + "license": "MIT", + "sourceUrl": "https://github.com/tldr-pages/tldr", + "homepage": "https://tldr.sh", "methods": [ { - "name": "didit.signup", - "summary": "Get your own Didit API key in ONE call \u2014 no email, no code, no human step. This signs a keyless request to Pilot's Didit broker, which provisions a mailbox on Pilot infrastructure, registers a Didit account, reads the emailed one-time code server-side, verifies it, and returns your account's api_key. The adapter caches {email, api_key} to $APP/secrets.json, and from then on EVERY other didit.* method authenticates automatically (x-api-key) \u2014 you never handle the key or an inbox. Idempotent: the broker mints at most one account per Pilot identity, so a repeat call (or a fresh install) returns the SAME account. Run this ONCE before any other method. FREE \u2014 account creation costs nothing; you pay only per verification you run, and each account includes Didit's 500 free full-KYC checks/month. The account (email + key) is retrievable any time via didit.account. Takes no arguments." - }, - { - "name": "didit.account", - "summary": "Retrieve your cached Didit account \u2014 the email the broker provisioned for you and your api_key \u2014 plus a signed_up flag. Local, instant, FREE (reads $APP/secrets.json; no backend call). Use it to confirm you're signed up or to read your key. If signed_up is false, call didit.signup first." - }, - { - "name": "didit.billing_balance", - "summary": "Check your remaining Didit credit balance (and auto-refill settings). FREE. Returns {balance, auto_refill_enabled, auto_refill_amount, auto_refill_threshold}. Verifications draw down this balance; check it before a batch of checks." - }, - { - "name": "didit.billing_topup", - "summary": "Add credit to your Didit balance. FREE call \u2014 returns a Stripe checkout URL (checkout_session_url) to present to the user; the charge happens on Stripe, not through Pilot." - }, - { - "name": "didit.create_workflow", - "summary": "Create a verification workflow \u2014 the reusable template that defines which checks a hosted session runs, in order. FREE to create; you're billed per feature only when a session actually runs it. Returns {uuid} \u2014 pass it as workflow_id to didit.create_session. The v3 API takes a `features` ARRAY (in the order users complete them); each item is {feature, config?} where feature is one of OCR, NFC, LIVENESS, FACE_MATCH, PROOF_OF_ADDRESS, QUESTIONNAIRE, DOCUMENT_AI, PHONE_VERIFICATION, EMAIL_VERIFICATION, DATABASE_VALIDATION, AML, IP_ANALYSIS, AGE_ESTIMATION, KYB_REGISTRY, KYB_DOCUMENTS, KYB_KEY_PEOPLE. Example: [{\"feature\":\"OCR\"},{\"feature\":\"LIVENESS\",\"config\":{\"face_liveness_method\":\"PASSIVE\"}},{\"feature\":\"FACE_MATCH\"}]. The API uses a strict field whitelist \u2014 any undeclared key (e.g. workflow_type) is a 400. Max 50 workflows per account." - }, - { - "name": "didit.list_workflows", - "summary": "List your verification workflows with their features and total_price. FREE." - }, - { - "name": "didit.get_workflow", - "summary": "Get one workflow by id. FREE." + "name": "tldr.get", + "summary": "Look up a command's tldr page and return the concise, example-first cheat-sheet as clean text (color stripped). The fastest way to recall exactly how to invoke a CLI. This is `tldr --quiet --color never `. The page cache auto-downloads on first use." }, { - "name": "didit.update_workflow", - "summary": "Update a workflow (partial \u2014 send only the fields to change; same field set as create_workflow, e.g. a replacement `features` array, workflow_label, status, is_default). FREE." + "name": "tldr.raw", + "summary": "Return a page as raw Markdown (unrendered) — the most machine-parseable form, ideal for an agent that wants to extract the example commands programmatically. This is `tldr --quiet --raw `." }, { - "name": "didit.delete_workflow", - "summary": "Delete a workflow. FREE. Existing sessions are unaffected. Returns 204." + "name": "tldr.search", + "summary": "Full-text search across the entire tldr catalog for a keyword and return each matching page as `language platform page`. First-class content search — find the right tool when you only know the task (\"compress\", \"screenshot\", \"json\"). This is `tldr --quiet --search `." }, { - "name": "didit.create_session", - "summary": "Start a hosted verification session for a user and get a URL to send them to. This is Didit's recommended path for ID/liveness/face-match/AML/PoA/etc. \u2014 the user completes everything at the hosted URL, so you never handle document images yourself. COST is the sum of the features the workflow enables (e.g. a full KYC bundle \u2248 $0.33/check; 500 full-KYC checks/month are free), charged to your Didit balance when the session runs. Returns {session_id, session_token, url, status}. Poll didit.get_decision or set a webhook for the result. Nested objects (contact_details, expected_details) are passed as JSON objects." + "name": "tldr.list", + "summary": "List every documented command for the current platform plus the cross-platform `common` set — a directory of all tools tldr covers, one name per line. Pair with tldr.search to explore the catalog. This is `tldr --quiet --list`. (Use tldr.exec with [\"--list-all\"] for every platform.)" }, { - "name": "didit.get_decision", - "summary": "Get the full decision and extracted data for a session \u2014 status plus id_verifications, liveness_checks, face_matches, aml_screenings, phone/email verifications, poa_verifications, database_validations, ip_analyses, and reviews. FREE (reading results). Image URLs in the response expire after 60 minutes. Statuses: Not Started | In Progress | In Review | Approved | Declined | Abandoned | Expired | Resubmitted." + "name": "tldr.info", + "summary": "Show cache information: the on-disk cache path, its age, the installed languages, and the total page count. This is `tldr --info`." }, { - "name": "didit.list_sessions", - "summary": "List/filter your sessions (paginated). FREE." + "name": "tldr.update", + "summary": "Refresh the local page cache from the tldr-pages archive (downloads only the languages that changed). Needs network; the cache also auto-downloads on first use, so this is only for an explicit refresh. This is `tldr --update`." }, { - "name": "didit.update_session_status", - "summary": "Manually override a session's status (approve/decline/resubmit) \u2014 the programmatic-review action. FREE. For Resubmitted, pass nodes_to_resubmit; the session must be Declined, In Review, or Abandoned." + "name": "tldr.render", + "summary": "Render a local tldr page file (a `.md` in tldr format) as clean text — preview a page you are authoring or one written elsewhere. This is `tldr --quiet --color never --render `." }, { - "name": "didit.delete_session", - "summary": "Permanently delete a session and all its data. FREE. Returns 204." + "name": "tldr.exec", + "summary": "Run the tldr client with a verbatim argv — the full surface beyond the curated methods. Payload is {\"args\":[...]} forwarded straight to `tldr`, plus optional {\"stdin\":\"...\"}. Use it for any flag or combination the curated methods don't cover: `--platform linux systemctl` to force a platform, `--list-all`/`--list-platforms`/`--list-languages`, `-L es` for another language, `--short-options`/`--long-options`, `--edit`, `--offline`, `--gen-config`, or a multi-word page as separate args. Examples: {\"args\":[\"--platform\",\"linux\",\"systemctl\"]}; {\"args\":[\"--list-all\"]}; {\"args\":[\"git\",\"commit\"]}; {\"args\":[\"-L\",\"es\",\"tar\"]}." }, { - "name": "didit.batch_delete_sessions", - "summary": "Delete many sessions at once by number (or all). FREE." + "name": "tldr.cli_help", + "summary": "Return the complete tldr command-palette reference — every operation and modifier flag, its values and defaults, the platform list, cache/offline behavior, search & directory usage, worked examples, and licensing — as clean, color-free text. The full contract for what tldr.get / tldr.exec accept. This is `tldr --help`." }, { - "name": "didit.share_session", - "summary": "Generate a share_token so a partner can import a finished session (B2B KYC reuse). FREE. Works only for finished sessions." - }, - { - "name": "didit.import_session", - "summary": "Import a session shared by a partner via its share_token. FREE." - }, - { - "name": "didit.list_reviews", - "summary": "List the manual-review activity for a session (status changes, notes). FREE." - }, - { - "name": "didit.create_review", - "summary": "Add a manual review decision to a session (Approved/Declined/In Review). FREE." - }, - { - "name": "didit.aml", - "summary": "Screen a person or company against sanctions, PEP, and adverse-media watchlists (standalone, no session). COST $0.20/check on your Didit balance. Returns matches with scores and categories." - }, - { - "name": "didit.database_validation", - "summary": "Cross-check identity fields against government / authoritative databases (standalone). COST from $0.05/check (1x1, single source) to $0.30 (2x2, two-source cross-validation); varies by country/source. Covers 1,000+ sources across 18+ countries." - }, - { - "name": "didit.email_send", - "summary": "Send a one-time verification code to an email address. Part of email verification ($0.03 per completed verification, charged to your Didit balance)." - }, - { - "name": "didit.email_check", - "summary": "Verify the email OTP the user received. Completes an email verification ($0.03)." - }, - { - "name": "didit.phone_send", - "summary": "Send a one-time code by SMS / WhatsApp / Telegram. Part of phone verification (from $0.03 per completed verification, varies by channel)." - }, - { - "name": "didit.phone_check", - "summary": "Verify the phone OTP the user received. Completes a phone verification (from $0.03)." - }, - { - "name": "didit.blocklist_add", - "summary": "Add a session's face/document/phone/email to your blocklist so future matches auto-flag (FACE_IN_BLOCKLIST, etc.). FREE." - }, - { - "name": "didit.blocklist_remove", - "summary": "Remove items from your blocklist. FREE." - }, - { - "name": "didit.blocklist_list", - "summary": "List your blocklisted items. FREE." - }, - { - "name": "didit.create_questionnaire", - "summary": "Create a custom form (7 element types) to attach to a questionnaire_verification workflow. FREE." - }, - { - "name": "didit.list_questionnaires", - "summary": "List your questionnaires. FREE." - }, - { - "name": "didit.get_questionnaire", - "summary": "Get one questionnaire. FREE." - }, - { - "name": "didit.update_questionnaire", - "summary": "Update a questionnaire (partial). FREE." - }, - { - "name": "didit.delete_questionnaire", - "summary": "Delete a questionnaire. FREE. Returns 204." - }, - { - "name": "didit.list_users", - "summary": "List verified individuals (grouped by vendor_data) with status and session counts. FREE." - }, - { - "name": "didit.get_user", - "summary": "Get one user by your vendor_data. FREE." - }, - { - "name": "didit.update_user", - "summary": "Update a user's display name / manual status / metadata. FREE." - }, - { - "name": "didit.batch_delete_users", - "summary": "Delete many users by vendor_data (or all). FREE." - }, - { - "name": "didit.get_webhook", - "summary": "Get your webhook configuration (url, version, HMAC secret_shared_key, capture_method). FREE." - }, - { - "name": "didit.update_webhook", - "summary": "Set/rotate your webhook config programmatically \u2014 no console needed. FREE." - }, - { - "name": "didit.help", - "summary": "Discovery: every method with params, latency, and the per-endpoint pricing rate card." + "name": "tldr.version", + "summary": "Print the delivered client and tldr-client-spec version, e.g. \"tlrc v1.13.1 (implementing the tldr client specification v2.3)\". Needs no cache. This is `tldr --version`." } ], "changelog": [ { - "version": "1.0.0", + "version": "1.13.1", "notes": [ - "Initial release \u2014 the full Didit identity platform over one byo HTTPS app: 39 methods + didit.help.", - "One-call broker signup: didit.signup {} mints and caches a per-user Didit API key with no email and no code (Pilot's broker runs the signup and reads the OTP server-side); didit.account retrieves it; ops stay direct to Didit.", - "KYC/ID, liveness, face match, AML, proof-of-address, database validation, email/phone OTP, hosted sessions, workflows, billing, blocklist, questionnaires, users, webhooks \u2014 per-endpoint pricing in didit.help." + "Released v1.13.1 (tlrc client)" ] } ], - "grants": [ - "fs.read:$APP/config.json", - "fs.read:$APP/secrets.json", - "fs.write:$APP/secrets.json", - "key.sign:self", - "net.dial:verification.didit.me", - "net.dial:broker.pilotprotocol.network", - "audit.log:*" - ], + "grants": [], "bundles": [ { "platform": "darwin-arm64", - "bytes": 4954879 + "bytes": 4873897 }, { "platform": "darwin-amd64", - "bytes": 5287106 + "bytes": 5088134 }, { "platform": "linux-arm64", - "bytes": 4696257 + "bytes": 5570168 }, { "platform": "linux-amd64", - "bytes": 5130067 + "bytes": 4927457 } ], - "installedBytes": 9324763, + "installedBytes": 9629519, "depends": [], - "protection": "shareable", + "protection": "guarded", "featured": false, "real": true, "inCatalogue": true, "icon": { "mode": "image", - "img": "/appicons/io.pilot.didit.png", - "fit": "contain", + "img": "/appicons/io.pilot.tldr.png", + "fit": "cover", "pos": "center", - "color": "#ffffff", + "color": "#203050", "ink": false, "file": null, - "hue": 220 + "hue": 30 }, - "minPilotVersion": "1.10.0", + "minPilotVersion": "1.0.0", "runtimes": [ "go" ], - "publishedAt": "2026-07-07", - "updatedAt": "2026-07-08" + "publishedAt": null, + "updatedAt": null } ];