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

xrsh

v0.0.5

Published

<img src='xrsh.svg' width="25%"/>

Readme

xrsh

click here for the website / hosted repo

XRSH Manual

Documentation for XRSH users can be found here

TIP: this is also available by typing ctrl/cmd+a+0 or man xrsh inside XRSH

Wiki / Roadmap

See the wiki here

Install

NOTE: installation is optional: just surf to the public version here

For local use: download the crossplatform xrsh.com executable [checksum]:

  1. [linux/mac only] run chmod +x xrsh.com in the console
  2. run ./xrsh.com in the console
  3. xrsh opens in your browser at https://127.0.0.1:8080
  4. profit!

pass -p XXXX to specify port (default:8080)

Installation guides

  1. Download xrsh.com
  2. optional: run unzip xrsh.com to verify repository contents
  3. run chmod +x xrsh.com in your console (only linux/mac)
  4. run ./xrsh.com in (any) shell
  5. Profit! ✔

NIX is a convenient way to install or develop xrsh:

  1. nix-shell -p xrsh thttpd
  2. run it (thttpd -p 8080 -d /nix/store/5q4vd50gmh52jh48z62ln1j05xzfh1fz-xrsh-0.142 e.g.)
  3. point your browser to localhost:8080
  4. profit!
  1. $(which podman || which docker) run -p 8080:8080 docker.io/coderofsalvation/xrsh
  2. point your browser to localhost:8080
  3. profit!

NOTE 1: to add files use the -D <dir> overlay webroot parameter.

NOTE 2: to enable SSL and add (iso)file try something like this:

$ mkdir data
$ cp ../xrsh.iso data/. # copy custom iso
$ $(which podman || which docker) run -p 8080:8080 -v data/cert:etc/cert -v data:/data docker.io/coderofsalvation/xrsh /xrsh.com -D /data -c 0 -C /etc/cert/cert.pem -K /etc/cert/key.pem

or as an exercise in constructive laziness setup a reverse proxy like zoraxy, go-proxy, [droxy], caddy or nginx-reverse-proxymanager.

(codeberg.org is a nonprofit-backed forgejo instance)

  1. create a repository on codeberg.org
  2. git push the xrsh repository to it
  3. create a pages branchclone
  4. push it to the codeberg repository
  5. profit! it is now live

more info: https://docs.codeberg.org/codeberg-pages/

  1. clone the xrsh xrsh repository locally
  2. create a repo on your forgejo instance
  3. git push the xrsh to it
  4. in your forgejo (docker/nix)-instance symlink it to the public folder (*)
  5. point your browser to https://yourforgejo.org/assets/xrsh

* = for example: ln -f git/repositories/yourusername/xrsh gitea/public/assets/.

optionally customize the xrsh yunohost package with your own ISO

  1. search for xrsh in the yunohost application catalog
  2. click install
  3. profit!

optionally customize the xrsh yunohost package with your own ISO

  1. Create a new systemd service file (sudo nano /etc/systemd/system/xrsh.service e.g.)
  2. Specify the ExecStart directive to run the xrsh ([Service]\ExecStart=/path/to/xrsh.com -p 8080 e.g.).
  3. Enable the service (sudo systemctl enable xrsh.service e.g.)
  4. Start the service (sudo systemctl start xrsh.service).
  5. Verify the service: sudo systemctl status xrsh.service or netstat -tuln.

Developers

Make sure to clone the repo including submodules (the xrsh-com repo)

$ git clone --recurse-submodules https://forgejo.isvery.ninja/xrsh/xrsh
$ cd xrsh
$ nix-shell  # optional but adviced (to get up and running instantly)

Now serve the repo from a HTTPS webserver (for example run ./make dev)

Eventhough a custom ISO-image can be built, XRSH is buildless software. The crossplatform binary is just a zip-file with the source (using https://redbean.dev):

  1. Run ./make standalone to package everything into xrsh.com
  1. nix-build -E "with import <nixpkgs> { }; callPackage ./nix/xrsh-package.nix"
  2. optionally see the other nix-files in nix-folder

You can specify a different .iso file in various ways:

  1. open the xrsh.com as a zip (drag-drop into a zip-manager, or add .zip extension)
  2. method 1: overwrite xrsh.iso
  3. method 2: open src/index.html and change isoterminal="iso: ./../xrsh.iso" to another file/URL

see developer-section below on building your own iso

IMPORTANT: existing AFRAME apps can embed a barebones XR terminal / REPL like this:

<html>
    <head>
        <script src="https://aframe.io/releases/1.6.0/aframe.min.js"></script>
        <script src="https://xrsh.isvery.ninja/xrsh.js"></script>
    </head>
    <body>
      <a-scene>
          <a-entity isoterminal position="0 1.6 -0.3"></a-entity>
      </a-scene>
      <script>
        document.querySelector('a-scene').addEventListener('isoterminal_init', function(e){

          // (OPTIONAL) override/extend bootmenu-array with your own REPL(s)
          //            see com/isoterminal/feat/boot.REPL.*.js for examples
          ISOTerminal.prototype.boot.menu.push({
            key: "f",
            title: (opts) => `other awesome NLnet FOSS projects ❤️`,
            init: function( mainmenu ){
              window.open('https://nlnet.nl/project/current.html','_blank')
              // return to main menu
              mainmenu()
            },
            keyHandler: function(ch){
              this.send("\n\ryou typed:"+ch) // write to term
            }
          }) 

        })

        // AFRAME exposes THREE too
        console.log(THREE)

      </script>
    </body>
</html>

> this portable version runs without the ISO (which requires wasm-files, longer loadingtimes e.g.)

Building your own ISO

As described in the website documentation you could boot your own ISO distribution (TIP: a filesystem overlay is easier):

$ git clone --recurse-submodules ssh://[email protected]:8222/xrsh/xrsh.git 
$ git clone ssh://[email protected]:8222/xrsh/xrsh-buildroot
$ cd xrsh
$ rm xrsh.iso && ln -fs ../xrsh-buildroot/dist/v86-linux.iso xrsh.iso
$ ./make dev 

You can read the repo-README about (re)building/modifying the iso

Funding

This project is funded through NGI0 Entrust, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program. Learn more at the NLnet project page.

Inspired by