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

llm-canvas

v0.1.4

Published

An LLM-native local workspace for substantial coding-agent output — agents write structured HTML sections into a project-scoped browser workspace instead of dumping into the chat transcript.

Readme

Canvas

Canvas is an agent skill that gives coding agents a place to put their long-form output other than the chat transcript. Sessions can stay local or be published at an unguessable public URL backed entirely by Cloudflare.

When an agent produces something substantial — codebase research, an architecture explainer, an implementation plan, a comparison of options — it normally dumps hundreds of lines of markdown into the chat. The Canvas skill teaches the agent to route that output into a local browser workspace instead: it writes one HTML file per section, and a live workspace renders them.

What's in this repo

  • skills/canvas-workspace/ — the skill itself: the instructions an agent reads to decide when and how to use Canvas. This is the product.
  • bin/, server/, workspace/ — the llm-canvas CLI and the daemon that watches section files and serves the browser workspace. The skill drives these; bun run build bundles them into the skill so it can be installed standalone.

How it works

The contract is the filesystem. There is no API for the agent to learn:

  1. The agent writes section files to .canvas/sessions/<slug>/sections/<id>.html.
  2. The llm-canvas daemon watches that folder and serves a browser workspace.
  3. When a file is written or edited, the affected section hot-reloads — no page refresh.

Because sessions are just plain HTML files under .canvas/ in your repo, they are readable, editable, and committable in any editor. The styled workspace view needs the daemon running; the files themselves do not.

It is also bidirectional: agents can emit choice and form widgets, users answer them in the browser, and the agent reads the responses back later.

Install

Canvas ships as an npm package that bundles a prebuilt CLI binary for your platform. You do not need Bun installed — the binary embeds its own runtime.

npm i -g llm-canvas
llm-canvas install-skill   # symlinks the skill into ~/.claude/skills/canvas-workspace
llm-canvas doctor          # verify the setup
llm-canvas login           # sign in with GitHub and approve this machine

macOS only — first-run Gatekeeper warning. The binary is not yet Apple-signed, so the first run is blocked by Gatekeeper. Clear the quarantine flag once and you are done:

xattr -dr com.apple.quarantine "$(which llm-canvas)"

Once installed, the agent starts the daemon itself when a session needs it — you do not run it by hand.

From source (contributors)

If you want to hack on Canvas, you'll need Bun:

bun install
bun bin/llm-canvas.ts doctor    # run the CLI without installing it
bun run build                    # produce per-platform binaries under packages/

CLI commands

| Command | What it does | | ----------------------------- | ------------------------------------------------------------- | | llm-canvas start | Start the daemon for the current project | | llm-canvas status | Report whether a healthy daemon is serving the current project| | llm-canvas doctor | Check the environment is set up correctly | | llm-canvas inbox | Read user feedback left in the workspace | | llm-canvas login [URL] | Authorize this machine through a browser | | llm-canvas whoami | Show the active Canvas account | | llm-canvas logout | Revoke this machine's Canvas session | | llm-canvas publish --slug S | Upload a session and its assets; print its public URL | | llm-canvas install-skill | Symlink the canvas-workspace skill into ~/.claude/skills | | llm-canvas uninstall-skill | Remove the symlink (only if it still points at this install) |

An MCP adapter is planned but not yet implemented. For now the integration is the file-write contract plus the shipped skill.

Public Canvas

Put images and other files in .canvas/sessions/<slug>/assets/ and reference them from a section as ../assets/<name>. Publish with:

llm-canvas publish --slug <slug>

The command uploads HTML and assets to the private llm-canvas R2 bucket and prints the public share URL. Re-running it updates the same URL. Each canvas is owned by the GitHub account that approved the CLI login; other signed-in users cannot update it. The hosted app is https://llm-canvas.our.workers.dev; bearer credentials stay in the local Canvas config and are never embedded in published files.

Documentation

License

MIT