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

bugglo

v0.2.0

Published

Read Robinhood Chain (4663) directly: rug checks, ownership, upgradeable-proxy and privileged-function disclosure. No API key, no account, no backend. Reports UNKNOWN as a first-class result — a check that did not run is never a check that passed.

Readme

bugglo

Robinhood Chain (4663), read straight from the chain. No API key, no account, no backend.

bugglo is a terminal and library for asking the questions a holder asks before touching a token:

  • Does code exist at this address on Robinhood Chain, not Ethereum by accident?
  • Does it look like an ERC-20?
  • Is ownership renounced, active, or simply not visible through owner()?
  • Is it an EIP-1967 upgradeable proxy?
  • Which common privileged selectors are present in bytecode?
  • Is there DEX liquidity, real sell flow, and enough depth to matter?
  • Which checks could not run, and why?

It deliberately reports UNKNOWN as a first-class result. A check that did not run is never a check that passed.

Quick start

npx bugglo 0x2103faA9D1762e27a716C61718b3aCf3Ec1F9bf1

Machine-readable output:

npx bugglo --json 0x2103faA9D1762e27a716C61718b3aCf3Ec1F9bf1

Use your own RPC:

npx bugglo --rpc https://your-robinhood-chain-rpc.example 0x2103faA9D1762e27a716C61718b3aCf3Ec1F9bf1

Use fallback RPCs:

npx bugglo --rpc-list https://rpc.one,https://rpc.two 0x2103faA9D1762e27a716C61718b3aCf3Ec1F9bf1

Commands

| Command | Output | |---|---| | bugglo <address> | Full rug-check report. | | bugglo rug <address> | Same as above. | | bugglo info <address> | ERC-20 metadata, bytecode size, and per-field metadata errors. | | bugglo ownership <address> | renounced, owned, or no-owner-fn. | | bugglo proxy <address> | EIP-1967 implementation slot status. | | bugglo powers <address> | Common privileged function selectors found in deployed bytecode. | | bugglo market <address> | DexScreener liquidity, FDV, volume, buy/sell counts, pool age, and ratios. | | bugglo limits | Checks this package cannot perform from bare RPC + public DEX data. |

Options:

--json                 Print JSON where supported
--full                 Print the full address in the rug-check report
--rpc <url>            Override the Robinhood Chain RPC
--rpc-list <urls>      Comma-separated fallback RPC URLs; first healthy chain 4663 endpoint wins
--timeout <ms>         Chain RPC timeout
--dex-timeout <ms>     DexScreener timeout
--no-color             Disable ANSI colour
--help                 Show help
--version              Show version

Example report

BUGGLO — rug check
Robinhood Chain (chain 4663)
0x2103...9bf1
Robin Hood (FOX), 18 decimals

VERDICT  NO RED FLAGS IN WHAT I COULD CHECK

  UNKNOWN Ownership unclear
          There is no standard owner() function. That does NOT mean ownership is
          renounced — the contract may use roles or an embedded admin that I cannot see.
  PASS    Contract exists
          4,830 bytes of bytecode on Robinhood Chain (chain 4663).
  PASS    Sells are going through
          People are getting out, so it is not a hard honeypot.

NOT CHECKED — these are not passes
  holder concentration
  liquidity lock
  honeypot / sell simulation

The verdict is intentionally wordy. Rounding it up to "safe" is the bug this package exists to avoid.

Library API

import { rugCheck, ROBINHOOD_CHAIN_ID } from "bugglo";
import { renderRugCheck } from "bugglo/report";

const result = await rugCheck("0x2103faA9D1762e27a716C61718b3aCf3Ec1F9bf1");
console.log(ROBINHOOD_CHAIN_ID);
console.log(renderRugCheck(result));

Available exports:

import {
  ROBINHOOD_CHAIN_ID,
  RPC_URL,
  UNMEASURABLE,
  rugCheck,
  getContractCode,
  getTokenMetadata,
  getOwnership,
  getProxyStatus,
  getMarket,
  scanPowers,
} from "bugglo";

import { renderRugCheck, renderOneLine } from "bugglo/report";

Network and reliability

By default, bugglo talks to:

| Host | Used for | |---|---| | rpc.mainnet.chain.robinhood.com | Bytecode, owner(), ERC-20 metadata, storage slots. | | api.dexscreener.com | Liquidity, volume, FDV, buys, sells, pool age. |

The public Robinhood Chain RPC is free and convenient, but public RPCs can be rate-limited, blocked by some ISPs, or unavailable from some networks. For bots, CI, trading desks, and public services, use a dedicated provider endpoint:

ROBINX_RPC_URL=https://robinhood-mainnet.g.alchemy.com/v2/YOUR_KEY npx bugglo <address>

Or pass several endpoints:

BUGGLO_RPC_URLS=https://rpc.one,https://rpc.two npx bugglo <address>

DNS-blocked networks (e.g. Indonesia's Trust Positif filter)

The chain RPC lives on a robinhood.com subdomain, and some ISPs block that domain at the DNS level — Indonesian networks running the government Trust Positif filter answer the lookup with the filter's server instead of the chain. The endpoint is not geo-blocked; only its name is poisoned.

bugglo handles this automatically. When a direct connection fails, it re-resolves the host over DNS-over-HTTPS (which the ISP resolver cannot poison) and connects to the real IP, with TLS SNI and certificate validation still pinned to the true hostname. No VPN, no DNS change, no flag, no API key. If the DoH resolvers are themselves blocked, fall back to --rpc/ROBINX_RPC_URL on an unblocked domain, or a VPN.

If every path fails, Bugglo reports CANNOT CHECK / UNKNOWN. It does not turn an outage into a clean verdict.

What it will not fake

These checks are always disclosed as not measured:

| Check | Why | |---|---| | Holder concentration | Needs an indexer. Reconstructing balances from all Transfer logs is not viable at CLI latency on a public RPC. | | Liquidity lock | Needs a known locker registry for this chain. | | Honeypot sell simulation | Needs a sell simulation from a holder through the router. Bugglo does not run that read today. |

No numeric risk score is emitted. A score made from partial data launders ignorance into confidence.

MCP

For agents, use the companion package:

{
  "mcpServers": {
    "bugglo": {
      "command": "npx",
      "args": ["-y", "bugglo-mcp"]
    }
  }
}

bugglo-mcp is only an adapter. The chain logic lives here, in bugglo, so CLI, library, and MCP answers cannot drift.

Exit codes

| Code | Meaning | |---|---| | 0 | Command completed. The result may still contain WARN or UNKNOWN; read it. | | 1 | The requested check could not complete, or the RPC proved wrong/unusable. | | 2 | Bad CLI usage, malformed address, or invalid option. |

License

MIT.