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

@deevy/cli

v0.11.1

Published

deevy from a terminal

Readme

deevy from a terminal

npm install -g @deevy/cli
deevy login https://deevy.example.com
deevy issues list --project-key DEV

deevy talks to a deevy instance over its API, as the Human you signed in as. Almost every command is generated from deevy's own operation registry rather than written by hand, so the CLI has the same surface the API and the MCP tools have and cannot drift from them. The generating happens when the CLI is built, so a new operation arrives here in the next release of this — and until then, a command this CLI has that your instance does not is refused by name rather than failing at it.

Signing in

deevy login <url> opens a browser, takes the consent you would give any other client, and keeps a token at ~/.config/deevy/<scheme>_<host>.json — mode 0600, one file per instance, so signing into a second deevy does not sign you out of the first. deevy logout forgets it; the consent stays listed in deevy's Settings until a Human revokes it there, because revoking one wants a browser session and a CLI has none.

A URL may include a path, for a deevy that lives under one — a hosted Workspace, or one served behind a proxy:

deevy login https://app.deevy.dev/acme

Every command then talks to that deevy under its path, and its token is kept apart from any other on the same host, in a file named for the path too, each slash written %2F: https_app.deevy.dev%2Facme.json. A token an older CLI stored for a deevy at the root of its host is still where this one looks.

Set DEEVY_API_KEY and the CLI acts as that Agent instead, which is what a script wants. It wins over a signed-in Human, and deevy whoami says which of the two answered — that changes what the CLI may do.

| Variable | What it does | | ----------------- | ------------------------------------------------------------------------------------------------------------------ | | DEEVY_URL | The instance every command talks to, path included, when one is not named. --deevy-url overrides it per command. | | DEEVY_API_KEY | An Agent's key. The CLI acts as that Agent. | | DEEVY_WEB_URL | Where the SPA is, if that is not where the API is. Only deevy gates open uses it. | | XDG_CONFIG_HOME | Where the token is kept. Defaults to ~/.config. | | NO_COLOR | Turns colour off. It is off for a pipe either way. |

What it can and cannot do

Everything the Human or Agent you are signed in as may do — with four exceptions, which the CLI explains rather than relaying as a refusal:

  • gates approve and gates reject. A Gate is ruled by a Human in deevy's own browser and by nothing else, whatever the CLI is signed in as. deevy gates open DEV-42 puts it in front of one.
  • oauth-clients list and oauth-clients revoke. A delegated credential cannot enumerate or revoke the consents that delegated it.

Reading the answers

A list is a table, a single thing is its fields, and --json on any command gives you the exact answer for a script. deevy events watch follows the Event log as it happens and resumes where it left off.

Version

@deevy/cli's version is deevy's: the same number as the instance and the image. A CLI newer than the instance it is pointed at asks that instance what it can do and says so by name when a command is not among them, so a mismatch is a sentence rather than a failure.