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

hood-cli

v0.2.1

Published

The command-line toolkit for Robinhood Chain (chain 4663): instant reads with zero config, guarded writes with a wallet. Prices, portfolios, launches, swaps, transfers — the gh/vercel of Robinhood Chain.

Readme

hood-cli

Deploy to Cloudflare Deploy with Vercel

The command-line toolkit for Robinhood Chain (chain ID 4663).

Instant reads with zero config, guarded writes with an encrypted local wallet. Prices, portfolios, launches, swaps, transfers, transaction decoding — the gh/vercel of Robinhood Chain. Built on hoodchain and viem.

Who it's for: anyone tracking Stock Tokens (tokenized equities on Robinhood Chain), watching NOXA/Odyssey memecoin launches, or scripting swaps and transfers from a terminal or CI job. Read commands (price, stocks, coins, launches, tx, token, portfolio, watch) work immediately with no wallet or API key. Write commands (swap, transfer, deploy-token) need a wallet and always stop for an explicit confirmation before signing.

Docs + a live animated terminal demo (a REAL captured session, not invented output): https://nirholas.github.io/hood-cli/ · full flag-by-flag command reference: https://nirholas.github.io/hood-cli/commands.html (generated straight from hood <command> --help — never hand-written, never drifts from the shipped binary).

Install

npm install -g hood-cli

This installs two equivalent binaries: hood and hoodc.

Run without installing:

npx hood-cli price AAPL

From a checkout:

git clone https://github.com/nirholas/hood-cli.git
cd hood-cli
npm install
npm run build
node dist/cli.js price AAPL

Requires Node ≥ 20.

Quickstart

$ hood price AAPL
◈ AAPL · Robinhood Chain mainnet
Oracle    $315.50
Updated   1d 18h ago
DEX       no pool
Premium   —
Token     0xaF3D…93f9

$ hood stocks --sort premium --dex --limit 6
◈ Stock Tokens · mainnet · 6 shown · 6 priced
SYMBOL    PRICE      DEX  PREMIUM     AGE  NAME                      ADDRESS
────────────────────────────────────────────────────────────────────────────────
CLSK     $12.86   $15.51  +20.58%  1d 17h  CleanSpark                0xcBB9…Cee3
IONQ     $43.08   $49.44  +14.76%  1d 18h  IonQ                      0x5583…0EfE
NBIS    $219.24  $248.41  +13.31%  1d 17h  Nebius Group               0x9D9c…7931

$ hood portfolio 0x9701fb0aDe1E269c8f64Ec0C7b3cfADB31A13A52
◈ Portfolio · 0x9701…3A52 · mainnet
ETH      0.003784
USDG     $0.0550
Stocks   $0.00
Total    $0.0550

No Stock Token positions. Fund with `hood swap --sell USDG --buy <ticker>`.

$ hood swap --sell USDG --buy WETH --amount 250
◈ Swap quote · mainnet · add --execute to send
Sell            250 USDG
Buy             ~0.138501866807990729 WETH
Min. received   0.137809357473950775 WETH (0.50% slippage)
Rate            1 USDG ≈ 0.000554 WETH
Route           direct pool

Every command supports --json for machine-readable output — pipe it into jq or a script.

Global options

These apply to every command and must come before the subcommand name (hood --json price AAPL):

| Flag | Description | | --- | --- | | -v, --version | print the CLI version | | --json | machine-readable JSON output instead of the human-formatted view | | --network <net> | mainnet (default) or testnet | | --rpc <url> | override the RPC endpoint for this invocation | | --verbose | show the raw underlying error cause on failure | | --yes | skip the interactive yes/no confirmation on writes (still requires --execute) | | --acknowledge-eligibility | affirm Stock Token acquisition eligibility (you are not a US/CA/UK/CH person) | | --no-color | disable ANSI colour in human output | | -h, --help | show help for the command |

Command reference

| Command | Description | | --- | --- | | price <symbol> | Chainlink oracle price + DEX price + premium for a Stock Token | | stocks | The full Stock Token board with live Chainlink prices | | coins | Memecoin screener — newest or trending launches | | launches | Recent memecoin launches from NOXA and The Odyssey | | portfolio <address> | Multiplier-correct Stock Token positions + USD totals for an address | | tx <hash> | Decode a transaction: status, transfers, gas, method | | token <address> | Inspect a token: metadata, supply, multiplier, price | | watch <addrOrToken> | Live activity stream for an address or a token (ERC-20 transfers + native ETH) | | swap | Quote (default) or execute a Uniswap v3 swap between two tokens | | transfer | Send ETH or an ERC-20 token to an address | | faucet | Print testnet faucet instructions + current testnet balances | | deploy-token | Deploy a fixed-supply ERC-20 from a JSON config (direct-rail, no launchpad) | | config | Manage hood-cli settings (rpc, wallet, network) |

