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

@cubster/cli

v0.1.0

Published

Agent-first command-line tool for the Cubster Assets API — login, whoami, upload, and asset management from a terminal or an agent.

Readme

@cubster/cli

The agent-first command-line tool for the Cubster Assets API — built on @cubster/assets. Log in with a pasted API key, upload files, and list/delete assets from a terminal or from an agent, with clean --json output and predictable exit codes.

Install

npm install -g @cubster/cli

(Not yet published — see the repo root for local usage during development.)

Quick start

cubster login              # paste a csk_... key created at app.cubster.dev
cubster whoami              # confirm who/what workspace you're bound to
cubster upload ./hero.png --tags marketing,hero
cubster assets ls --type image
cubster assets rm <id>

Global options

Every command accepts:

| Flag | Description | | --- | --- | | --json | Print machine-readable JSON instead of human-readable text | | --base <url> | API base URL (default: https://app.cubster.dev) | | --key <key> | Use this API key for just this invocation | | -h, --help | Show help for the command |

Config & auth

Credentials resolve with this precedence, highest first:

  1. --key / --base flags
  2. CUBSTER_API_KEY / CUBSTER_BASE_URL environment variables
  3. The config file: ~/.config/cubster/config.json (or $XDG_CONFIG_HOME/cubster/config.json)
  4. The SDK default base URL (https://app.cubster.dev) — there's no default key

cubster login writes the config file with owner-only permissions (0600). The full key is never printed, logged, or included in --json output — only its non-secret csk_xxxxxxxx… prefix is ever shown.

Key management (create/list/revoke) is intentionally not available here — a pasted key can't mint other keys. Manage keys at app.cubster.dev.

Commands

cubster login

Prompt for a csk_... key (or pass --key non-interactively, for CI/agents), verify it against /me, and store it. Prints where it was stored and the key's prefix — never the key itself.

cubster login
cubster login --key "$CUBSTER_API_KEY"   # non-interactive

cubster whoami

Calls client.me.get() and prints the profile email, the credential's bound workspace (name/slug), and the base URL in use.

cubster whoami
cubster whoami --json

cubster upload <path>

Upload a local file (file path only — no stdin in this version).

| Flag | Description | | --- | --- | | --name <name> | Display name (default: the filename) | | --tags a,b | Comma-separated tags | | --workspace <id\|slug> | Target a specific owned workspace |

cubster upload ./hero.png --name "Marketing hero" --tags hero,landing

cubster assets ls

List assets. A table by default, a JSON array with --json.

| Flag | Description | | --- | --- | | --type image\|file | Filter by kind | | --search <text> | Match display name / original filename | | --tags a,b | Match assets containing ALL of these tags | | --limit <n> | Max results (API caps at 100) | | --workspace <id\|slug> | Target a specific owned workspace |

cubster assets rm <id>

Delete an asset. Prompts for confirmation unless --yes is passed (and defaults to "no" — never deletes — when stdin isn't a TTY and --yes wasn't passed).

cubster assets rm abc123 --yes

Exit codes

| Code | Meaning | | --- | --- | | 0 | Success | | 1 | Runtime error (network/API failure, missing file, no API key configured) | | 2 | Usage error (bad flags, missing required argument, unknown command) |

Development

npm run build -w @cubster/cli
npm test -w @cubster/cli

See docs/autopilot/2026-07-25-cli-testplan.md at the repo root for the manual/live test plan (requires a dashboard-created key).

License

MIT