npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@techsnif/cli

v0.6.1

Published

Public CLI for TechSnif. Agent-first tech news and story clusters from your terminal.

Readme

@techsnif/cli

Public CLI for TechSnif. Query story clusters, coverage links, social discussion, editorial articles, leaderboards, and tech events from the terminal, or stream stories live.

Install

npm install -g @techsnif/cli

Or run without installing:

npx @techsnif/cli --help

Commands

stories: list story clusters

techsnif stories
techsnif stories --sort newest --limit 10
techsnif stories --tier 3
techsnif stories --publisher "The Verge"
techsnif stories --platform x
techsnif stories --has-discussion
techsnif stories --platform bluesky --has-discussion --json

| Option | Description | |---|---| | --limit <n> | Results to return (default 20, max 80) | | --offset <n> | Skip this many results (pagination) | | --sort <order> | rank (prominence, default) or newest | | --tier <n> | Filter by headline tier: 1=standard, 2=major, 3=top | | --publisher <name> | Filter by lead publisher name | | --platform <name> | Only stories discussed on this platform (x, bluesky, threads, linkedin, forums, mastodon) | | --has-discussion | Only stories with social discussion links | | --since <date> | Only stories seen since this ISO date | | --topic <slug> | Filter by topic slug (e.g. ai, security) | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

story: full story cluster detail

techsnif story flipboard-launches-surf
techsnif story flipboard-launches-surf --platform x
techsnif story flipboard-launches-surf --publisher TechCrunch
techsnif story flipboard-launches-surf --brief
techsnif story flipboard-launches-surf --platform bluesky --open

| Option | Description | |---|---| | --platform <name> | Filter discussion to this platform only | | --publisher <name> | Filter coverage links by publisher name | | --brief | Skip the full TechSnif article body, show metadata and links only | | --open | Open URLs in browser (lead article, or filtered platform discussion URLs) | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

search: search stories by headline keyword

techsnif search "AI funding"
techsnif search "robotics" --platform x
techsnif search "Apple" --publisher "The Verge" --limit 5 --json

| Option | Description | |---|---| | --limit <n> | Results to return (default 10, max 50) | | --offset <n> | Skip this many results (pagination) | | --publisher <name> | Filter by lead publisher name | | --platform <name> | Narrow displayed discussion links to this platform | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

timeline: ranking history of a story

Shows each snapshot of a story cluster over time: date, rank, tier, commentary count, and coverage count.

techsnif timeline flipboard-launches-surf
techsnif timeline flipboard-launches-surf --json

| Option | Description | |---|---| | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

changes: stories added or updated since a timestamp

techsnif changes
techsnif changes --since 2026-08-17T00:00:00Z --limit 100
techsnif changes --json

| Option | Description | |---|---| | --since <date> | ISO 8601 timestamp to read changes from (default 24 hours ago) | | --limit <n> | Results to return (default 50, max 100) | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

When more changes are available, the output includes the next --since cursor to continue from.

trending: stories or articles gaining momentum

techsnif trending
techsnif trending --hours 6 --limit 10
techsnif trending --type articles
techsnif trending --json

| Option | Description | |---|---| | --type <type> | stories (default, ranked by velocity) or articles | | --hours <n> | Look-back window for stories (default 24, max 48) | | --limit <n> | Results to return (stories default 20 max 50, articles default 5 max 20) | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

watch: stream stories live

Connects to the TechSnif SSE feed and prints each new or updated story as it arrives. Reconnects automatically with exponential backoff (up to 5 attempts), resuming from the last seen event.

techsnif watch
techsnif watch --topics ai --tier 2
techsnif watch --topics ai,crypto
techsnif watch --tier 3 --json

| Option | Description | |---|---| | --topics <list> | Comma-separated topic slugs; a story must match at least one (e.g. ai,crypto) | | --tier <n> | Minimum headline tier: 1=standard, 2=major, 3=top | | --json | One JSON object per event (NDJSON) instead of one-line summaries | | --api-url <url> | Override API base URL |

Filters are applied server-side on the stream, so a filtered watch only receives matching events. Human output is one line per story: time, tier, headline, and URL. Active filters print on connect. Press Ctrl+C to stop.

events: upcoming tech events

techsnif events
techsnif events --limit 5 --json

| Option | Description | |---|---| | --limit <n> | Results to return (default 10, max 50) | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

articles: list TechSnif editorial articles

techsnif articles
techsnif articles --category AI --limit 5
techsnif articles --tag Security --json

| Option | Description | |---|---| | --limit <n> | Results to return (default 10, max 50) | | --offset <n> | Skip this many results (pagination) | | --category <name> | Filter by category (AI, Startups, Venture, Robotics) | | --tag <name> | Filter by tag (e.g. Security, Fintech, Open Source) | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

articles search: full-text article search

techsnif articles search "open source funding"
techsnif articles search "chips" --limit 5 --json

| Option | Description | |---|---| | --limit <n> | Results to return (default 20, max 50) | | --offset <n> | Skip this many results (pagination) | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

article: full article by slug

techsnif article anthropic-ships-claude-agents
techsnif article anthropic-ships-claude-agents --brief

| Option | Description | |---|---| | --brief | Show metadata and excerpt only, skip the full body | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

leaderboard: source and author rankings

techsnif leaderboard
techsnif leaderboard --tab authors --window 7d
techsnif leaderboard --topic ai --limit 10 --json

| Option | Description | |---|---| | --tab <tab> | Rank sources (default) or authors | | --window <window> | Time window: 7d, 30d (default), or all | | --topic <slug> | Filter by topic slug | | --limit <n> | Results to return (default 50, max 100) | | --json | Machine-readable JSON output | | --api-url <url> | Override API base URL |

platforms: active discussion platforms

techsnif platforms
techsnif platforms --json

Lists social platforms with active discussion across current stories, with story counts.

Local Development

pnpm techsnif --help

Override the API host for local development or staging:

pnpm techsnif stories --api-url http://localhost:4321

You can also set TECHSNIF_API_URL to change the default API host for every command.

Requests include a non-identifying User-Agent header such as TechSnif-CLI/0.6.1 so TechSnif can distinguish CLI traffic from MCP and generic API traffic in aggregate Cloudflare analytics. The CLI does not send cookies, device IDs, or user identifiers.

JSON Output

Every command supports --json and returns a stable envelope:

{
  "ok": true,
  "data": {},
  "targetEnv": "https://api.techsnif.com"
}

The watch command is the exception: with --json it emits one JSON object per stream event (NDJSON).

Notes

  • The public CLI is intentionally API-only, with no direct database access.
  • Command defaults are generated from the shared agent contract, so the CLI, the MCP server, and the hosted MCP expose the same defaults.
  • Internal/operator workflows remain repo-local and are not part of the published package.
  • Platform and publisher filtering is case-insensitive throughout.
  • --open caps at 5 URLs to prevent tab overload.