Skip to content

sp0oby/dyor-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dyor — command-line reference

Bundled NPM package dyor-pulse exposes the executable dyor: reproducible diligence dossiers (Markdown, JSON, optional HTML/PDF) from public aggregators plus optional Dune/OpenRouter augmentation.

Outputs are reference material only—not investment advice, issuer diligence, or contract audit substitutes.


Contents

Section
Requirements Node version
Install & build Local setup
Invocation How to run the binary
Environment .env variables
Commands Full subcommand reference
Artifacts What packet writes
Exit status Return codes
Configuration files YAML and catalogs
Limits & disclaimers Scope and vendor terms

Requirements

  • Node.js20

Install & build

cd dyor-pulse
npm ci          # or: npm install
npm run build   # emits dist/cli.js

Declared binary: dyordist/cli.js (package.json bin). After linking:

npm link && dyor --help

Invocation

Discovery:

dyor --help
dyor <command> --help

Run paths:

Method Example
NPM script npm run dyor -- packet chainlink --help
Node node ./dist/cli.js packet chainlink --chain ethereum
Linked dyor packet chainlink …
Dev (tsx) npm run dev -- packet chainlink --help

Working directory: project root recommended so ./.env, ./config/dune-queries.yaml, and ./reports resolve predictably.

Copy .env.example.env. Never commit real credentials.


Environment

Loaded via dotenv when present (src/env.ts).

Variable When needed Purpose
DUNE_API_KEY packet Dune lanes, dyor dune run Executes registry / ad‑hoc queries.
COINGECKO_API_KEY Optional Higher CoinGecko limits where supported.
DEFILLAMA_API_KEY Optional Llama Pro (emissions SDK, quotas). Public TVL/emission probes may still work.
ETHERSCAN_API_KEY packet explorer lane Single Etherscan API V2 key; per-request chainid.
TOKENSNIFFER_API_KEY Optional packet TokenSniffer smell-test tier.
ETH_RPC_URL Optional packet Default JSON-RPC for Transfer-window probe; overridden by --rpc-url.
OPENROUTER_API_KEY packet --with-ai OpenRouter chat completions.
OPENROUTER_MODEL Optional Override default nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free; --ai-model wins.

Commands

Summary:

Command Stdout Role
dyor packet Logs + files under --out Full dossier
dyor protocol <slug> JSON Llama protocol snapshot
dyor markets <coinGeckoId> JSON CoinGecko market row
dyor chains JSON Macro TVL regime + top chains
dyor resolve … JSON Resolver debug (failure → exit 1)
dyor dune list YAML registry as JSON No HTTP
dyor dune run … JSON One-off Dune execution

dyor packet

Aggregate DefiLlama, CoinGecko, DexScreener, GoPlus, Etherscan V2; optional TokenSniffer, bounded RPC Transfer probe, emissions attempt, YAML Dune runs, optional OpenRouter memo sections (--with-ai), optional PDF (--pdf).

Synopsis

dyor packet [options] <target>

Operand

<target> — Resolved as Llama slug, CoinGecko id (with --coin), contract (with --contract / address shape), or fuzzy label per internal resolver (src/lib/packetResolution.ts).

Options

Option Type Default Description
--coin flag false Treat <target> as explicit CoinGecko coin id.
--contract flag false Force contract → CoinGecko path.
--pick-first flag false Accept best fuzzy Llama match when ambiguity would fail.
-c, --chain <slug> string Accent routing: platform slug, alias, or EIP‑155 id (maps via src/lib/evmChainCatalog.ts).
-o, --out <dir> path ./reports Output directory.
--dune-config <yaml> path ./config/dune-queries.yaml Dune query registry.
--skip-dune flag Do not execute registry queries.
--skip-chains flag Omit top-chain regime slice.
--top-chains <n> number 12 Rows in regime table (minimum ~5 enforced in code).
--skip-dex flag Skip DexScreener pool fetch.
--skip-goplus flag Skip GoPlus token_security.
--skip-etherscan flag Skip Etherscan V2 façade.
--skip-emissions flag Skip Llama emissions/unlock scaffolding.
--skip-tokensniffer flag Skip TokenSniffer when key present.
--skip-rpc-probe flag Skip bounded JSON-RPC probe.
--rpc-url <url> URL env ETH_RPC_URL JSON-RPC endpoint (must match chain eth_chainId).
--rpc-log-blocks <n> number 65536 Transfer log window span (bounded; see --help).
--with-ai flag false Call OpenRouter for thesis / strategy prose blocks. Requires OPENROUTER_API_KEY.
--ai-model <slug> string see env Overrides OPENROUTER_MODEL; default Nemotron Omni :free.
--pdf flag false After emitting Markdown, compile report.mdreport.pdf via md-to-pdf / Puppeteer.

