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

create-loopier

v0.1.0

Published

One-command self-hosted Loopier. `npm create loopier` preflights Docker, downloads a pinned release, generates fresh secrets + Supabase JWTs (no demo keys, ever), patches Kong, brings the stack up, applies migrations, and creates account #1.

Readme

create-loopier

Self-host Loopier in one command:

npm create loopier
# == npx create-loopier == pnpm create loopier == yarn create loopier

That's the whole install. The CLI:

  1. Preflights your machine — Docker CLI + Compose v2, free ports (3000/8000 by default), ~4 GB of disk. No Docker? It prints the guided manual path from SELF-HOST.md and exits cleanly.
  2. Downloads a pinned release of loopier/loopier (the tag matching this CLI's version; --ref overrides), verified against the release's sha256 checksums. The installer never embeds app source.
  3. Generates every secret fresh with node:crypto: POSTGRES_PASSWORD, a 64-char JWT_SECRET, Realtime keys, and — because Supabase self-host uses a shared HMAC secret — it mints your anon + service_role HS256 JWTs (iss=supabase, 10-year expiry). The public Supabase demo JWTs never exist in your install. Everything lands in self-host/.env.self-host (chmod 600, never echoed), and the two keyauth_credentials in self-host/kong.yml are patched in place — the manual key-rotation step from SELF-HOST.md §5, automated.
  4. Builds + starts the stack: docker compose --env-file self-host/.env.self-host up -d --build. The first run builds the tracker image locally (your fresh anon key is inlined into the client bundle at build time — that's why there is no prebuilt image) and takes several minutes.
  5. Applies migrations in filename order via docker compose exec -T db psql.
  6. Creates account #1 with the tracker's own idempotent scripts/self-host-bootstrap.mjs (prompts for an email; generates a strong password if you don't pass one — shown once, never again).
  7. Opens http://localhost:3000/login and prints next steps: teammates + SMTP, backups, upgrades, and the dark-mode statement.

Dark by default

A self-hosted Loopier makes zero outbound calls — no feed, no telemetry, no phone-home. Opting into the Loopier network is per-object and explicit: set LOOPIER_NETWORK_URL + LOOPIER_PUBLISH_TOKEN in self-host/.env.self-host (see SELF-HOST.md §7). Unset them at any time to go fully dark again.

Modes and flags

| Flag | What it does | | --- | --- | | --dry-run | Scaffold (to a temp dir by default) + print every command. Zero docker calls. | | --byo-supabase | Run only the tracker against your own Supabase (--supabase-url, --supabase-anon-key). | | --no-docker | Print the guided manual path and exit 0. | | --dir <path> | Install directory (default ./loopier). | | --port / --kong-port | Remap tracker/API ports (also rewrites SITE_URL / SUPABASE_PUBLIC_URL). | | --ref <tag> | Install a specific release tag instead of the pinned one. | | --archive <path> (+ --sha256) | Install from a local release tarball. | | --email / --password / --name / --workspace | Account #1 inputs (prompted/generated otherwise). | | --no-bootstrap, --no-open, -y/--yes | Skip account creation / browser open / all prompts. |

Upgrades and re-runs

Re-run npm create loopier in the same directory: it detects the existing install, reuses self-host/.env.self-host (secrets are never regenerated over live data), unpacks the new release, re-patches kong.yml to your existing keys, rebuilds, and applies only new migrations.

Requirements

  • Node >= 18.17 (to run this CLI)
  • Docker with Compose v2, ~4 GB disk (to run the stack)

License

Apache-2.0. The tracker it installs is AGPL-3.0-only — see SELF-HOST.md and README-OSS.md in the release for the full open/closed map.