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

scriptorium

v0.0.1

Published

Experimental single-user app for browsing local workspaces and running OpenCode-backed coding sessions.

Readme

Scriptorium

Scriptorium is an experimental single-user, multi-device app for browsing local workspaces and running OpenCode-backed coding sessions through a React Router interface.

This repo is intentionally exploratory. Expect rough edges, fast iteration, and incomplete product decisions while the project settles.

What It Does

  • Launches and tracks local coding instances
  • Browses workspace files and git state from the app
  • Streams session events and message history
  • Uses passkey-based authentication for local access

Requirements

  • Node.js 20+
  • npm
  • opencode available on your PATH, or an explicit OPENCODE_BIN
  • Optional: Tailscale if you want npm start to expose the app through tailscale serve

Getting Started

Install dependencies:

npm install

Run the development server:

npm run dev

npm run dev uses the React Router/Vite dev server directly. It does not use the production CLI entrypoint or start Tailscale.

Create a production build:

npm run build

Start the built app:

npm start

The published package uses the same entrypoint:

npx scriptorium

Pass runtime flags through npm start --:

npm start -- --host=127.0.0.1 --port=6200 --no-tailscale

By default, development and production both run on port 5174.

For the full generated config reference, see docs/config.md.

Configuration

Scriptorium reads runtime settings from:

  • CLI flags passed to npm start -- ...
  • environment variables
  • config.yml for non-sensitive settings
  • secrets.yml for secrets such as the session signing secret

Precedence is: CLI flags -> environment variables -> YAML values -> schema defaults.

Common flags and env vars include:

  • --host / HOST
  • --port / PORT
  • --browser-root / SCRIPTORIUM_BROWSER_ROOT
  • --db-path / SCRIPTORIUM_DB_PATH
  • --opencode-bin / OPENCODE_BIN
  • --tailscale / --no-tailscale
  • SESSION_SECRET to override the generated session secret

Example:

HOST=127.0.0.1 \
PORT=6200 \
SCRIPTORIUM_BROWSER_ROOT=$HOME/src \
OPENCODE_BIN=opencode \
npm start -- --no-tailscale

Tailscale On Launch

The production entrypoint starts the built React Router server and optionally runs tailscale serve when tailscale: true is set in config or --tailscale is passed.

Use --no-tailscale to force local-only startup for a run.

If Tailscale is enabled and installed/authenticated, that makes the app reachable through your Tailnet. If Tailscale is missing or unavailable, startup continues normally and the app stays local-only.

On shutdown, the script also tries to turn the Tailscale serve configuration back off.

Notes

  • The app is designed around a personal/local workflow, not a multi-tenant hosted service
  • Runtime config and secrets live in the per-user Scriptorium data directory, documented in docs/config.md
  • This repository does not include Docker configuration