Skills deepbook-cli
Operate the deepbook CLI for DeepBook reads (REST/SSE), global ~/.deepbook config/account management, on-chain spot trading, top-level swap execution, balance-manager ops, and margin trading.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/astinz/deepbook-cli" ~/.claude/skills/openclaw-skills-deepbook-cli && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/astinz/deepbook-cli" ~/.openclaw/skills/openclaw-skills-deepbook-cli && rm -rf "$T"
manifest:
skills/astinz/deepbook-cli/SKILL.mdsource content
DeepBook CLI Skill
Use this skill when the user wants to use
deepbook end to end: market data, wallet/config setup, and on-chain execution (spot, swap, manager, margin).
Installation
Check if
deepbook is installed:
deepbook --version
If not, install it:
npm install -g deepbook-cli
Setup
- Work from the
project directory.deepbook-cli - Ensure
exists (auto-created on first run).~/.deepbook/config.json - Configure global defaults in
(works from any path).~/.deepbook - Optional one-off overrides can still be provided via global flags.
mainnet/testnet are aliases used consistently for both provider-side reads/streams and on-chain RPC.
Global flags
--json--provider <name>--base-url <url>--stream-base-url <url>--network <mainnet|testnet>--rpc-url <url>--private-key <suiprivkey>--address <address>--manager <id>--trade-cap <id>
Available commands
-
Top-level:
deepbook providersdeepbook pools
(alias:deepbook orderbook <pool>
)deepbook book <pool>deepbook trades <pool>deepbook ohlcv <pool>deepbook stream ...deepbook spot ...deepbook swap ...deepbook margin ...deepbook manager ...deepbook config ...deepbook account ...
-
:deepbook configshowset-network <network>set-provider <provider>set-rpc-url <network> <url>set-address <address>set-trade-cap <id>set-read-key [apiKey]set-stream-key <pool> [apiKey]set-provider-base-url <network> <url>set-provider-stream-base-url <network> <url>import-key [privateKey]
-
:deepbook accountdetailslistbalanceimport <alias> [privateKey]use <alias>
-
:deepbook streamtrades <pool>
-
:deepbook spotpoolsbuy <pool>sell <pool>limit <pool>
-
:deepbook swapbase-for-quote <pool>quote-for-base <pool>
-
:deepbook marginpoolsmanagersdeposit <pool>market <pool>limit <pool>position <pool>close <pool>
-
:deepbook managerlscreatedepositwithdrawbalance
Command cheat sheet (required args/options)
-
deepbook providers -
deepbook pools -
deepbook orderbook <pool> -
deepbook trades <pool> -
deepbook ohlcv <pool> -
deepbook stream trades <pool> -
deepbook spot pools -
deepbook spot buy <pool> --quantity <value> [--price <value>] [--manager <id>] -
deepbook spot sell <pool> --quantity <value> [--price <value>] [--manager <id>] -
deepbook spot limit <pool> --side <buy|sell> --price <value> --quantity <value> [--manager <id>] -
deepbook spot limit <pool> --cancel <id> [--manager <id>] -
deepbook config show -
deepbook config set-network <mainnet|testnet> -
deepbook config set-provider <surflux> -
deepbook config set-rpc-url <mainnet|testnet> <url> -
deepbook config set-address <address> -
deepbook config set-trade-cap <objectId> -
(ordeepbook config set-read-key [apiKey]
)--stdin -
(ordeepbook config set-stream-key <pool> [apiKey]
)--stdin -
deepbook config set-provider-base-url <mainnet|testnet> <url> -
deepbook config set-provider-stream-base-url <mainnet|testnet> <url> -
(ordeepbook config import-key [privateKey]
, optional--stdin
)--alias -
deepbook account details -
deepbook account list -
deepbook account balance [--coin <SUI|USDC|DEEP|coinType>] -
(ordeepbook account import <alias> [privateKey]
)--stdin -
deepbook account use <alias> -
deepbook swap base-for-quote <pool> --amount <value> -
deepbook swap quote-for-base <pool> --amount <value> -
deepbook margin pools -
deepbook margin managers -
deepbook margin deposit <pool> --coin <BASE|QUOTE|DEEP|coinKey> --amount <value> [--margin-manager <id>] -
deepbook margin market <pool> --side <buy|sell> --quantity <value> [--margin-manager <id>] -
deepbook margin limit <pool> --side <buy|sell> --price <value> --quantity <value> [--margin-manager <id>] -
deepbook margin position <pool> [--margin-manager <id>] -
+ either:deepbook margin close <pool> [--margin-manager <id>]--full- OR
--side <buy|sell> --quantity <value>
-
deepbook manager ls -
deepbook manager create -
deepbook manager deposit --coin <key> --amount <value> [--manager <id>] -
deepbook manager withdraw --coin <key> --amount <value> [--manager <id>] -
deepbook manager balance --coin <key> [--manager <id>]
Key margin close flags
deepbook margin close <pool> --full --withdrawdeepbook margin close <pool> --full --non-reduce-onlydeepbook margin close <pool> --side <buy|sell> --quantity <q> --reduce-only --no-repay
Swap vs spot market buy
- Swap (
) is a direct pool swap with exact-input semantics.deepbook swap quote-for-base - Spot market buy (
) is an orderbook market order and uses a balance manager.deepbook spot buy <pool> --quantity ... - CLI output now includes
andexecution.kind
so the mode is explicit.execution.type/direction
Safety defaults
- Prefer
first for all state-changing commands.--dry-run - Validate pool key and manager object ID before placing/canceling orders.
- SUI-involved deposit/collateral paths split from gas coin inside the transaction automatically.
- Never print or log private keys.
- Margin manager type safety:
- Margin managers are generic typed objects:
.MarginManager<Base, Quote> - The margin manager type must match the exact pool pair being traded.
- Example:
works withMarginManager<DEEP,USDC>
, notDEEP_USDC
.DEEP_SUI
- Margin managers are generic typed objects:
- Margin manager resolution behavior:
- If
is omitted, CLI auto-selects a compatible manager for that pool, or creates one in-transaction if none exists.--margin-manager - If
is provided, CLI treats it as explicit and strict: it must match signer + pool; no fallback or auto-create is performed.--margin-manager
- If
- Internal margin fee buffer behavior:
- Margin market/limit orders auto-deposit a fee buffer before placing the order.
- With
, buffer is deposited in trade asset collateral (base for sell, quote for buy).--no-pay-with-deep - Without
, buffer is deposited as DEEP into the margin manager.--no-pay-with-deep
- Full-close quantity normalization:
now auto-normalizes inferred quantity to pool lot-size/min-size.deepbook margin close <pool> --full- If reduce-only full close cannot satisfy lot-size exactly, CLI auto-switches to non-reduce-only and rounds up, then repays debt in the same transaction.
- If user explicitly passes
, CLI keeps reduce-only semantics and errors when full close cannot be represented as a valid lot-size quantity.--reduce-only
End-to-end spot trading flow (fund -> buy -> withdraw)
Use this when executing a real spot trade through a balance manager.
- Discover balance managers:
deepbook manager ls
- If none exist, create one:
deepbook manager create
- Deposit quote coin to manager (for
buy, fundDEEP_SUI
):SUIdeepbook manager deposit --coin SUI --amount 1 --manager <id>
- Optional balance check:
deepbook manager balance --coin SUI --manager <id>
- Simulate buy first:
deepbook spot buy DEEP_SUI --quantity 38 --manager <id> --no-pay-with-deep --dry-run
- Execute live buy:
deepbook spot buy DEEP_SUI --quantity 38 --manager <id> --no-pay-with-deep
- Withdraw purchased asset to signer address (or explicit recipient):
deepbook manager withdraw --coin DEEP --amount 38 --manager <id>- optional recipient:
--recipient <address>
- Verify manager balance:
deepbook manager balance --coin DEEP --manager <id>
Spot trade troubleshooting
means manager available balance is too low.MoveAbort ... balance_manager::withdraw_with_proof code=3- This includes fees/reserved amounts, not just raw deposited balance.
- For spot buys, ensure quote coin is funded in manager (for
, quote isDEEP_SUI
).SUI - If fees are attempted in DEEP and manager lacks DEEP, either deposit DEEP or pass
.--no-pay-with-deep - When manager is omitted, CLI resolves dynamically:
- one manager found -> uses it
- none found -> error
- multiple found -> require
--manager <id>
Typical workflow
- Inspect pools/orderbook (
,deepbook spot pools
,deepbook margin pools
).deepbook orderbook ... - Confirm manager ID (
).deepbook manager ls - Simulate order (
).deepbook spot buy ... --dry-run - Execute live order (same command without
).--dry-run - Monitor with
anddeepbook orderbook --watch
.deepbook stream trades ...