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

@dclimate/tyche-cli

v0.2.8

Published

`@tyche/cli` is the orderbook CLI for Tyche and WTHRBook.

Downloads

949

Readme

Tyche CLI

@tyche/cli is the orderbook CLI for Tyche and WTHRBook.

It is built around the actual backend API in ../orderbook and the signing model used in packages/dapp/services/wthrbook-orderbook.ts. This package focuses on the flows that exist today:

  • health checks
  • orderbook, positions, trades, and fee reads
  • live SSE event streaming
  • shared-address and settlement funding reads/writes
  • tradable market discovery and market full-set minting
  • signed order creation and submission
  • signed cancel creation and submission
  • admin fee management
  • command and schema introspection for agents

Runtime configuration

Global flags:

  • --api-url
  • --chain-id
  • --environment
  • --rpc-url
  • --ponder-url
  • --settlement-address
  • --usdc-address
  • --fee-recipient
  • --output auto|text|json|ndjson

Environment variables:

  • TYCHE_API_URL
  • TYCHE_CHAIN_ID
  • TYCHE_ENVIRONMENT
  • TYCHE_RPC_URL or BASE_RPC_URL
  • TYCHE_PONDER_URL
  • TYCHE_SETTLEMENT_ADDRESS
  • TYCHE_USDC_ADDRESS
  • TYCHE_PRIVATE_KEY

Signing and settlement write commands read the wallet key from TYCHE_PRIVATE_KEY. The CLI does not accept private keys on the argv surface.

When contract addresses or the order fee recipient are not passed explicitly, the CLI resolves them from @tyche/shared/addresses.json using the selected chain id (8453 = base, 84532 = baseSepolia). Settlement funding commands read the actual collateral token from TycheOrderSettlement.usdc() so they do not accidentally use the generic chain USDC address when the settlement was deployed against MockUSDC.

Ponder defaults are public endpoints, not local services:

  • staging and development: https://ponder-wthrbook-staging.dclimate.net/
  • production: https://ponder-wthrbook.dclimate.net/

Override with --ponder-url or TYCHE_PONDER_URL when testing a custom indexer.

Use tyche config inspect --output json to print the resolved non-secret runtime configuration for agents. It includes API, RPC, Ponder, settlement, USDC/collateral, and WTHRBookFeeRecipient values, and it does not require TYCHE_PRIVATE_KEY.

The CLI also falls back to the frontend env names used by packages/dapp:

  • NEXT_PUBLIC_WTHRBOOK_API_URL
  • NEXT_PUBLIC_PONDER_URL
  • NEXT_PUBLIC_ENVIRONMENT

Command surface

  • health
  • orderbook list
  • positions list
  • trades list
  • fees quote
  • fees negotiated list|set|clear
  • fees discount-tiers list|set|clear
  • orders create|submit|submit-bulk
  • cancels create|submit
  • config inspect
  • markets tradable|mint-full-set
  • settlement addresses|balance|approve|deposit|withdraw
  • stream
  • describe
  • schema list|get

Output contract

Non-streaming commands emit a stable JSON envelope in --output json mode:

{
  "ok": true,
  "command": "orderbook.list",
  "data": {},
  "meta": {
    "timestamp": "2026-04-23T12:00:00.000Z",
    "apiUrl": "http://127.0.0.1:3001"
  }
}

Errors use the matching envelope shape on stderr:

{
  "ok": false,
  "command": "orders.submit",
  "error": {
    "code": "api_error",
    "message": "invalid signature"
  }
}

stream emits one JSON object per line in --output ndjson mode.

Read commands are bounded by default. orderbook list, positions list, and trades list default to --limit 100 and accept --offset; JSON output includes the backend pageInfo metadata (limit, offset, nextOffset, hasNextPage).

orders submit-bulk --output json keeps the final JSON envelope on stdout and writes per-order progress events as JSON lines on stderr, so long batches can be monitored without corrupting the machine-readable result. Bulk submission defaults to --concurrency 2; orders from the same maker are still serialized to avoid backend submission locks. Add --summary to return aggregate counts and bounded failure samples instead of every per-order result. Add --failed-output-file ./failed-orders.json to write failed signed payloads as a retryable JSON array.

Exit codes

  • 0: success
  • 1: unexpected internal error
  • 2: usage or validation error
  • 3: runtime configuration error
  • 4: API request or response error
  • 5: admin auth error
  • 6: signing error
  • 7: chain/RPC transaction error

Examples

tyche health --output json
tyche config inspect --chain-id 84532 --output json
tyche orderbook list --pool-id 12 --limit 100 --offset 0 --output json
tyche positions list --maker 0xabc... --output json
tyche trades list --market-id 0xabc... --limit 25 --offset 0 --output json
tyche fees quote --maker 0xabc... --product-type COLLATERAL --output json
tyche orders create --product-type COLLATERAL --pool-id 12 --side BUY --shares 5 --limit-price 0.55 --output json
tyche orders submit --input-file ./order.json --output json
tyche orders submit-bulk --input-file ./orders.json --output json
tyche orders submit-bulk --input-file ./orders.json --summary --failed-output-file ./failed-orders.json --output json
tyche cancels create --order-hash 0xabc... --output json
tyche markets tradable --limit 25 --output json
tyche markets mint-full-set --market-id 0xabc... --amount 10 --approve --allowance-settle-ms 1000 --output json
tyche settlement addresses --chain-id 84532 --output json
tyche settlement balance --owner 0xabc... --output json
tyche settlement deposit --amount 25 --approve --output json
tyche settlement withdraw --amount 10 --output json
tyche stream --market-id 0xabc... --output ndjson
tyche describe orders.create --output json
tyche schema list --output json

orders submit and cancels submit accept either a bare signed payload or the full JSON envelope emitted by the matching create --output json command.

Buy orders spend the maker's internal settlement balance, not wallet USDC directly. Deposit USDC into TycheOrderSettlement before submitting tradable buy orders; active match locks temporarily reduce the withdrawable amount shown by settlement balance.