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

@claude-mobile/bridge

v0.2.2

Published

Bridge server for Claude Code Mobile — wraps the Claude Agent SDK and exposes it over WebSocket so the mobile/PWA app can drive it remotely.

Readme

@claude-mobile/bridge

Bridge server for Claude Code Mobile — wraps the Claude Agent SDK and exposes it over WebSocket so the mobile/PWA app can drive Claude Code from your phone.

Quickstart

npx @claude-mobile/bridge

That's the whole setup. The bridge starts a secure tunnel, then opens a connect page in your browser:

✦ Claude Code Bridge — my-laptop
  Reachable from anywhere
  Opening http://localhost:3578/connect …

Point your phone's camera at the QR code on that page. Your phone's normal camera app opens the mobile app and connects it — there is nothing to type. To use the app on the same computer instead, click Connect this computer.

The first time a device connects, the page asks you to approve it:

iPhone · Safari wants to connect     [Approve]  [Deny]

After that, the device reconnects silently.

On first run you'll be prompted for an ANTHROPIC_API_KEY (get one here). It's stored at ~/.config/claude-code-bridge/config.env (mode 0600). Without one, the bridge falls back to your local claude CLI login, so a Pro/Max subscription works with no key at all.

How devices are trusted

Rather than sharing one password, each device is paired individually:

| Credential | Lifetime | Purpose | | ------------ | --------------------- | ---------------------------------------------- | | Pairing code | 5 minutes, single use | Proves the device saw your QR code | | Device token | Until revoked | Issued on approval; used for later connections |

Nothing is displayed for you to type or copy, so there is nothing to leak in a screenshot or a screen share. A QR captured from a shared screen stops working within five minutes, and a device can only get in if you approve it on your own machine.

Paired devices are listed on the connect page and can be revoked individually.

Options

| Flag | Effect | | ------------------ | ------------------------------------------------------------------------------ | | --no-tunnel | Local network only. Implies --lan. | | --lan | Also listen on the local network while the tunnel is running. | | --qr | Also print a QR code in the terminal (useful over SSH). | | --no-open | Don't open a browser; print the connect URL instead. | | --trust-lan | Auto-approve local-network devices. Tunnel connections still require approval. | | --trust-all | Disable approval entirely. Unsafe with the tunnel enabled. | | --forget-devices | Unpair every device and exit. | | --setup-api-key | Store an Anthropic API key and exit. |

Environment

Read in this order, later entries winning:

  1. ~/.config/claude-code-bridge/config.env (%APPDATA%\claude-code-bridge\config.env on Windows)
  2. .env in the current directory
  3. Process environment

| Variable | Default | Notes | | -------------------------- | -------------- | ------------------------------------------------- | | ANTHROPIC_API_KEY | — | Falls back to your local claude CLI login | | PORT | 3578 | TCP port | | AUTH_TOKEN | random | Legacy shared token for automation; skips pairing | | PWA_URL | the hosted app | Point the QR at your own deployment | | CLAUDE_BRIDGE_CONFIG_DIR | OS default | Where config, devices and titles are stored |

Networking

By default the bridge listens only on 127.0.0.1, with the tunnel reaching it locally, so it is not exposed to your local network. Pass --lan if you use the native app over Wi-Fi and want the faster direct route.

The tunnel uses Cloudflare Quick Tunnels; the cloudflared binary downloads automatically on first use (~30 MB). If it cannot be installed, the bridge falls back to local-network-only and says so.

Quick Tunnel URLs change on every restart, so a saved connection goes stale when you restart the bridge — scan the QR again. Leave the bridge running and this rarely comes up.

Auto-start on macOS

From a checkout of the source repo:

npm run setup -w @claude-mobile/bridge     # installs a launchd plist
npm run unsetup -w @claude-mobile/bridge   # removes it

Approval happens on the connect page rather than in the terminal, so this works headless — open http://localhost:3578/connect whenever a new device needs approving.

License

MIT