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

@mp-lb/catgpt

v0.1.0

Published

A tiny ChatGPT-style terminal client built with React, Blessed, and the Vercel AI SDK.

Readme

CatGPT

A tiny ChatGPT-style terminal client built with React, Blessed, and the Vercel AI SDK.

Run

npm install
npm start

Optional:

CATGPT_MODEL=gpt-4o-mini npm start
CATGPT_HOME=/path/to/data npm start

Data is stored locally in ~/.catgpt/catgpt.sqlite unless CATGPT_HOME is set. API keys are stored in ~/.catgpt/keys.json.

Controls

  • Click a chat in the sidebar to switch.
  • Type in the bottom input and press Enter to send.
  • Press Esc to leave the input.
  • When the input is not focused, use j/k to move through chats and n to create a new chat.
  • When the input is not focused, press x to move the active chat to trash.
  • Use i or Tab to focus the input again.
  • When the input is not focused, press / to open the command input.
  • Press Ctrl+C to quit.

Composer Editing

The message composer uses CatGPT's own text buffer instead of Blessed's textbox editing.

  • Enter sends the message.
  • Ctrl+J inserts a newline.
  • Ctrl+W or Alt+Backspace deletes the previous word.
  • Ctrl+A / Ctrl+E move to the start/end of the current line.
  • Ctrl+B / Ctrl+F or arrow keys move left/right.
  • Alt+B / Alt+F move by word.
  • Ctrl+U / Ctrl+K delete to the start/end of the current line.

Commands

Commands run from the command input, opened with /.

  • /settings
  • /set hideWelcome true
  • /set hideWelcome false
  • /keys
  • /key set openai sk-...
  • /key set openrouter sk-or-...
  • /key remove openai
  • /models
  • /models claude
  • /model set moonshotai/kimi-k2.6
  • /trash clear

OpenRouter models are discovered from OpenRouter's models API when an OpenRouter key is configured.

After /models search, use Up/Down to move, j/k to page, i for details, and a to activate the selected model.

Structure

  • src/main.js wires app state, hotkeys, streaming, persistence queues, and command dispatch.
  • src/ui.js contains the Blessed/React components.
  • src/storage.js owns SQLite chat and settings persistence.
  • src/providers.js owns key loading, provider resolution, and model discovery.
  • src/commands.js parses slash commands and returns state/output changes.
  • src/settings.js, src/paths.js, and src/chats.js hold small shared app utilities.