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

exepad-app-builder

v1.1.0

Published

Single-command installer and operator CLI for the self-hosted Exepad studio (thin wrapper over the published Docker image).

Readme

exepad

Single-command installer and operator CLI for the self-hosted Exepad studio. It is a tiny, dependency-free Node wrapper over the published Docker image — npm ships only this launcher; Docker carries the studio. The npm package and the command it provides are both exepad.

npx exepad-app-builder up            # install + start (pulls the pinned image, writes compose, up -d)
npx [email protected] up      # install a specific studio version (lockstep: launcher ver == image tag)
npx exepad-app-builder update --to X.Y.Z
npx exepad-app-builder status | logs -f | stop | start | restart | backup | restore | doctor | down

For a persistent command: npm i -g exepad-app-builder then exepad up. Run exepad --help for the full flag list.

Common up options: --port <n>, --domain <host> (HTTPS via a Caddy sidecar, with --tls letsencrypt|dns|byoc), --llm-key / --llm-provider / --llm-model to seed the LLM config, and --admin-email / --admin-password to seed the operator account. --dry-run prints the plan without touching anything.

Without --admin-email / --admin-password, the setup screen asks for the first-run setup token the container prints at boot — read it back with docker logs exepad and reading the startup banner. Seeding the admin creates the account at boot instead, which closes setup and skips the token entirely.

How versioning works

  • Lockstep. The launcher and the image are published together with the same version, so npx [email protected] pulls image :X.Y.Z. --to <ver> overrides the target; --image-tag @sha256:<digest> pins immutably for production.
  • Pinned, never :latest. The generated docker-compose.yml always records an exact tag so a stray docker compose pull can't jump a major.
  • Downgrade guard. Studio migrations run forward-only, so an older image on newer /data can break. up/update refuse a downgrade unless you pass --force (and tell you to exepad backup first).

Where state lives

The install dir (~/.exepad by default, or --dir/$EXEPAD_HOME) holds the managed docker-compose.yml and .env. All persistent data lives in the named volume exepad-data (/data) and survives image swaps — back it up with exepad backup. backup stops the container first so the SQLite snapshot is consistent (--no-stop for a hot, at-your-own-risk copy); exepad restore <backup.tgz> is the rollback path.

Two layers (what npx exepad-app-builder up installs)

npm fetches only this KB-sized launcher into the transient npx cache (not a global install). The launcher then pulls the GHCR image via compose pull — that's the real payload, pulled by the container engine, never through npm.

Requires a container engine with Compose v2. Docker is the default; Podman is a first-class fallback (podman compose shells out to docker-compose or podman-compose, so one of those must be installed too). Run exepad doctor to check the host — engine, arch, RAM, and deployed version.