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

jspod

v0.0.47

Published

JavaScript Solid Pod - Just works, batteries included

Readme

jspod

Your personal Solid pod, in one command.

npm version License

Try in 60 seconds

npx jspod

Your browser opens to http://localhost:5444. Click Sign in and use:

| Username | Password | | -------- | -------- | | me | me |

That's it. You have a working Solid pod with a passkey-capable identity provider, a tiny built-in data browser, and a WebID you can point any Solid app at.

jspod binds to localhost by default so the placeholder me / me credentials are reachable only from your local machine.

CLI options

  -p, --port <number>     Port to listen on (default: 5444)
  -h, --host <address>    Host to bind to (default: localhost)
  -r, --root <path>       Data directory (default: ./pod-data)
      --multiuser         Enable multi-user mode (registration enabled)
      --no-auth           Open pod, no IDP, no ACL (demos / dev only)
      --no-open           Don't auto-open the browser on start
      --no-git            Disable JSS's git HTTP backend
      --browser <style>   Data browser: folder (default) or json
      --provision-keys    Generate a Nostr-compatible owner keypair on first start
      --mcp               Enable MCP server at /mcp (agent tool surface; pairs with charlie)
  -v, --version           Print jspod version
      --help              Show help

Install Solid apps

On the first run, jspod auto-installs the default bundle (home, plaza, vellum, plume, chat, timeline, charlie, chrome, explorer). Opt out with --no-bootstrap. On subsequent runs jspod just starts the pod — the bootstrap only triggers when /public/apps/ was empty before this start.

Drop more apps in any time with one command:

jspod install chrome                              # solid-apps/chrome (default registry)
jspod install vellum win98 pdf                    # several at once
jspod install                                     # default bundle (home, plaza, vellum, plume, …)
jspod install JavaScriptSolidServer/git           # any GitHub org/repo
jspod install litecut/litecut.github.io=litecut   # rename the pod path
jspod install solid-apps/chrome#v1                # pin a branch or tag
jspod install --bundle starter                    # curated starter set
jspod install --bundle agentic                    # agent stack (charlie + chat + ...)
jspod install --bundle all                        # every solid-app

Each app lands at /public/apps/<name>/ and is reachable in the browser immediately. jspod install --help for the full spec.

Available bundles

Curated sets, all maintained at solid-apps/bundles:

| Bundle | Apps | Use | |---|---|---| | starter | chrome, vellum, pdf, alarm, chat | Minimal pleasant first-run | | all | every solid-app | Everything in the org | | media | playlist, pdf | Media stack | | productivity | vellum, hub, win98, chat, mindstr, transcribe | Docs + workspace + retro shell + chat + mind mapping + speech-to-text | | agentic | charlie, chat, taskify, vellum, forum, chrome | Run agents on your pod — pairs with --mcp |

You can also point at your own bundle URL:

jspod install --bundle https://my.pod/bundles/dev-stack.jsonld

Run agents

When --mcp is enabled, your pod exposes 16 tools at /mcp (CRUD, ACL, skills, docs, federation) that any MCP-compatible client — Claude Desktop, Cursor, custom bots — can drive. The natural way to use it from a browser is the bundled chat bot:

npx jspod --mcp                  # pod with MCP server enabled
jspod install --bundle agentic   # charlie, chat, taskify, vellum, forum, chrome

Then open http://localhost:5444/public/apps/charlie/, log in via the xlogin button, paste an LLM API key in settings. Charlie reads its persona from <pod>/SKILL.md, uses the pod's /mcp as its tool surface, and chats with you. Edit SKILL.md and the bot's behaviour shifts next session — no retraining, no vendor.

The whole stack — identity, memory, tools, brain — runs on your pod.

The auth ladder

jspod ships you onto the lowest rung that's safe, and the climb is visible:

| Rung | Auth | How to get there | | ---: | ------------------- | -------------------------------------------------- | | 0 | None | jspod --no-auth (demos / dev only) | | 1 | me / me | Default. Localhost-only. | | 2 | Your password | Change it in your pod's account settings | | 3 | Passkey | Add a passkey from account settings | | 4 | Hardware key / MFA | Power-user setup |

Override the initial password without going through the UI:

JSS_SINGLE_USER_PASSWORD='your-password' npx jspod

Configuration

| Variable | Effect | | --------------------------- | ------------------------------------------------------------------- | | JSS_SINGLE_USER_PASSWORD | Seed password instead of me (kept out of ps / banner output). | | TOKEN_SECRET | JWT signing secret. Auto-generated at <root>/.token-secret (mode 0600) on first run if unset. Override for operator-managed deployments. | | NODE_ENV | Standard Node env. Defaults to development. |

For LAN-reachable deployments, pass --host 0.0.0.0 (jspod prints a warning to remind you that the rung-1 credentials are now exposed) and either set JSS_SINGLE_USER_PASSWORD or change the password from the pod UI immediately after first sign-in.

The data browser

jspod ships a deliberately minimal data browser — about 800 bytes of JS that JSS loads from a version-pinned jsdelivr URL. It parses the JSON-LD island JSS already embeds in each HTML response, pretty-prints it, and renders every URI as a clickable link.

The source: data-browser.js. The page is the data; the URIs are the navigation. No SPA, no mashlib CDN bundle.

If you want the full mashlib data browser instead, skip jspod and run JSS directly with jss start --mashlib-cdn.

When to use jspod

  • ✅ A working personal pod in 60 seconds on your laptop
  • ✅ Trying Solid for the first time
  • ✅ Local development against a Solid app
  • ❌ Hosting pods for multiple users → use JSS directly with --multiuser
  • ❌ Production deployments → JSS with operator-managed config

Links

License & credits

AGPL-3.0-only — matches JavaScriptSolidServer, on which jspod is built. By Melvin Carvalho and contributors. Issues: GitHub.