Every argument below is a real, implemented flag — run hood <command> --help at any time to see it straight from the CLI.

hood price <symbol>

Chainlink oracle price, DEX price, and the premium/discount between them for one Stock Token.

| Flag | Description | | --- | --- | | symbol (arg) | ticker (AAPL) or token address | | --watch | live-updating view that repaints in place | | --interval <ms> | refresh interval for --watch (default 4000) | | --max-age <seconds> | max acceptable Chainlink answer age | | --no-dex | skip the Uniswap price probe (oracle only) |

hood price AAPL
hood price 0xaF3D... --no-dex
hood price TSLA --watch --interval 2000

hood stocks

The full Stock Token board — every canonical, verified Stock Token with a live Chainlink feed.

| Flag | Description | | --- | --- | | --sort <key> | symbol | price | premium (premium implies --dex); default symbol | | --dex | also probe Uniswap for DEX price + premium (slower) | | --priced | only show tokens with a live Chainlink feed | | --limit <n> | show at most n rows |

hood stocks
hood stocks --sort premium --dex --limit 10
hood stocks --priced --json

hood coins

Screener over the NOXA/Odyssey bonding-curve launchpads: newest launches, or ranked by trade activity.

| Flag | Description | | --- | --- | | --new | newest launches (default) | | --trending | rank by bonding-curve trade activity | | --lookback <blocks> | blocks to scan (default 50000) | | --limit <n> | rows to show (default 20) | | --names | resolve token symbols on-chain |

Mainnet only — the launchpads don't exist on testnet.

hood coins --names
hood coins --trending --lookback 100000 --limit 10

hood launches

The raw launch feed for NOXA and The Odyssey, or a live stream of new ones.

| Flag | Description | | --- | --- | | --follow | stream new launches live instead of a snapshot | | --launchpad <name> | noxa | odyssey (default: both) | | --lookback <blocks> | blocks to scan for the snapshot (default 30000) | | --limit <n> | max rows in the snapshot (default 25) | | --names | resolve each token symbol on-chain |

hood launches --lookback 2000000 --limit 5 --names
hood launches --follow --launchpad odyssey

hood portfolio <address>

Multiplier-correct Stock Token positions (share-equivalents, not raw balances) plus ETH, USDG, and a USD grand total.

| Flag | Description | | --- | --- | | address (arg) | wallet address to inspect | | --max-age <seconds> | max acceptable Chainlink answer age |

hood portfolio 0x9701fb0aDe1E269c8f64Ec0C7b3cfADB31A13A52

hood tx <hash>

Decodes a transaction: status, from/to, value, method selector, gas, fee, block time, and every ERC-20 Transfer log inside it (symbols resolved for known Stock Tokens and read on-chain for anything else).

hood tx 0x870a3bee3070f10e3c4f34271cfde70fd5aa0dc2eade6f07d01ae6c9a00285bd

hood token <address>

Token metadata: name, decimals, total supply, holder count, the uiMultiplier for Stock Tokens, Chainlink oracle price (if it has a feed), and DEX price.

| Flag | Description | | --- | --- | | address (arg) | token address or ticker |

hood token AAPL
hood token 0xcBB9...

hood watch <addrOrToken>

Streams live activity until Ctrl-C. Without --token, a wallet address streams native ETH in/out plus every USDG transfer touching it (mainnet only — it needs the Stock Token registry). With --token, or when the argument isn't a valid address, it streams every transfer of that token.

| Flag | Description | | --- | --- | | addrOrToken (arg) | wallet address, token address, or ticker to watch | | --token | treat the argument as a token (stream ALL transfers of it) |

hood watch 0x9701fb0aDe1E269c8f64Ec0C7b3cfADB31A13A52
hood watch AAPL --token

hood swap

Quotes a Uniswap v3 swap by default; add --execute to sign and send it. Recognizes USDG, WETH/ETH, any Stock Token ticker, or a raw 0x address for both --sell and --buy.

| Flag | Description | | --- | --- | | --sell <token> | ticker or address to sell (e.g. USDG) — required | | --buy <token> | ticker or address to buy — required | | --amount <amount> | amount of --sell to spend, in whole tokens — required | | --slippage <bps> | slippage tolerance in basis points (default 50 = 0.5%) | | --execute | sign and send (default: quote only) |

