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

laplus

v0.1.16

Published

Run the laplus server and its UI without building either.

Readme

laplus

A desktop-grade client for the claude CLI, started from a terminal:

npx laplus@latest

That downloads the server for your machine, starts it on http://127.0.0.1:4773 and prints a URL with a pairing token in it. Open the URL.

What it needs

The claude CLI, installed and authenticated on the machine the server runs on. laplus drives the agent where the server is, not where your browser is, so a server on another box needs its own claude login rather than inheriting yours.

Node 20 or newer, to run this launcher. The server itself is a Rust binary and needs nothing.

Flags

All of them belong to the server; this package passes them straight through.

| Flag | What it does | | ------------------------- | ---------------------------------------------------------- | | --port <n> | the port to listen on. Default 4773, or LAPLUS_PORT | | --network | leave loopback, for this run only, so a phone can reach it | | --advertise-host <host> | the host to print for other machines to reach | | --ui <dir> | serve a bundle other than the one in this package |

npx laplus@latest --network            # reachable from your phone on this network
npx laplus@latest --port 5000

Keeping it running

On Linux with systemd, laplus can install itself as a background service for your user — it starts at boot and survives you logging out of SSH.

npx laplus@latest service install --network
npx laplus@latest service status
npx laplus@latest service uninstall

The flags you pass to service install are the ones the service runs with.

Pairing another device

A server started at boot has no terminal to print a pairing URL to, and any server has only one startup credential. Mint a code whenever you need one:

npx laplus@latest auth pairing create
npx laplus@latest auth pairing create --ttl 1h --label "ipad"
npx laplus@latest auth pairing list
npx laplus@latest auth pairing revoke <id>

create prints the code, a URL, and a QR code — point a phone's camera at it and there is nothing to type. Codes are single-use and last five minutes unless --ttl says otherwise. Add --base-url when the address a device reaches you at is a tunnel or a tailnet name this machine cannot discover, and --json for a script.

This works against a server that is already running, and never has to find it: a pairing code is a row in the database rather than server state.

--network turns the listener off loopback for one run and does not change what the desktop app does next time it starts. Anything it can reach can drive an agent on that machine, so the credential printed at startup is the whole of the boundary — treat it accordingly, and read remote access before leaving it running on a network you do not control.

Platforms

Binaries are published for Windows x64, Linux x64 and arm64, and macOS on both architectures. They arrive as optionalDependencies, so npm downloads exactly one of them and skips the rest.

The Linux binaries are statically linked against musl, so they carry no libc dependency and there is no distribution too old for them — Ubuntu 20.04, RHEL 8 and Alpine all run the same file.

On any platform not in that list, build the server yourself:

git clone https://github.com/hoangvu12/laplus
cd laplus/server
cargo build -p laplus-server --release

The desktop app is a different thing

This is the server and its web UI. The Windows desktop application is a Tauri window with the same server inside it, published as an installer on GitHub Releases.

MIT. Source at hoangvu12/laplus; this package is built from apps/cli.