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

hindenrank

v0.1.1

Published

Moody's for crypto. Grades protocols A-F on design risk, not TVL. Independent analysis, no hype.

Downloads

201

Readme

Hindenrank CLI

DeFi risk grades from the terminal. Like CoinMarketCap but for cryptoeconomic risk.

$ hr risk aave-v3
╭────────────────────────────────────────────────────╮
│  AAVE V3                         Risk: B+ (25)     │
│  Lending                         TVL: $18.2B       │
├────────────────────────────────────────────────────┤
│  Mechanism Novelty   ██░░░░░░░░░░░░░  2/15         │
│  Interaction Severity ████░░░░░░░░░░░  5/20         │
│  Oracle Surface       ████░░░░░░░░░░░  4/10         │
│  Documentation        █░░░░░░░░░░░░░░  1/10         │
│  Track Record         ██░░░░░░░░░░░░░  3/15         │
│  Scale Exposure       █████████░░░░░░  6/10         │
│  Regulatory Risk      ██░░░░░░░░░░░░░  2/10         │
│  Protocol Vitality    ██░░░░░░░░░░░░░  2/10         │
╰────────────────────────────────────────────────────╯

Install

npm install -g hindenrank

Or run without installing:

npx hindenrank risk uniswap

Requires Node.js 18+.

Quick Start

# Look up a protocol's risk grade
hr risk aave-v3

# Search for a protocol
hr search "lido"

# Browse the leaderboard
hr list --limit 10

# Launch interactive mode
hr

Two Modes

Single Commands

Run one command, get output. Supports --json and --csv for piping.

hr risk uniswap
hr list --sector Lending --limit 20 --json | jq '.data[].name'
hr vaults --source hyperliquid --csv > vaults.csv

Interactive Mode

Type hr with no arguments to launch a full-screen terminal UI:

  • Tab / 1-5 to switch views: Leaderboard, Screener, Vaults, Compare, Watch
  • Arrow keys to navigate, Enter to drill in
  • / to search
  • s to cycle vault sources (in Vaults view)
  • +/- to adjust refresh interval (in Watch view)
  • Esc to go back, q to quit

Watch View (Tab 5)

Live polling dashboard that auto-refreshes protocol data at a configurable interval.

  • Shows protocol name, risk grade, value grade, TVL, and sector
  • Grade change indicators (/) appear when grades change between polls
  • Countdown to next refresh and last updated timestamp displayed in the status bar
  • Navigate with arrow keys, Enter to view protocol detail

| Key | Action | |-----|--------| | + | Increase refresh interval by 30s (max 600s) | | - | Decrease refresh interval by 30s (min 30s) |

Default refresh interval is 120 seconds.

Commands

Protocol Lookup

hr risk <slug>

Show risk grade with 8-dimension breakdown.

hr risk uniswap
hr risk aave-v3 --json

hr value <slug>

Show value accrual grade with breakdown.

hr value lido

hr info <slug>

Full protocol profile — both grades, TVL, FDV, market cap, revenue, verdict.

hr info maker-dao

hr deep <slug>

Deep dive into mechanisms, interactions, novelty signals, and collapse scenarios. Requires a Pro API key.

hr deep curve-finance
hr deep curve-finance --json

Discovery

hr search <query>

Fuzzy search protocols by name.

hr search "pendle"
hr search "liquid staking" --json

hr list

Protocol leaderboard with filters.

hr list                                    # Top 20 by risk score
hr list --sector DeFi --limit 50           # DeFi protocols only
hr list --min-grade A --max-grade B        # Only A and B grades
hr list --sector Lending --json            # Machine-readable output
hr list --csv > protocols.csv              # Export to CSV

| Flag | Description | |------|-------------| | -s, --sector <sector> | Filter by sector (DeFi, L1, L2, Lending, DEX, etc.) | | --min-grade <grade> | Minimum risk grade (e.g., A, B+, C) | | --max-grade <grade> | Maximum risk grade | | -l, --limit <n> | Number of results (default: 20) | | -o, --offset <n> | Skip first N results | | --json | Output as JSON | | --csv | Output as CSV |

hr sectors

List all sectors with protocol counts.

hr sectors
hr sectors --json

hr compare <slug1> <slug2> [slug3...]

Side-by-side comparison of up to 5 protocols. Shows risk grade, value grade, TVL, and all 8 risk dimensions with visual bars.

hr compare aave-v3 compound-v3
hr compare lido rocket-pool stader --json

Screener

hr screen [lens]

Run an investment screener lens. Without arguments, lists all available lenses.

hr screen                          # List available lenses
hr screen blue-chips               # Safe + high value
hr screen dead-money --limit 10    # Value traps
hr screen momentum --json          # Recently scanned, as JSON

