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

artidrop

v0.2.14

Published

CLI to publish and share HTML, Markdown, and multi-file sites with a single command

Readme

artidrop

CLI to publish and share HTML, Markdown, and multi-file sites with a single command.

Install

npm install -g artidrop

Quick start

# Just publish — no signup needed. Your artifacts are yours and you can
# update/delete them, signed by a key this CLI creates for you.
artidrop publish ./report.html
artidrop publish ./notes.md --title "Meeting Notes"
artidrop publish ./my-site/            # a multi-file site (directory or ZIP)

# List and manage what you've published
artidrop list
artidrop delete <id>

# Want a dashboard, recovery, or access from other machines? Attach an account:
artidrop login

Identity — guest by default

The CLI signs in as a guest automatically: it creates a did:key identity in ~/.afauth/ (shared with other AFAuth-aware tools) and signs each request with it. A guest can publish and manage its own artifacts — no email, no password, no browser.

artidrop login connects this machine to a real artidrop account (web dashboard, recovery, access from other machines). By default it's a browser sign-in that saves an account key — which takes precedence over the guest identity, so it's also how you switch accounts.

To keep your guest identity and turn it into your account instead, claim it by email — artidrop afauth claim <email> (scriptable), or artidrop login --afauth, which offers to claim interactively. Your artifacts come with you.

artidrop logout signs out of everything — the CLI goes anonymous until you log back in. Your did:key in ~/.afauth/ is kept (it's shared with other tools and owns your guest artifacts); artidrop login --afauth reactivates it.

Three tiers; you climb only when you want more:

| | How | What you get | |---|---|---| | Throwaway | artidrop publish --anonymous | one-shot, unlinkable; can't be managed | | Guest (default) | nothing | publish + manage your own artifacts, no signup | | Account | artidrop login | dashboard, recovery, cross-device |

Sign in on a remote machine

On a remote / headless box (SSH session, container, dev VM), the default artidrop login flow can't complete because the browser on your laptop has no way to reach the loopback callback on the remote host. Use --no-browser:

artidrop login --no-browser

Open the printed URL on your laptop, then paste the one-time code back into the remote terminal.

AI agents & CI

An AI agent (Claude Code, Codex, …) that runs artidrop needs no setup — it publishes as a guest on the first call. To let a human take ownership later, ask the agent to run artidrop login (or claim it yourself from the dashboard).

For CI or scripts, a static bearer key still works and takes precedence over the guest identity:

export ARTIDROP_API_KEY="sk-your-api-key"
echo "<h1>Hello</h1>" | artidrop publish - --format html --title "Report" --json

Commands

| Command | Description | |---------|-------------| | artidrop publish <path> | Publish a file, directory, or ZIP (- for stdin) | | artidrop list | List your artifacts | | artidrop get <id> | Show artifact details | | artidrop delete <id> | Delete an artifact | | artidrop versions <id> | Show version history | | artidrop login | Sign in to a web account (bearer). --afauth uses/claims this device's did:key instead | | artidrop logout | Sign out of all accounts (go anonymous). Keeps the did:key — reactivate with login --afauth | | artidrop whoami | Show your identity (account, guest did:key, or signed out) | | artidrop afauth claim <email> | Attach an account to this device's did:key (recovery + dashboard) |

Publish options

-t, --title <title>        Artifact title (default: filename)
-f, --format <format>      html or markdown (auto-detected from extension; ignored for directories/ZIPs)
-v, --visibility <vis>     public, unlisted, or private (default: unlisted)
-u, --update <id>          Update existing artifact (new version)
-s, --slug <slug>          Idempotent publish: create or update by slug
-o, --open                 Open URL in browser after publishing
-c, --copy                 Copy URL to clipboard
    --anonymous            Publish without your identity (a throwaway; can't be updated)
    --json                 Output full JSON response

Configuration

  • Your guest identity lives in ~/.afauth/key.json (honours $AFAUTH_HOME), shared with other AFAuth-aware tools so a human links it at most once.
  • After artidrop login, an account credential is stored in ~/.config/artidrop/config.json. artidrop logout replaces it with a signed_out marker so the CLI stays anonymous until you log back in (the ~/.afauth key is kept, not deleted).

Environment variables take precedence:

  • ARTIDROP_API_KEY — bearer API key (CI / scripts)
  • ARTIDROP_API_URL — custom API endpoint (default: https://api.artidrop.ai)

License

MIT