Skip to main content

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
FlagDescription
-t, --tokenAsset to deposit: a curated symbol (usdc) or a token address
-a, --amountAmount in whole tokens, e.g. 1.5
--nativeRead --amount as native (smallest) units instead
-y, --yesSkip 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:

  1. Print the KMS key's public key.

    overcast key pubkey --kms-key <key-id> --kms-provider aws

    Use --kms-provider gcp (the default) for GCP Cloud KMS, or aws for AWS KMS. <key-id> is the key's ARN/ID for AWS, or its full version resource name for GCP.

  2. Authorize that public key for your wallet, using your regular wallet keypair:

    overcast key add <public-key-from-step-1>
  3. 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:GetPublicKey and kms:Sign on 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.