| Lens | Description | |------|-------------| | blue-chips | Risk A/B + Value A/B | | sector-leaders | Top 3 by TVL per sector with Risk A/B | | undervalued-gems | Value A/B + Risk C or worse | | asymmetric-bets | Value A/B + TVL < $100M | | momentum | Scanned in last 30 days | | contrarian-plays | Risk improved since last scan | | dead-money | Value D/F + low vitality | | overvalued-exposed | Value D/F + Risk D/F | | deteriorating | Risk worsened since last scan |

Vaults

hr vaults

List yield vaults with filters. Three sources: Beefy, Hyperliquid, Morpho.

hr vaults                                        # All vaults
hr vaults --source beefy --limit 20              # Beefy vaults only
hr vaults --source hyperliquid                   # Hyperliquid vaults
hr vaults --source morpho --chain ethereum       # Morpho on Ethereum
hr vaults --min-apy 0.10 --min-grade B           # 10%+ APY, grade B or better
hr vaults --json | jq '.data[] | {name, apy, riskGrade}'

| Flag | Description | |------|-------------| | -s, --source <source> | Filter by source (beefy, hyperliquid, morpho) | | -c, --chain <chain> | Filter by chain (ethereum, arbitrum, base, etc.) | | --min-grade <grade> | Minimum risk grade | | --max-grade <grade> | Maximum risk grade | | --min-apy <n> | Minimum APY as decimal (e.g., 0.05 for 5%) | | --sort <field> | Sort by apy, tvl, or risk | | -l, --limit <n> | Number of results (default: 20) | | --json | Output as JSON | | --csv | Output as CSV |

hr vault <id>

Show detail for a specific vault.

hr vault beefy-aave-usdc-eth
hr vault search "USDC"             # Search vaults by name/asset

Agent-First Commands

These commands are purpose-built for agents, scripts, and automation pipelines.

hr check <slug>

Quick pass/fail risk gate. Returns exit code 0 (pass) or 1 (fail). Perfect for CI/CD pipelines and agent guardrails.

hr check aave-v3                    # Default threshold: C
hr check aave-v3 -t A               # Strict — only A passes
hr check aave-v3 -t B --json        # Structured output

| Flag | Description | |------|-------------| | -t, --threshold <grade> | Maximum acceptable grade (default: C) | | --json | Output as JSON |

# Use in scripts:
if hr check lido -t B; then
  echo "Safe to proceed"
else
  echo "Risk too high — aborting"
  exit 1
fi

hr batch <slugs...>

Parallel batch lookup — check multiple protocols at once. Much faster than sequential hr risk calls.

hr batch aave-v3 lido uniswap-v3
hr batch aave-v3 lido uniswap-v3 --threshold A    # Flag risky ones
hr batch aave-v3 lido uniswap-v3 --json
hr batch aave-v3 lido uniswap-v3 --csv

| Flag | Description | |------|-------------| | -t, --threshold <grade> | Flag protocols exceeding this grade | | --json | Output as JSON array | | --csv | Output as CSV |

hr alts <slug>

Find safer alternatives — same sector, lower risk score. For agents evaluating whether to switch protocols.

hr alts aave-v3                     # Safer lending protocols
hr alts aave-v3 --limit 5           # Top 5 only
hr alts aave-v3 --json

| Flag | Description | |------|-------------| | -l, --limit <n> | Number of alternatives (default: 10) | | --json | Output as JSON |

hr hr20

Top 20 protocols by TVL — the Hindenrank index. Quick market overview.

hr hr20
hr hr20 --json
hr hr20 --csv

hr diversify <vaultIds...>

Vault portfolio diversification check — assess risk concentration across a set of vaults.

hr diversify vault-1 vault-2 vault-3
hr diversify vault-1 vault-2 vault-3 --json

hr model-portfolio

Get an optimized vault portfolio suggestion.

hr model-portfolio
hr model-portfolio --max-vaults 5
hr model-portfolio --strategies lending,staking --json

| Flag | Description | |------|-------------| | --max-vaults <n> | Maximum vaults in portfolio (default: 10) | | --strategies <list> | Comma-separated strategy types to include | | --json | Output as JSON |

hr audit <protocols...>

Risk exposure report — aggregate risk analysis across a set of protocol positions. Computes a weighted risk score, flags concentration warnings, and identifies weakest links.

hr audit aave-v3 lido ethena                          # Equal $1000 each
hr audit aave-v3 lido ethena --value 5000 3000 2000   # Custom USD values
hr audit aave-v3 lido --json | jq '.data.riskGrade'   # Pipe aggregate grade

Output includes:

  • Aggregate risk score and grade (value-weighted across positions)
  • Per-protocol breakdown (name, grade, raw score, allocated value)
  • Concentration warnings (e.g., >50% in one protocol, sector overweight)
  • Weakest links (highest-risk protocols dragging the portfolio down)

| Flag | Description | |------|-------------| | --value <amounts...> | USD value per position, same order as protocols (default: $1000 each) | | --json | Output as JSON |

# Agent workflow: check portfolio risk before rebalancing
hr audit aave-v3 lido uniswap-v3 --value 10000 8000 5000 --json \
  | jq -r '.data.riskGrade'

# Flag if aggregate risk exceeds threshold
GRADE=$(hr audit aave-v3 ethena --value 5000 5000 --json | jq -r '.data.riskGrade')
if [[ "$GRADE" > "C" ]]; then
  echo "Portfolio risk too high: $GRADE"
fi

Authentication

hr login [key]

Store your API key. Get one at hindenrank.com/account.

hr login                    # Interactive prompt
hr login sk_live_abc123     # Direct key input

Without a key, you get anonymous access (basic grades, 500 calls/day). With a key:

  • Free tier: grades + value data + grade history
  • Pro tier: full deep dives, mechanisms, collapse scenarios

hr logout

Remove stored API key.

hr whoami

Show current authentication status, tier, and rate limit usage.

hr whoami
hr whoami --json

Configuration

hr config

hr config show              # Show current config
hr config set format json   # Default output format
hr config set baseUrl https://hindenrank.com
hr config path              # Show config file location

Config is stored in ~/.config/hindenrank-nodejs/config.json.

For Agents & Automation

The CLI is designed for programmatic use. Every command supports --json for structured output.

JSON Output

All JSON responses follow a consistent schema:

{
  "data": { ... },
  "meta": {
    "total": 731,
    "count": 20,
    "offset": 0,
    "tier": "free",
    "rateLimit": {
      "used": 5,
      "remaining": 995,
      "resetsAt": "2026-03-10T12:00:00.000Z"
    }
  }
}

Example: Agent Workflows

# Quick risk gate — exit code 0 = safe, 1 = too risky
hr check aave-v3 -t B || echo "Risk threshold exceeded"

# Batch check a portfolio in one call
hr batch aave-v3 lido uniswap-v3 compound-v3 --threshold B --json

# Find a safer alternative if current protocol fails check
if ! hr check curve-finance -t B; then
  hr alts curve-finance --limit 3 --json
fi

# Get risk grade as a single value
hr risk uniswap-v3 --json | jq -r '.data.grade'

# Get all A-rated protocols
hr list --max-grade A- --json | jq -r '.data[].slug'

# Compare two protocols and get the winner
hr compare aave-v3 compound-v3 --json | jq -r '.data | sort_by(.rawScore) | .[0].name'

# Top Hyperliquid vaults by APY
hr vaults --source hyperliquid --json | jq '.data | sort_by(-.apy) | .[0:5]'

# Export sector to CSV
hr list --sector Lending --limit 100 --csv > lending.csv

# Daily monitoring script
hr batch $(cat watchlist.txt | tr '\n' ' ') --threshold C --json > daily-report.json

# Market index snapshot
hr hr20 --json | jq '.data | {avgScore: ([.[].rawScore] | add / length), topGrade: .[0].grade}'

Rate Limits

| Tier | Calls/day | Data Access | |------|-----------|-------------| | Anonymous (no key) | 500 | Basic grades, top risks | | Free (API key) | 1,000 | + Value grades, grade history, market data | | Pro (paid key) | 10,000 | + Mechanisms, interactions, collapse scenarios, sources |

Error Handling

Errors return non-zero exit codes and structured JSON when --json is used:

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Protocol not found"
  }
}

| Exit Code | Meaning | |-----------|---------| | 0 | Success | | 1 | Error (not found, invalid input, auth failure, rate limited) |

CSV Output

CSV output includes headers and is suitable for direct import into spreadsheets or pandas:

hr list --csv | head -3
# slug,name,sector,grade,rawScore,tvl,fdv,lastScanned
# aave-v3,Aave V3,Lending,B+,25,18200000000,3500000000,2026-03-08
# uniswap,Uniswap,DEX,A-,20,5200000000,7800000000,2026-03-07

Protocol Slugs

Protocols are identified by lowercase kebab-case slugs: aave-v3, uniswap, lido, maker-dao, rocket-pool.

Use hr search to find the correct slug:

hr search "aave"    # Shows all Aave-related protocols with their slugs

Risk Grade Scale

| Grade | Score Range | Meaning | |-------|-------------|---------| | A, A- | 0-19 | Very low risk | | B+, B, B- | 20-34 | Low risk | | C+, C, C- | 35-49 | Moderate risk | | D+, D, D- | 50-69 | High risk | | F | 70-100 | Very high risk |

Lower score = safer. The 8 dimensions that compose the score:

| Dimension | Max | What it measures | |-----------|-----|-----------------| | Mechanism Novelty | 15 | Count of novel/untested mechanisms | | Interaction Severity | 20 | Severity-weighted interaction risks | | Oracle Surface | 10 | Oracle dependency exposure | | Documentation Quality | 10 | Inverted docs quality | | Track Record | 15 | Exploit/incident history | | Scale Exposure | 10 | TVL/FDV bracket risk | | Regulatory Risk | 10 | Regulatory action exposure | | Protocol Vitality | 10 | TVL trajectory, dev activity |

License

MIT