{
  "markdown": "<!-- mcp-name: io.github.abe238/hotin -->\n<!-- ^ Not decoration. The official MCP Registry proves you own the PyPI package\n     by looking for this exact string in the README that renders on PyPI, and it\n     must match `name` in server.json. It only reaches PyPI on a release, so\n     removing it silently breaks the next registry publish, not this file. -->\n\n# hotin — the whole field, ranked. With receipts.\n\n<p align=\"center\">\n  <img src=\"docs/demo.svg\" alt=\"hotin repos output: a ranked board of AI repos with scores, tags and badges\" width=\"820\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/hotin/\"><img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/hotin?color=f0883e\"></a>\n  <a href=\"https://pypi.org/project/hotin/\"><img alt=\"downloads\" src=\"https://img.shields.io/pypi/dm/hotin?color=3fb950\"></a>\n  <img alt=\"zero dependencies\" src=\"https://img.shields.io/badge/dependencies-0-3fb950\">\n  <a href=\"https://hotin.ai\">hotin.ai</a>\n</p>\n\nOne command, one ranked list of what's actually hot in AI today: trending\nrepos, models, papers and news, ranked daily by cross-source consensus.\n**Numbers are receipts, badges are verdicts.** Want the same thing in a\nbrowser? [The live hotin board](https://hotin.ai) is what's trending in AI\ntoday, updated daily.\n\nEvery row shows why it is there: how fast it is growing, who backed it, where\nelse it surfaced. Nothing ranks on a single source's say-so.\n\n**It works two ways, from one install.**\n\n|  | you ask | your agent asks |\n|---|---|---|\n| | `hotin repos` in your terminal | `hotin mcp` inside Claude Code, Cursor, Codex or Gemini CLI |\n| | you read the board | the agent reads the board mid-task, and cites it |\n\nYour model's training data has a cutoff and a web search returns marketing. Ask\nan agent what is worth using in AI this week and it guesses. Point it at hotin\nand it answers with the same ranked evidence you would have read yourself.\n\n## What it does\n\nThe zero-key core combines GitHub Trending, curated growth momentum, Hacker News, and npm velocity with no configuration. Add an optional key to unlock Reddit and YouTube (ScrapeCreators, or the official YouTube Data API v3), including curated repo-roundup channels. A “smart money” signal (repos the AI Insiders are backing) is included on a best-effort basis, and an AI-newsletter feed adds an editorial signal. Sources can be temporarily unavailable without taking down the CLI.\n\nBeyond repos, hotin surfaces trending **AI models** (`hotin models`) and **papers** (`hotin papers`) as their own views, and a short daily **`hotin brief`** of what's happening across all of them. Run `hotin refresh` on a schedule and hotin records a time series, so the board can flag what's genuinely **rising** and **viral** (velocity, not just a snapshot) — not just what's big right now.\n\n## Install\n\n```sh\npip install hotin\n```\n\nhotin has zero dependencies, so a plain `pip install` is safe (nothing to conflict with). Prefer an isolated install, or don't want to install at all?\n\n```sh\nuvx hotin              # run without installing (needs uv)\nuv tool install hotin  # persistent command via uv\npipx install hotin     # persistent command via pipx\nnpx hotinai            # from the npm ecosystem (launcher; runs uvx/pipx under the hood)\n```\n\nNo package manager, just Python? Grab the single-file `hotin.pyz` from the [latest release](https://github.com/abe238/hotinai/releases/latest) and run it:\n\n```sh\npython hotin.pyz\n```\n\nDeveloping on a checkout: `pip install -e .`.\n\n## Use it from your AI agent (MCP)\n\nThe same board, callable by Claude Code, Cursor, Codex CLI, Gemini CLI, or\nanything else that speaks MCP. Pick whichever line is least work for you.\n\n**One click.** Download [`hotin.mcpb`](https://github.com/abe238/hotinai/releases/latest/download/hotin.mcpb)\nand open it. Claude Desktop shows an install dialog and that is the whole\nprocess: no config file to find, no JSON to edit, no terminal. The bundle is\n136 KB and carries hotin inside it, so there is nothing to install first --\nhotin has zero dependencies, which is what makes that possible. macOS and Linux.\n\n**One line.** Nothing installed at all, `uvx` fetches it on demand:\n\n```sh\nclaude mcp add hotin -- uvx hotin mcp\n```\n\n**Any other client.** Same idea, as config:\n\n```json\n{\n  \"mcpServers\": {\n    \"hotin\": { \"command\": \"uvx\", \"args\": [\"hotin\", \"mcp\"] }\n  }\n}\n```\n\nAlready ran `pip install hotin`? Then it is `\"command\": \"hotin\", \"args\": [\"mcp\"]`\n-- the MCP server ships inside the package, there is no second thing to install.\n\nThen ask your agent things it otherwise cannot answer:\n\n> *\"What AI repos are actually worth looking at this week?\"*\n> *\"Is anything notable happening with open-weight models right now?\"*\n> *\"Before we pick a library for this, what is trending and who is backing it?\"*\n\nTwo tools are exposed. `hotin_board` returns any tab (`repos`, `rising`,\n`insiders`, `models`, `papers`, `news`) with the receipts attached, and\n`hotin_brief` returns the daily digest. Answers come back in about a second,\nserved from the local cache.\n\n**It runs on your machine, not ours.** Your MCP client starts `hotin` as a local\nchild process. It fetches GitHub, Hacker News, npm and Hugging Face directly,\ncaches to your own disk, and uses your own token if you set one. hotin.ai is\nnever in the path: the site is a separate rendering of the same tool, not a\nservice this depends on.\n\nSet `GITHUB_TOKEN` if you want the `insiders` signal; everything else works\nwithout any key. A first call on a cold cache takes about 15 seconds while it\nfetches; after that answers are served locally in about a second.\n\nWorks with every install route: the bundle, `uvx`, `pip`, `pipx`, and the\nsingle-file `hotin.pyz`.\n\n### Claude Code skill\n\n[`skills/hotin/SKILL.md`](skills/hotin/SKILL.md) teaches an agent *when* to reach\nfor the board and, more usefully, how to read it: which fields are actual\nevidence, and what the board does not know. Copy it in:\n\n```sh\nmkdir -p ~/.claude/skills && cp -R skills/hotin ~/.claude/skills/\n```\n\nIt works with or without the MCP server, and is worth having alongside it — the\nMCP tool descriptions say what the tools return, the skill says which numbers\nmean something and when a row is a lead rather than a finding.\n\n## Quick start\n\n```sh\nhotin\n```\n\nAvailable commands:\n\n| Command | Description |\n| --- | --- |\n| `hotin` | the flagship board (defaults to `repos`) |\n| `hotin repos` | trending AI repos, fused across sources |\n| `hotin insiders` | repos the AI Insiders are backing (the smart-money signal) |\n| `hotin models` | AI models — lab press releases + trending weights |\n| `hotin papers` | trending AI papers |\n| `hotin news` | recent AI news headlines |\n| `hotin brief` | a one-shot digest across every entity |\n| `hotin refresh` | refresh all sources + record a snapshot (`--quiet` = headless) |\n| `hotin export` | write the board to `docs/index.html` + `latest.json` |\n| `hotin setup` | check config, or schedule automatic refreshes |\n| `hotin search <query>` | search cached repos |\n| `hotin show <owner/repo>` | show one repo |\n| `hotin about` | show project information |\n\n**Flags:** `--format text\\|json\\|md\\|html` · `--limit N` (default 20) · `--source <name>` (repos: one upstream feed instead of the fused board) · `--since 30d` / `--min-stars N` (repos filters) · `--verbose`.\n\nEach repo result presents a score, the owner/repo (clickable), category, and applicable badges: `fresh` (recently created or active), `rising` / `viral` (climbing fast on the recorded time series, `viral` being the rare accelerating-and-consensus extreme), `smart-money` (the AI Insiders are backing it), and `paper-backed` (linked from a trending paper). Consensus across sources is folded into the score itself, not shown as a badge.\n\nExample (real output, top of a live run):\n\n```text\n$ hotin --limit 8\n 30.59  xai-org/grok-build  agents  fresh\n        Grok Build is open source\n 22.17  justvugg/colibri  uncategorized\n        Show HN: Getting GLM 5.2 running on my slow computer\n 17.05  dietrichgebert/ponytail  app-building  fresh\n 17.00  odysseus-dev/odysseus  uncategorized  fresh\n 16.93  nexu-io/open-design  agents  fresh\n 15.46  yuan1z0825/nature-skills  uncategorized  fresh\n 15.24  bigpizzav3/codexplusplus  uncategorized  fresh\n 14.77  antirez/ds4  inference  fresh\n```\n\nThe first line of each result is score, owner/repo (clickable in a real terminal), category, and badges; a dimmed second line shows the human title when it adds context the slug doesn't. `fresh` reflects recent repository activity. In a live terminal the score and badges are colored. Your output will differ — it reflects what is actually hot when you run it.\n\n## Why corroboration, not popularity\n\n<details>\n<summary>The board requires two independent signals. Here is the measurement behind that.</summary>\n\n<br>\n\nRanking on \"a well-known developer starred it\" is the obvious design. It does not\nhold up. Measured across 288 tracked repos, growth as a percentage of a repo's own\nstar count so size is not mistaken for heat:\n\n| backed by | repos | growth |\n|---|---:|---:|\n| no notable star at all | 205 | 0.25 %/day |\n| exactly one | 62 | **0.19 %/day** |\n| two or more, independent | 21 | 0.55 %/day |\n\nOne star tracks slightly *worse* than no endorsement. Two or more tracks about\n2x the baseline — though at n=21 that is p=0.087, suggestive rather than proven,\nand the board rests on the first result rather than the second.\n\nSo nothing reaches the board on one source's say-so. It needs corroboration from\nan independent signal, and it has to still be true a few hours later.\n\n`scripts/measure_insider_signal.py` in the site repo re-runs this whenever you\nwant to check the claim.\n\n</details>\n\n## Keeping it fresh\n\nhotin's `rising` / `viral` badges and the `hotin brief` come from a recorded time series, so they get better the more often `hotin refresh` runs. `hotin setup` can install a scheduled job for you:\n\n```sh\nhotin setup                     # interactive: once a day (8am) or twice (8am & 8pm)\nhotin setup --schedule twice    # non-interactive: 8am & 8pm\nhotin setup --schedule daily    # 8am only\nhotin setup --schedule off      # remove it\n```\n\nOn macOS/Linux this manages a marked block in your `crontab`; on Windows it creates `hotin-refresh` scheduled tasks. Either way it runs `python -m hotin refresh --quiet`, leaving the rest of your schedule untouched.\n\n## Data Sources & Terms\n\nhotin's code is licensed under Apache-2.0. That license does not relicense the underlying data returned by GitHub, Hacker News, npm, Reddit, or YouTube: each source's own terms of use apply.\n\nThe Reddit and YouTube integrations are unofficial third-party integrations via ScrapeCreators; they are not officially sanctioned by Reddit or YouTube. The smart-money signal is a best-effort read of a public AI-influencer graph and may change or break without notice.\n\n## Contributing\n\nIssues and contributions are welcome at the [issue tracker](https://github.com/abe238/hotinai/issues).\n\n## License\n\nApache License 2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).\n\nhotin was created by [Abe Diaz](https://github.com/abe238). If hotin, its ranking approach, or its ideas helped your project, a credit and link back to [github.com/abe238/hotinai](https://github.com/abe238/hotinai) are appreciated.\n\n*Made by [@abe238](https://github.com/abe238) · [hotin.ai](https://hotin.ai)*\n",
  "bytes": 11389,
  "sha": "90706e9d82c6b06dd07aa56ad22b2c0e3c4b9fea065e3e3515c1dfbdcf8827e1",
  "repo_slug": "abe238/hotinai",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_abe238_hotin_4964630a/readme"
}