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

@lodz/cli

v0.1.3

Published

Command line client for the LODZ BTC yield layer on Solana. Breaks yield into sustainable, emissions and counterparty and shows the rate after impermanent loss.

Readme

@lodz/cli

Command line client for the LODZ BTC yield layer on Solana.

It answers one question in the terminal: of the yield being quoted, how much is someone actually paying, how much is being printed, and how much is somebody else losing.

npm install -g @lodz/cli
lodz assay --btc 1.5

Node 18 or newer. No runtime dependencies: the client library is compiled into the published output, so the install cannot fail on a package that is not on the registry yet, and there is no publish order to get right.


Output

  LODZ assay  1.5 BTC  stope balanced
  source defillama (live) at 2026-08-15 07:53:59Z

  Yield attribution                  807 bps     8.07%
  ┌────────────────────────────────────────────────────────┐
  │████████████████████████████████████████████████████████│
  └────────────────────────────────────────────────────────┘
  █ Sustainable      807 bps    8.07%    0.12108313 BTC   trading fees and borrow interest, paid by an outside user
  ▒ Emissions          0 bps    0.00%    0.00000000 BTC   none on Solana BTC pools as of 2026-08-15
  ▓ Counterparty       0 bps    0.00%    0.00000000 BTC   no allocation to trader-loss funded venues

  After impermanent loss                 776 bps     7.76%   31 bps of estimated loss deducted
  After emissions end                    807 bps     8.07%   no incentive programme to end
  Redemption fee (10 bps of yield)       806 bps     8.06%   0.12096205 BTC net

The three kinds are never summed into one headline number. Each has its own glyph as well as its own colour, so the split survives a pipe, a NO_COLOR terminal and a reader who cannot distinguish the hues.


Commands

lodz assay   --btc <n> [--stope conservative|balanced|aggressive] [--json]
lodz seams   [--type sustainable|emissions|counterparty] [--json]
lodz queue   [--owner <pubkey>] [--json]
lodz deposit --btc <n> --asset <mint> [--stope <p>] [--json]
lodz redeem  --amount <n> [--stope <p>] [--json]

| Option | Meaning | |---|---| | --api <url> | Indexer base URL. Defaults to $LODZ_API_URL, then https://api.lodz.money | | --json | Raw JSON on stdout, never coloured. Suitable for a pipe | | --timeout <ms> | Per-request timeout. Default 15000 | | --help, -h | Usage. Exits 0 | | --version, -V | Version. Exits 0 |


What the numbers mean

The emissions row is usually zero, and that is the finding. All 94 BTC-related pools on Solana across 647 days of history show no reward APY. The collector works: the same snapshot finds 15 pools with a reward APY elsewhere on Solana. When a competitor advertises a double-digit BTC yield, one of three things is true -- fee revenue is shown without impermanent loss deducted, a points programme has been converted into an APY, or leverage is folded into the headline. This tool separates the three.

IL: unknown is a real answer. DefiLlama reports il7d as null for the relevant pools. Where an impermanent loss estimate cannot be computed the seam says so, and the net column shows --. An unknown loss printed as zero turns a gross rate into a net one, which is the misstatement the tool exists to catch.

APY is never the spot rate. The BASIS column names the window each figure came from. One day in the Orca cbBTC-USDC history reads 74,187% apyBase, an artefact of low TVL, which is what a spot quote would happily print.

counterparty is not sustainable. GMTrade's BTC-USDC vault pays out of trader losses. It gets its own row, its own glyph and its own colour.


Assets are identified by mint

deposit takes --asset <mint>. Symbols are rejected: WBTC exists on Solana under two distinct mints and a symbol lookup resolves to the wrong one silently.

lodz deposit --btc 0.5 --asset cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij

Three mints are refused outright, each for a measured reason: soBTC (depegged 99.96 percent), 21BTC (economically dead) and the BitGo canonical WBTC mint (about $46K of liquidity on Solana).


deposit and redeem do not send anything

They build and describe a request, print the asset's trust model and the target program, and stop. There is no signing path in this binary. While the vault program is undeployed they exit 3 and say why.


Exit codes

| Code | Meaning | |---|---| | 0 | success | | 1 | usage error: bad flag, missing argument, denylisted mint | | 2 | the service answered with an error status | | 3 | the service could not be reached, or the action is unavailable |

A network failure prints a diagnosis rather than an empty result:

lodz: LODZ request to http://127.0.0.1:9/assay failed before a response: fetch failed
       Check --api or $LODZ_API_URL.

Colour

On a terminal only. NO_COLOR disables it, with any value including an empty one, and outranks FORCE_COLOR. --json output is never coloured.


Licence

MIT.