hood swap --sell USDG --buy WETH --amount 250
hood swap --sell USDG --buy AAPL --amount 500 --slippage 100 --execute

--execute prints a confirmation table and stops for an explicit y/N unless --yes is passed. It also checks the configured maxSpendUsd cap (see Configuration below) and Stock Token acquisition eligibility — a swap that mints/acquires a Stock Token for a non-affirmed operator fails with a guard error until you pass --acknowledge-eligibility.

hood transfer

Sends native ETH or an ERC-20 token to an address.

| Flag | Description | | --- | --- | | --to <address> | recipient address — required | | --amount <amount> | amount to send, in whole tokens — required | | --token <token> | ticker or address to send (default: native ETH) |

hood transfer --to 0x9701fb0aDe1E269c8f64Ec0C7b3cfADB31A13A52 --amount 0.01
hood transfer --to 0x9701... --amount 100 --token USDG

Same confirmation gate and maxSpendUsd cap as swap.

hood faucet

Prints the testnet faucet URL and instructions, plus your current testnet balances if a wallet is configured. Testnet-only (--network testnet); each claim (browser-only — it requires Cloudflare Turnstile + Google Sign-In and can't be automated) drips testnet ETH plus 5 each of TSLA, AMZN, PLTR, NFLX, AMD.

hood faucet --network testnet

hood deploy-token

Deploys a fixed-supply ERC-20 (not a Stock Token, not launchpad-listed — a plain direct-rail token) from a JSON config.

| Flag | Description | | --- | --- | | --config <path> | path to a JSON file: { name, symbol, decimals?, initialSupply } — required | | --execute | sign and send (default: print the deploy plan only) |

Config file example:

{
  "name": "My Token",
  "symbol": "MTK",
  "decimals": 18,
  "initialSupply": 1000000
}
hood deploy-token --config ./mytoken.json
hood deploy-token --config ./mytoken.json --execute

hood config

Manages the persistent CLI config at ~/.config/hood/config.json (or $HOOD_CONFIG_DIR).

| Subcommand | Description | | --- | --- | | config set <key> [value] | set a config value: network, rpc, testnetRpc, alchemyKey, maxSpendUsd, or wallet | | config get <key> | print one config value | | config list | print the full config (secrets masked) |

hood config set network testnet
hood config set rpc https://your-rpc.example.com
hood config set alchemyKey <your-alchemy-key>
hood config set maxSpendUsd 500
hood config set wallet
hood config get walletAddress
hood config list

config set wallet with no value generates a new private key (or, if ROBINHOOD_CHAIN_IMPORT_KEY is set, imports it), prompts twice for a password, and writes an AES-256-GCM keystore (scrypt KDF, Node's built-in crypto — the same primitive set as the Web3 Secret Storage spec) to ~/.config/hood/keystore.json. The private key never touches the config file or plaintext disk.

hood init

The one-command onboarding wizard for the whole trading stack: this CLI's wallet, the hood-traders llm-strategist (bring your own key — Claude, OpenAI, Groq, or OpenRouter), and the hood-alerts Telegram bot / Discord bot / X (Twitter) auto-posting. Every step is optional — skip anything you don't need with n or Enter.

hood init

It writes hood-traders.env and hood-alerts.env into the current directory (--out <dir> to choose another). Copy each into the matching package as .env and run it:

cp hood-traders.env hood-traders/.env && cd hood-traders && npx hood-traders
cp hood-alerts.env  hood-alerts/.env  && cd hood-alerts  && npx hood-alerts

Needs an interactive terminal (secrets are typed, not passed as flags) — in CI or a non-interactive shell, copy hood-traders/.env.example and hood-alerts/.env.example by hand instead.

Wallet & signing

Every write command (swap --execute, transfer, deploy-token --execute, config set wallet) needs a signer. Precedence:

  1. ROBINHOOD_CHAIN_PRIVATE_KEY env var — a hex private key (with or without 0x prefix). Best for CI or power users; bypasses the keystore entirely.
  2. The encrypted keystore created by hood config set wallet, unlocked by a password prompt (or the HOOD_WALLET_PASSWORD env var, so scripts never need an interactive TTY).

No wallet is required for any read command (price, stocks, coins, launches, tx, token, portfolio, watch).

Configuration & environment variables

| Variable | Purpose | | --- | --- | | HOOD_CONFIG_DIR | overrides the config/keystore directory (default ~/.config/hood) | | HOOD_WALLET_PASSWORD | wallet keystore password, read non-interactively (for scripts/CI) | | ROBINHOOD_CHAIN_PRIVATE_KEY | sign with this private key directly, skipping the keystore | | ROBINHOOD_CHAIN_IMPORT_KEY | private key to import when running hood config set wallet (instead of generating a new one) |

Persistent config keys (hood config set <key> <value>):

| Key | Purpose | | --- | --- | | network | default network for every command: mainnet or testnet | | rpc | custom mainnet RPC URL | | testnetRpc | custom testnet RPC URL | | alchemyKey | Alchemy API key — builds https://robinhood-mainnet.g.alchemy.com/v2/{key} automatically | | maxSpendUsd | hard USD ceiling on a single swap/transfer; the write is refused if the estimated spend exceeds it (unpriceable tokens are never blocked, only warned about) | | wallet | special: runs the interactive wallet setup flow described above |

Resolution order for RPC URL: --rpc flag → alchemyKey (mainnet) / testnetRpc → rpc → the SDK's public default.

Networks

| Network | Chain ID | Notes | | --- | --- | --- | | mainnet (default) | 4663 | Stock Tokens, Chainlink feeds, NOXA/Odyssey launchpads, Uniswap v3 pools all live here | | testnet | 46630 | TSLA, AMZN, PLTR, NFLX, AMD faucet tokens; no launchpads, no Chainlink feeds |

Pass --network testnet on any command, or set it once with hood config set network testnet.

Exit codes

| Code | Meaning | | --- | --- | | 0 | success | | 1 | generic runtime failure | | 2 | bad usage / invalid arguments | | 3 | network / RPC unreachable or timed out | | 4 | a guard rail refused the action (eligibility, spend cap, unconfirmed prompt) | | 5 | requested resource not found (unknown symbol, missing transaction) | | 6 | wallet required but not configured, or wrong password |

Every error also prints a human hint on how to fix it; add --verbose to see the raw underlying cause, or --json to get { error, hint, exitCode } for scripting.

Safety notes

  • Stock Token eligibility. Stock Tokens are tokenized securities and may not be acquired by US/CA/UK/CH persons. Any write that would acquire one refuses to run unless you pass --acknowledge-eligibility, affirming you are not a person from a restricted jurisdiction.
  • Confirmation gate. swap --execute, transfer, and deploy-token --execute always print a confirmation table and require an explicit y before signing, unless --yes is passed. On a non-interactive stdin without --yes, the command fails closed rather than hanging or silently proceeding.
  • Spend cap. Set maxSpendUsd once (hood config set maxSpendUsd 500) to have every swap and transfer checked against it before signing.

Development

npm install
npm run build       # tsup → dist/cli.js (single self-contained ESM file)
npm run typecheck
npm test             # vitest run tests/unit — parsing, formatting, guard rails (offline)
npm run e2e          # scripts/e2e.mjs — exercises the BUILT binary against live chain data

npm run compile-erc20 regenerates src/generated/erc20.ts from contracts/ERC20.sol (the fixed-supply token deploy-token deploys) — only needed if you change the contract.

Docs site

The docs/ folder is a static site (GitHub Pages, deploy-from-branch, no build step on Pages itself) whose content is generated, never hand-written:

npm run capture        # drives the built binary against live mainnet, saves docs/session.json
npm run docs:commands  # generates docs/commands-data.json from the CLI's own --help output
npm run docs:build     # stitches both into docs/index.html + docs/commands.html
npm run docs           # runs all three in order

docs/index.template.html and docs/commands.template.html are the editable sources; docs/index.html and docs/commands.html are the generated, real-data-inlined output that Pages actually serves — re-run npm run docs after any command change to keep them in sync.

Where it's hosted: GitHub Pages is the default (Settings → Pages → Deploy from a branch → main → /docs) → https://nirholas.github.io/robinhood-chain-cli/. The Deploy to Cloudflare and Deploy with Vercel buttons at the top of this README are one-click alternatives — wrangler.json/vercel.json at the repo root both point at docs/ as a plain static folder, no build command needed. There's no server component to this tool (it's a local CLI), so only the docs site is deployable — npm install -g hood-cli is how you get the tool itself.

Publishing

npm run build
npm test
npm pack               # verify the tarball installs clean: npm i -g ./hood-cli-*.tgz
npm publish --access public

License

All rights reserved. See LICENSE.


Built by nirholas · three.ws