Command Reference
Global options (--keypair, --api-key, --rpc, --backend, --transport)
apply to every command — see configuration. --api-key
(or OVERCAST_API_KEY) is currently required by every command that talks to the
backend. See
getting an API key. Amounts are always in native
units (the asset's smallest unit). Missing flags are prompted for
interactively.
Vault management
Your escrow vault is where the protocol takes premiums, collateral, and settlement from — fund it before trading.
overcast deposit
Deposit funds into your protocol escrow vault.
overcast deposit --token usdc --amount 1.5
| Flag | Description |
|---|---|
-t, --token | Asset to deposit: a curated symbol (usdc) or a token address |
-a, --amount | Amount in whole tokens, e.g. 1.5 |
--native | Read --amount as native (smallest) units instead |
-y, --yes | Skip the confirmation prompt |
Omit either flag and the CLI asks: --token becomes a picker over the assets
overcast assets curates (with each asset's decimals and last known price), and
--amount is prompted in whole tokens of the asset you picked.
Amounts are scaled by the asset's curated decimals — --amount 1.5 on a
6-decimal token is 1500000 native units, which the confirmation prints
alongside the whole-token amount so you can check it. An asset the backend has
no metadata for has no decimals to scale by, so the CLI says so and treats the
amount as native units; --native asks for that explicitly.
Before submitting, it prints your current vault balance, the amount (with an
approximate USD value where a price is known), the balance the deposit will leave
you at, and asks for confirmation — pass -y in scripts. Then it calls
app.chain.deposit, prints the transaction hash and the new balance. Your wallet
must already hold the tokens — the CLI does not mint or airdrop.
On EVM this is two transactions when the core contract is not already approved
for the amount: an ERC-20 approve for exactly the deposit amount, then the
deposit. Both hashes are printed, each labelled with what it did.
overcast withdraw
Withdraw funds from your escrow vault back to your wallet.
overcast withdraw --token usdc --amount 1.5
overcast withdraw --token usdc --max # empty the position
The same flags as deposit, plus --max — and one difference: a withdrawal is
bounded by a balance the CLI can actually read, so it uses it. The asset picker
annotates each row with what your vault holds (funded assets first), the amount
prompt caps at that balance and accepts the literal max, and an --amount
larger than the balance is rejected before anything is signed. Calls
app.chain.withdraw.
overcast balance
Show an escrow vault balance.
overcast balance --token usdc [--user <address>]
--token takes a curated symbol or a token address, and prompts from the curated
assets when omitted. --user inspects someone else's vault (defaults to your
wallet; with --user no keypair is needed).
Signing keys
Operations you send (quotes, offers) are signed by a protocol signing key. That key must be authorized on-chain for your wallet before the backend will accept anything signed with it — authorizing writes an on-chain record linking your wallet address to the public key. Do this once before trading.
overcast key add
Authorize a key to sign operations on your wallet's behalf.
overcast key add [pubkey]
The base58 public key is an optional positional argument; omit it to be prompted
(with validation). Calls app.chain.setAuthorizedKey and prints the transaction
hash.
overcast key remove
Revoke a previously authorized signing key, closing its record (rent refunded). Operations signed with the key are rejected afterwards.
overcast key remove [pubkey]
Same argument as key add; calls app.chain.removeAuthorizedKey.
Using a KMS signing key
Instead of a local keypair, you can sign with a key stored in AWS KMS or GCP Cloud KMS. This keeps the private key inside the cloud provider — it never touches your machine.
The key must be an Ed25519 asymmetric signing key. Create one in your cloud provider's console (or CLI) first, then follow these three steps:
-
Print the KMS key's public key.
overcast key pubkey --kms-key <key-id> --kms-provider awsUse
--kms-provider gcp(the default) for GCP Cloud KMS, orawsfor AWS KMS.<key-id>is the key's ARN/ID for AWS, or its full version resource name for GCP. -
Authorize that public key for your wallet, using your regular wallet keypair:
overcast key add <public-key-from-step-1> -
Use the KMS key to sign, on any command that signs operations (e.g.
overcast quote,overcast rfq create). Add--kms-key,--kms-provider, and--owner(your wallet's public key):overcast quote --kms-key <key-id> --kms-provider aws --owner <your-wallet-pubkey>
--owner and --kms-key can also be set as OVERCAST_OWNER and
OVERCAST_KMS_KEY_VERSION environment variables, so you don't have to repeat
them on every command.
Your machine still needs credentials for the cloud provider (e.g. an AWS profile with
kms:GetPublicKeyandkms:Signon the key, or GCP application default credentials) — the CLI doesn't manage those for you.
Discovery
overcast assets
List the assets the backend has curated metadata for — the ones the CLI can show a symbol, decimals and a price for. Metadata is a display aid, not a permission list: an asset that isn't here still trades, it just renders as a bare address in native units. Start here.
overcast offer list / overcast offer show
Browse collateral/settlement offers, or look one up by ID. offer list shows the
open book by default; --status widens it to offers that have expired, been
matched, or been cancelled, and a matched one names the option it became.
overcast offer list [--kind collateral|settlement] [--party <id>] [--asset <id>] \
[--status open|expired|matched|cancelled|closed|all] [--limit <n>]
overcast offer show --id <offer-id>
overcast option list / overcast option show
Browse curated market options, or show one option's terms and live claim state. An option is identified by its offer ID pair:
overcast option list [--maker <id>] [--taker <id>] [--asset <id>] [--limit <n>]
overcast option show --collateral-offer <id> --settlement-offer <id>
Trading
overcast rfq create
The interactive RFQ flow: pick a strategy (covered call / cash-secured put),
underlying, cash asset, quantity, strike, and expiry; the CLI broadcasts the
RFQ on the MAKER side, streams incoming quotes live, and settles your
chosen quote on-chain — printing the resulting option ID and transaction.
overcast rfq create
overcast accept
Manually match a collateral offer and a settlement offer to mint an option (the non-RFQ path):
overcast accept --collateral-offer <id> --settlement-offer <id>
Option lifecycle
overcast exercise
Exercise an option you hold as taker: burn exercise-claims to swap settlement assets for the locked collateral.
overcast exercise --collateral-offer <id> --settlement-offer <id> [--amount <n>]
The CLI looks up the option, shows your remaining exercise-claims, caps the
prompted amount at that balance, asks for confirmation, and calls
app.chain.exerciseOption. Partial exercise is fine — claims are fungible.
overcast redeem
Redeem as maker: burn collateral-return claims to pull your collateral (plus any settlement paid in by exercises) back out.
overcast redeem --collateral-offer <id> --settlement-offer <id> [--amount <n>]
Mirror of exercise, calling app.chain.redeemOption.
RFQ quoting
overcast quote
Run an auto-quoter against incoming RFQs — either the built-in Black-Scholes pricer or your own strategy behind a webhook:
overcast quote [--spread 0.02] [--vol 0.8] [--rate 0] \
[--webhook-url <url>] [--webhook-timeout 5000]
Covered in depth in RFQ Quoting.