@lucidly/cli
v0.2.0
Published
Command-line interface for Lucidly tokenized Boring Vaults on EVM. Includes a scriptable research-tool subcommand for vault + Aave + Morpho reads, and an LLM-driven research subcommand (Anthropic / Groq / DeepSeek / OpenAI).
Downloads
277
Maintainers
Readme
@lucidly/cli
Command-line interface for Lucidly tokenized Boring Vaults on EVM. Wraps @lucidly/sdk
and persists an active vault + integration state between invocations.
Install
npm install -g @lucidly/cliConfigure
mkdir -p ~/.config/lucidly && cat > ~/.config/lucidly/config.json <<'EOF'
{ "rpc_url": "https://mainnet.base.org", "chain": "base" }
EOF
export LUCIDLY_PK=0x... # strategist/deployer private key (signer)Config dir is ~/.config/lucidly (override with LUCIDLY_HOME). The active vault, deployment
addresses, and the enabled-integration descriptor are saved to state.json so later commands
(e.g. aave supply) rebuild the Merkle tree and generate proofs without re-enabling.
Commands
vault deploy <params.json> Deploy the full stack; saves it as the active vault
vault set <vaultAddress> Select an active vault
vault view name/symbol/decimals/totalSupply/rate/AUM
accountant view | set-rate <rate> Read / push the exchange rate
integration enable <PROTOCOL...> Deploy decoder, build leaves, set the Merkle root [--assets USDC,WETH]
delegate grant <addr> [--role R] Grant a role (default STRATEGIST)
roots show [--strategist <addr>] Show the on-chain manage root
teller deposit <asset> <amount> Public deposit (mints shares) [--min-mint n]
teller withdraw <asset> <shares> Instant redemption via the solver path
queue deploy AtomicQueue + redeem solver for async redemptions (syUSD-style)
queue request <want> <shares> Post a redemption request --price <wantPerShare> [--deadline secs] [--offer addr]
queue solve <want> <user...> SOLVER fulfills a batch atomically [--min-out h] [--max-assets h]
queue status <user> <want> Show a user's request + validity
monitor snapshot [--from <block>] NAV/AUM/flows + alerts (read-only, no signer)
monitor dashboard [--out file.html] Render a self-contained HTML dashboard
aave supply <asset> <amount> Leaf-verified Aave supply (one tx)
aave withdraw <asset> <amount> Leaf-verified Aave withdraw
agent "<natural language>" Single-prompt path with the leaf-existence safety guardQueued redemptions (illiquid vaults)
When a vault's assets aren't instantly liquid (Pendle, locked LPs), the instant Teller withdrawal
reverts for lack of free want. Use the AtomicQueue instead — the same mechanism syUSD uses:
lucidly-cli queue deploy
lucidly-cli queue request USDC 100 --price 0.999 --deadline 3600 # holder: offer 100 shares for USDC
lucidly-cli queue solve USDC 0xUser... # SOLVER unwinds + fulfills atomically--price is the holder's floor (want per 1.0 share), protecting them from a bad fill.
Amounts for aave/teller deposit are human units, scaled by the asset's decimals.
Single-prompt agent
lucidly-cli agent "deploy a USDC vault on Base called Treasury"
lucidly-cli agent "supply 1000 USDC into Aave" # BLOCKED until you `integration enable AaveV3`The agent calls strategy.hasLeaf(...) before building any transaction; it physically cannot execute
anything outside the vault's pre-approved Merkle leaf set.
Acceptance test
scripts/acceptance.sh exercises agent → CLI → SDK against an anvil fork of Base with on-chain checks:
BASE_RPC_URL=https://mainnet.base.org ./scripts/acceptance.sh