Sections in report.md

Fixed memo order (appendix afterward): Overview → On-Chain Snapshot → Capital Flows & User Behavior → Tokenomics Evaluation → Technical & Risk Assessment → Investment Thesis → Strategic Recommendations for DYOR → methodology & verification.

Examples

dyor packet chainlink --chain ethereum -o ./reports/chainlink --with-ai --pdf
dyor packet aave --chain ethereum --skip-dune
dyor packet ethereum --coin -o ./reports/eth-token
dyor packet 0x…token --chain base --rpc-url https://…

dyor protocol

Synopsis

dyor protocol <slug>

Prints Llama /protocol/<slug> snapshot (TVL series slice, deltas, chains, bridging metadata) as JSON.

Example: dyor protocol aave


dyor markets

Synopsis

dyor markets <coinGeckoId>

CoinGecko coin detail market fields for one exact id.

Example: dyor markets ethereum


dyor chains

Synopsis

dyor chains [--top <n>]
Option Default Description
--top <n> 15 Top-N chains by TVL (clamped ~3–80).

dyor resolve

Emit resolver trace JSON only (no dossier). Exit code 1 on hard resolver failure (src/commands/resolve.ts).

Synopsis

dyor resolve [options] <raw>
Option Description
--coin Same as packet.
--contract Same as packet.
--pick-first Same as packet.
-c, --chain … Chain hint.

dyor dune

dune list — Synopsis

dyor dune list [--dune-config <yaml>]

Prints parsed registry (name, queryId, enabled, …) without hitting Dune’s API.

dune run — Synopsis

dyor dune run [options] <queryId>

Requires DUNE_API_KEY.

Option Description
-p, --params <csv> key=value,key2=value2 query parameters

Example:

dyor dune run 1234567 -p "blockchain=ethereum,min_usd=1000"

Global flags (program)

Flag Behaviour
-h, --help Help (dyor, or subcommand if placed after).
-V, --version Semantic version string.

Artifacts

Written under dyor packet -o (default ./reports/…). Console logs paths where applicable.

File Produced when
report.md Always for packet.
report.json Parallel structured dump (same run; includes methodology footers).
protocol-tvl.html Llama yields ≥2 usable TVL points in series. Inline SVG preview.
report.pdf --pdf succeeds; failure note may append to report.json methodology.

PDF uses headless Chromium (first run may download browser binaries).


Exit status

Code Meaning
0 Normal completion (packet prefers degrading skips over aborting single feed failures).
1 dyor resolve hard resolver failure.
≠0 Parse errors, missing DUNE_API_KEY on dune run, uncaught Node errors elsewhere.

CI pattern: dyor resolve gate, then dyor packet, optionally assert report.json lanes your policy requires.


Configuration files

Path Role
config/dune-queries.yaml Dune ids + defaults; placeholders use queryId: 0 / enabled: false until you publish real queries. DUNE_API_KEY alone does not run lanes until rows are enabled with numeric ids.
dune/samples/ Sample SQL to fork in Dune’s UI.
src/lib/evmChainCatalog.ts CoinGecko platform → DexScreener / GoPlus / Etherscan chainid.
src/roleAlignment.ts Responsibility vs CLI coverage mapping (maintainer notes).

Limits & disclaimers

  • Aggregator truth — Reconcile Llama/CG/Dex/GoPlus with contracts and disclosures.
  • Heuristics — bytecode flags, sniff scores, RPC counterparty breadth ≠ audits or labelled wallet intel.
  • Explorer reads — one accent-chain ERC‑20 façade; multisite issuance needs manual rollup.
  • TVL deltas — Nearest anchored sample logic: src/lib/tvlMath.ts.
  • Contracts / fuzzing — Formal audit tooling (Slither, Foundry fuzz, Echidna, …) is out of scope for this repo; orchestrate externally and cite in memos.

Terms: Obey CoinGecko, DefiLlama, Dune, DexScreener, GoPlus, TokenSniffer, Etherscan/OpenRouter rate limits and redistribution policies.


See also

About

CLI that builds reproducible DeFi/crypto diligence dossiers from public APIs (DeFiLlama, CoinGecko, Dune, explorers, etc.) — Markdown + JSON; optional AI narrative and PDF

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors