hindenrank
v0.1.1
Published
Moody's for crypto. Grades protocols A-F on design risk, not TVL. Independent analysis, no hype.
Downloads
201
Maintainers
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 hindenrankOr run without installing:
npx hindenrank risk uniswapRequires 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
hrTwo 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.csvInteractive 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 --jsonhr value <slug>
Show value accrual grade with breakdown.
hr value lidohr info <slug>
Full protocol profile — both grades, TVL, FDV, market cap, revenue, verdict.
hr info maker-daohr 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 --jsonDiscovery
hr search <query>
Fuzzy search protocols by name.
hr search "pendle"
hr search "liquid staking" --jsonhr 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 --jsonhr 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 --jsonScreener
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/assetAgent-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
fihr 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 --csvhr 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 --jsonhr 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 gradeOutput 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"
fiAuthentication
hr login [key]
Store your API key. Get one at hindenrank.com/account.
hr login # Interactive prompt
hr login sk_live_abc123 # Direct key inputWithout 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 --jsonConfiguration
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 locationConfig 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-07Protocol 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 slugsRisk 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
