Skip to main content
The circuit wallet namespace manages an encrypted local keystore that holds the local keys the embedded circuit run uses to sign. The keystore lives at ~/.circuit/local/keystore by default, sealed with AES-256-GCM under a key derived (HKDF-SHA256) from a local identity the CLI generates on first use - there is no keystore password, and wallet commands need no login or session permit. Override the location per command with --keystore <path>, or relocate the whole config directory with CIRCUIT_CONFIG_PATH. The keystore is always written with 0600 permissions; circuit wallet refuses to read one with looser permissions. Wallet families are evm and solana.

Select a wallet

Use --wallet <name-or-address> for run, stop, wallet delete, and wallet export. Names match without case; EVM addresses match without case; Solana addresses match exactly. An exact address takes precedence over a matching name. Embedded execution and wallet management select from the local keystore. Hosted execution selects from your Circuit account and never reads that keystore. The account API’s GET /wallets/list returns { wallets, markedValueUsd, holdings, retryAfterMs } (markedValueUsd sums the wallets’ known marked USD values and is null when none is known; retryAfterMs is the server-chosen delay before the next read; it shortens while a balance refresh is pending), with wallets and aggregated holdings from the same read.

List Wallets

Prints one TSV row per wallet (ADDRESS\tVM_FAMILY\tNAME) so the output is pipe-friendly. Use --json for a structured response. If no keystore exists yet, this exits 0 with an empty list.

Add Wallet

Use --generate evm|solana to create a fresh keypair from OS entropy. To import a key, use circuit wallet add --name "Trading wallet" --vm-family evm --private-key-prompt. Paste the key at the hidden prompt and press Enter. For direct input, supply --private-key <key> instead of --private-key-prompt. EVM keys accept 64 hex characters with or without 0x. Solana keys accept base58, hex, or a JSON byte array containing a 32-byte seed or 64-byte secret key. Generation and import flags cannot be combined. --name is required. Names must be nonempty, have no surrounding whitespace, and cannot start with Polymarket - in any letter case. Names must be unique without case within the local keystore or hosted account. Follow the command input and secret handling rules when supplying private keys.

Delete Wallet

Permanently removes the stored wallet key bytes. Requires --yes.

Export Wallet

Decrypts a local key and prints it to stderr: 0x-prefixed hex for EVM, base58 for Solana. Requires --yes; --json is not supported. Use 2> only when you intend to save the key, and protect the output file.