{
  "markdown": "# Releases CLI\n\n[![npm](https://img.shields.io/npm/v/@buildinternet/releases?color=cb3837&label=npm&logo=npm)](https://www.npmjs.com/package/@buildinternet/releases)\n[![Release](https://github.com/buildinternet/releases-cli/actions/workflows/release.yml/badge.svg)](https://github.com/buildinternet/releases-cli/actions/workflows/release.yml)\n[![Test](https://github.com/buildinternet/releases-cli/actions/workflows/test.yml/badge.svg)](https://github.com/buildinternet/releases-cli/actions/workflows/test.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n[![Backend](https://img.shields.io/badge/backend-buildinternet%2Freleases-24292e?logo=github)](https://github.com/buildinternet/releases)\n[![skills.sh](https://skills.sh/b/buildinternet/releases-cli)](https://skills.sh/buildinternet/releases-cli)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/buildinternet/releases-cli)\n\n**[releases.sh](https://releases.sh)** &nbsp;·&nbsp; **[Backend monorepo →](https://github.com/buildinternet/releases)** &nbsp;·&nbsp; [Install](#install) &nbsp;·&nbsp; [Usage](#usage) &nbsp;·&nbsp; [Authentication](#authentication)\n\nThe changelog & release-notes registry for developers and AI agents — a lean HTTP client for [releases.sh](https://releases.sh). Search and browse release notes from GitHub, RSS/Atom/JSON feeds, and product changelog pages, with no local infrastructure.\n\nThis repo is the **CLI** only. The backend that powers `api.releases.sh` — the API worker, MCP server, web frontend, and ingest pipeline — is open source in its own repo: [buildinternet/releases](https://github.com/buildinternet/releases).\n\nThe CLI talks to the hosted registry at `api.releases.sh`. **Search and browse work out of the box — no account or config.** Sign in with `releases login` to follow orgs and products, get a personalized feed, and manage outbound webhooks; it mints a personal **read-only** API key (and earns you higher rate limits as those roll out). Write/admin access (`releases admin …`) is a separate, closed beta — open an issue for early access.\n\n## Install\n\n```bash\nbrew install buildinternet/tap/releases          # Homebrew (macOS / Linux)\nnpm install -g @buildinternet/releases           # npm (macOS / Linux / Windows)\ncurl -fsSL https://releases.sh/install | bash    # shell installer (macOS / Linux)\n```\n\nOr run without installing: `npx @buildinternet/releases@latest search react` — always pin `@latest`, since bare `npx @buildinternet/releases` caches the first-fetched version forever. Signed, precompiled binaries for every platform are on the [Releases page](https://github.com/buildinternet/releases-cli/releases) (with checksums) for air-gapped installs or version pinning.\n\nHomebrew installs shell completions automatically. On every other path, enable them once with `releases completion install` (auto-detects `$SHELL`).\n\n## Usage\n\n```bash\nreleases search \"authentication\"\nreleases search \"slack integration\" --since 90d   # bound release hits by publish date\nreleases tail next-js                              # latest releases; `tail -f` to follow\nreleases list --category ai\nreleases get vercel                                # org, product, or source\nreleases org overview vercel                       # full AI-generated org overview\nreleases stats\nreleases submit https://acme.dev/changelog         # suggest a source for the registry\nreleases feedback \"great tool — here's an idea…\"   # message the maintainers\n```\n\nIdentifiers are interchangeable: every command accepts a slug, a typed ID (`org_…`, `prod_…`, `src_…`, `rel_…`), or an `org/slug` coordinate (e.g. `vercel/next-js`). IDs are stable across renames. `search`, `tail`/`latest`, and `feed` take `--since` / `--until` to bound releases by date — an ISO date (`2026-01-01`) or relative shorthand (`90d`, `4w`, `6m`, `2y`).\n\nAdd `--json` to any reader command for machine-readable output — list commands emit a `{ items, pagination }` envelope. Release readers return a slim shape by default (id, version, title, summary, excerpt, url, dates, plus any `media` with its `r2Url`); pass `--full` for the complete payload. `tail`/`latest` take `--count` (alias `--limit`, 1–100). Run `releases <command> --help` for per-command flags.\n\n### Following & personalized feed\n\nFollow orgs and products to build a personalized feed. These act on your own account, so sign in first (`releases login`):\n\n```bash\nreleases follow vercel              # org slug, org/product coordinate, or typed ID\nreleases following                  # list what you follow\nreleases feed                       # your release timeline (--json, --page, --limit)\nreleases unfollow vercel\n```\n\nFollowing an organization includes all of its products.\n\n### Outbound webhooks\n\nReceive signed `release.created` POSTs in real time — for everything you follow or a single org:\n\n```bash\nreleases webhook add --scope follows --url https://your.app/hook\nreleases webhook add --org vercel --url https://your.app/hook --description \"prod\"\nreleases webhook list\nreleases webhook test <id>\nreleases webhook verify --key … --signature … --timestamp … --body-file capture.json\n```\n\nOrg-scoped: up to 10 (`--org`, optional `--source`, `--product`, `--type feature|rollup`). Follows-scoped: one webhook (`--scope follows`) that tracks your current follow graph; optional `--type` narrows delivery. Signing keys are shown once on `add` / `rotate-secret`. You can also manage webhooks in the browser at [releases.sh/account/notifications](https://releases.sh/account/notifications). Operator/admin webhooks (`releases admin webhook …`) are a separate root-key surface.\n\n### Contribute to the registry\n\nNone of these need an account or API key:\n\n```bash\nreleases submit https://acme.dev/changelog       # suggest a changelog / release-notes URL\nreleases feedback \"tail -f reconnects slowly\"     # report a bug or share an idea\nreleases json validate releases.json              # check a releases.json manifest before publishing\n```\n\n`submit` and `feedback` both prompt interactively when run with no argument, accept input on stdin, and take `--dry-run --json` to preview the payload without sending. `feedback --type` is `bug` / `idea` / `other`; `submit --note` carries extra context (product name, repo, feed quirks). Submissions feed the same review queue as the [web submit form](https://releases.sh/submit).\n\n`json validate` is a read-only manifest check: it validates a [`releases.json`](https://releases.sh/docs/listing) v2 file against the published schema (pass a path or `-` for stdin) and adds `--json` for machine-readable output — no network, no submission.\n\n### MCP & Claude Code\n\nPoint any MCP-compatible agent at the hosted server:\n\n```bash\nnpx mcp-remote https://mcp.releases.sh/mcp\n```\n\nThis repo is also a Claude Code marketplace with the `releases` plugin — hosted MCP tools, a `/releases` lookup command, and auto-trigger skills:\n\n```bash\n/plugin marketplace add buildinternet/releases-cli\n/plugin install releases@releases\n```\n\nOperator/maintainer skills (source onboarding, parsing, playbooks) live with the backend in the [releases monorepo](https://github.com/buildinternet/releases) — its `.claude/skills/` tree is picked up automatically in a checkout.\n\nOr install just the skills into any agent (Cursor, Codex, Gemini CLI, Windsurf, …):\n\n```bash\nreleases skills install        # or, without the CLI: npx skills add buildinternet/releases-cli\n```\n\n## Authentication\n\nSearch and browse need no auth. Signing in powers the personal surfaces — **follows, feed, and outbound webhooks** — and mints a personal **read-only** key (it can't write to the catalog or run `admin` commands; it identifies you for `/v1/me/*` account routes). The easiest way in is your browser — nothing to copy or paste:\n\n```bash\nreleases login              # opens your browser to approve, then saves the key\nreleases login --no-browser # print the URL + code to open yourself (headless / SSH)\n```\n\nThis uses the OAuth 2.0 Device Authorization Grant (RFC 8628): approve a short code at [releases.sh/device](https://releases.sh/device) in a signed-in browser, and a read-only key is saved to `~/.releases/credentials` (`0600`). Manage keys with `releases keys list` / `create` / `revoke`.\n\nAlready issued a token (e.g. a write/admin key during the closed beta)? Store it without the browser flow via `releases auth login` (interactive, `--token <token>`, or `--token -` for stdin); it's verified before being saved. `releases auth status` shows the current state (`whoami` is an alias). `RELEASES_API_KEY` in the environment overrides any stored credential — handy for CI.\n\n## Environment\n\nReader access requires nothing. Useful overrides:\n\n- `RELEASES_API_KEY` — Bearer token for write endpoints; overrides stored credentials.\n- `RELEASES_API_URL` — override the default `https://api.releases.sh` (e.g. staging).\n- `RELEASES_TELEMETRY_DISABLED=1` — opt out of anonymous usage pings (`DO_NOT_TRACK=1` also honored).\n\nSee [`.env.example`](./.env.example) for the full list.\n\n### Custom CA certificates (TLS-intercepting proxies)\n\nThe compiled binary ships with the standard Mozilla CA store. If your network re-terminates TLS with its own CA (corporate proxy, sandboxed agent environment), point the standard Node/OpenSSL variables at the proxy's CA certificate — the binary honors both:\n\n```sh\nNODE_EXTRA_CA_CERTS=/path/to/proxy-ca.pem releases search \"bun\"\n# or\nSSL_CERT_FILE=/path/to/proxy-ca.pem releases search \"bun\"\n```\n\nNo `--ca-bundle` flag is needed; certificate errors from the CLI include this hint.\n\n## Exit codes\n\n| Code  | Meaning                                                      |\n| ----- | ------------------------------------------------------------ |\n| `0`   | Success                                                      |\n| `1`   | Application error (network, API, unexpected state)           |\n| `2`   | Usage / provider error (bad arguments or upstream rejection) |\n| `130` | Cancellation (SIGINT)                                        |\n\n## Contributing\n\nBuild, test, and release instructions live in [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT\n",
  "bytes": 10164,
  "sha": "1333f438e1e1c74e2462eb2aae37266da3276caf5da2b968cc46cabdc930754d",
  "repo_slug": "buildinternet/releases-cli",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_buildinternet_releases_cli_releases_0c9aef1a/readme"
}