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

roam402

v0.3.2

Published

Client for Roam402 — every verified x402 service, payable in USDC on Algorand. One line to give your agent the whole x402 economy.

Readme

roam402

Client SDK for Roam4022,349 routes across 751 verified x402 services, payable in USDC on Algorand mainnet. One merchant, dual-chain receipts, trust tiers from the Agents-Trust census.

npm i roam402            # algosdk optional (only for signerFromMnemonic)
import { createRoamClient, signerFromMnemonic } from "roam402";

const roam = createRoamClient({
  signer: await signerFromMnemonic(process.env.ALGO_MNEMONIC!),
  network: "mainnet",
});

const catalog = await roam.catalog();                       // free, paged (25/page)
const page2   = await roam.catalog({ offset: 25 });         // …walk it with total/next
const found   = await roam.catalog({ q: "speech", maxPrice: 0.01, method: "POST" });

// Or just say what you need ($0.0005) — returns candidates, never buys them:
const { candidates } = await roam.resolve("transcribe an audio file", { limit: 3 });
const inputs = await roam.schema(candidates[0].path);       // free: what it expects
const trust   = await roam.trust("blockrun.ai");            // $0.0005
const check   = await roam.precheck("https://…/endpoint");  // $0.0002
const scan    = await roam.call("quickintel-scan-full", {   // wrapped route
  query: { chain: "base", tokenAddress: "0x…" },
});
  • roam.fetch — a payment-enabled fetch: hand it to any HTTP client (OpenAI SDK fetch option, axios adapter, LangChain tool) and that code transparently answers 402 challenges with signed Algorand payments.
  • Signers — anything implementing { address, signTransactions } (use-wallet / Pera adapters work), or signerFromMnemonic server-side.
  • Receipts — paid responses carry PAYMENT-RESPONSE (Algorand settlement), X-Roam-Origin-Chain / X-Roam-Origin-Tx (origin-chain settlement), and an EdDSA-signed JWS receipt verifiable offline against the did:jwk in its own key id.

Payments settle through the GoPlausible facilitator; the buyer needs only USDC on Algorand — no account, no API key, no gas (fee abstraction).

Concurrency

Paid calls can run in parallel. The client serialises only the few milliseconds of payment construction, because two payments built by one wallet in the same millisecond are byte-identical and Algorand rejects the duplicate — an agent firing four calls at once would see three fail with an unexplained 402.

Give each agent its own wallet: the guard covers one client, so two processes sharing a mnemonic can still collide.