Skip to main content

Bankr CLI

The Bankr CLI (@bankr/cli) is a command-line interface built on top of the Agent API. It handles authentication, prompt submission, job polling, and result display out of the box.

Installation​

Install the CLI
npm install -g @bankr/cli

After installing, the bankr command is available everywhere:

bankr --version

Alternative: bun​

bun install -g @bankr/cli

Run without installing​

npx @bankr/cli what is the price of ETH?

Updating​

Update the CLI to the latest version without remembering your package manager:

bankr update

To check if an update is available without installing:

bankr update --check

The CLI auto-detects whether you installed with npm, bun, pnpm, or yarn and runs the appropriate global install command.

Behaviour that arrived in a specific release is marked on this page, for example (0.3.40+). If a command or flag described here is missing from yours, run bankr update.

Setup​

Login​

Credentials are stored in ~/.bankr/config.json. You can also set keys via environment variables (BANKR_API_KEY, BANKR_LLM_KEY).

Email and SIWE login create a new API key each time. Key creation (including the web form) is limited to 20 attempts per hour per IP address; past that, login fails with Too many API key creations. Please try again later.

Email login​

Sign in with your email address. This creates a wallet, accepts terms, and generates an API key — all without visiting the Bankr Terminal.

Headless login (--code or --ni) accepts the Terms of Service as part of logging in (0.3.39+; earlier versions need --accept-terms), so scripts and agents don't need to pass a flag. By completing a headless login you accept the Terms on the account's behalf.

# Interactive: prompts for email, OTP code, key options
bankr login email

# Two-step headless login (for scripts and agents):
# Step 1 — send OTP, then exit
bankr login email user@example.com

# Step 2 — verify OTP and complete setup
bankr login email user@example.com --code 123456 --key-name "My Key" --read-write --llm
OptionDescription
--code <otp>OTP code received via email (step 2 of headless login)
--accept-termsAccept Terms of Service without prompting (implied by headless login from 0.3.39)
--key-name <name>Display name for the API key (e.g. "My Agent"). Prompted if omitted; headless runs default to CLI-<date>-<time> (0.3.39+; earlier CLI-<date>)
--no-wallet-apiDisable Wallet API (enabled by default)
--no-agent-apiDisable Agent API (enabled by default)
--read-onlyRestrict the key to read operations (new keys are read-write by default)
--read-writeAllow transactions. New keys are already read-write, so this is the default
--no-token-launchDisable Token Launch API (enabled by default)
--llmEnable LLM gateway access (multi-model API at llm.bankr.bot)
--allowed-ips <ips>Comma-separated IPs or CIDR ranges the key may be used from, e.g. 1.2.3.4,10.0.0.0/24 (IP allowlist)
--allowed-recipients <addresses>Comma-separated EVM or Solana addresses; the agent only sends funds to these (wallet allowlist)

When --code is omitted and an email address is provided, the CLI sends the verification code and exits — no credentials are saved. Pass --code with the received code to complete login. With --code nothing is prompted: options you leave out take their defaults. For prompts at every step, run bankr login email with no address.

The code is single-use. From 0.3.39, step 2 retries dropped connections on its own; if it still fails, rerun step 1 for a fresh code rather than reusing the old one.

Accounts with passkey MFA enabled get one extra step during step 2. A passkey can't be verified in a terminal, so the CLI prints an approval link on bankr.bot (and opens it when running interactively), waits, and continues once you've verified with your passkey there:

Two-factor authentication is enabled on this account.
Approve this login with your passkey:
https://bankr.bot/mfa/confirm/<token>
Waiting for approval in your browser...
  • The link is valid for five minutes. In a headless run (--ni, CI, a remote agent) the CLI never opens a browser — copy the link to whoever holds the passkey.
  • The approval page shows what is being approved (an API key for this account), the requesting device and its location. Approve only a request you started.
  • The approval covers the rest of that login for five minutes; linger on the key-name prompts longer and you'll get a second link.
  • If the link expires or the approval fails, the CLI exits with a pointer to bankr.bot/api-keys — generate a key there and use bankr login --api-key instead.

API key login​

If you already have a bk_... API key (from the Bankr Terminal or another source):

# Log in directly with an API key
bankr login --api-key bk_YOUR_KEY

# Log in with a separate LLM gateway key
bankr login --api-key bk_YOUR_KEY --llm-key YOUR_LLM_KEY

# Print the Bankr Terminal URL (for generating a key)
bankr login --url

The key is checked against the API before it's saved. A key the API rejects — revoked, used from outside its IP allowlist, or not linked to a wallet — fails the login; if the API can't be reached, the key is saved with a warning.

SIWE login (headless agents)​

Sign in with an Ethereum wallet using Sign-In with Ethereum. Designed for headless agents and automated environments where no browser or email is available.

# Basic SIWE login (read-only by default)
bankr login siwe --private-key 0xYOUR_PRIVATE_KEY

# Custom key name, read-write
bankr login siwe --private-key 0x... --key-name "My Agent" --read-write
OptionDescriptionRequired
--private-key <key>Ethereum private key (0x...)Yes
--key-name <name>API key display name (default: SIWE-<date>)No
--read-writeEnable write operations on the API keyNo
--no-agent-apiDisable Agent API (enabled by default)No

--no-wallet-api, --no-token-launch, --allowed-ips and --allowed-recipients work as they do for email login.

The CLI fetches a nonce from the Bankr API, constructs and signs an EIP-4361 message with the provided private key, then verifies with the API to create a wallet and generate an API key. Completing a SIWE login accepts the Terms of Service for that wallet.

Interactive menu​

bankr login

Presents a menu to choose your login method: sign in with email, open the Bankr Terminal to generate an API key, or paste an existing key.

Verify setup​

bankr whoami

Displays your API key (masked) and where it came from (environment or config file), the API URL and a connection check, then your wallet addresses, linked social accounts, Bankr Club status, referral code, and score.

Non-interactive mode​

For headless environments — CI/CD pipelines, Docker containers, cron jobs, or any context where prompts would hang — use the --not-interactive (alias --ni) global flag.

# Either form works, before or after the subcommand
bankr --ni launch --name MyToken
bankr launch --ni --name MyToken

# Or set the env var
export BANKR_NOT_INTERACTIVE=1
bankr launch --name MyToken

The flag does three things:

  1. Skips confirmation prompts — equivalent to passing --yes to commands that support it.
  2. Suppresses optional prompts — fields the CLI would normally ask about (token symbol, image URL, etc.) default to empty.
  3. Fails fast on required input — exits with a clear error instead of hanging on a prompt.

Headless flag combos​

Some commands need extra flags to be fully headless. Without them, --ni exits with an error:

CommandRequired flag(s)
bankr login--api-key <key>, login siwe --private-key <key>, or login email <addr> [--code <otp>]
bankr launch--name <name>
bankr fees claim-wallet--all (plus --private-key or BANKR_PRIVATE_KEY)
bankr agenta prompt argument, or piped stdin to bankr agent prompt

Examples​

# Cron — claim creator fees nightly
BANKR_PRIVATE_KEY=0x... bankr --ni fees claim-wallet --all

# CI — programmatic token launch (simulate without broadcasting)
bankr --ni launch --name MyToken --symbol MTK --simulate

# Docker entrypoint — auto top-up LLM credits
bankr --ni llm credits add 50

# Pipeline — agent in non-interactive mode (reads from stdin)
echo "summarize today's trades" | bankr --ni agent prompt

# Two-step email login in CI
bankr --ni login email user@example.com # step 1: send OTP
bankr --ni login email user@example.com --code 123456 # step 2: complete (accepts the Terms of Service)

With --ni, step 2 on an MFA-enabled account still prints the passkey approval link and waits up to five minutes for it to be approved in a browser — it just won't try to open one. Pipelines with nobody to click the link should use bankr login --api-key or bankr login siwe instead.

Read-only commands (whoami, wallet portfolio, tokens search, agent status, etc.) don't prompt at all, so --ni is harmless but redundant on them.

Commands​

bankr agent [text...]​

Send a prompt to the Bankr AI agent. Submits the prompt, polls for completion, and displays the result. While the agent works, its progress lines print above the spinner on stderr (0.3.40+), so they stay out of piped output.

bankr agent what is the price of ETH?

Thread and model options​

Continue a multi-turn conversation using threads:

# Continue the most recent thread
bankr agent --continue "and what about SOL?"
bankr agent -c "compare them"

# Continue a specific thread by ID
bankr agent --thread thr_ABC123 "tell me more"

# Max Mode: pick the model for this prompt
bankr agent --model claude-opus-5 "audit this contract"
OptionDescription
--thread <id>Continue a specific conversation thread
-c, --continueContinue the most recent thread
-m, --model <model>Run this prompt in Max Mode on a gateway model, billed to your LLM credits. Only the two newest releases of each frontier, flagship and balanced line are accepted; any other id fails with the list of valid ones

The response includes a threadId that is automatically saved. Use --continue to pick up where you left off, or --thread to resume any previous thread.

Interactive and piped input​

bankr agent prompt with no text opens an interactive input, which avoids shell expansion of $ signs (plain bankr agent with no text prints help):

bankr agent prompt
# Enter your prompt: buy $50 of ETH on base

bankr agent prompt also reads a piped prompt:

echo 'buy $50 of ETH on base' | bankr agent prompt

bankr wallet​

Wallet operations. Running bankr wallet with no subcommand shows your wallet info (same as bankr whoami).

bankr wallet portfolio​

Show wallet portfolio across all supported chains. See Portfolio Endpoint.

bankr wallet portfolio                    # Token balances
bankr wallet portfolio --pnl # With profit/loss
bankr wallet portfolio --nfts # With NFT holdings
bankr wallet portfolio --all # Everything
bankr wallet portfolio --chain base # Single chain
bankr wallet portfolio --json # Raw JSON output
bankr wallet portfolio --low-value # Include dust tokens

bankr wallet transfer​

Transfer tokens to an EVM address or ENS name. Supports token symbol resolution.

bankr wallet transfer --to 0x... --amount 100 --token USDC
bankr wallet transfer --to vitalik.eth --amount 0.01 --native
bankr wallet transfer --to name.base.eth --amount 10 --token USDC
bankr wallet transfer --to 0x... --amount 10 --token USDC --chain polygon
OptionDescriptionRequired
--to <recipient>Recipient as a 0x address or ENS name (.eth, .base.eth, .cb.id)Yes
--amount <amount>Human-readable amountYes
--token <symbol or address>Token symbol (USDC) or contract addressConditional
--nativeSend native token (ETH, POL)Conditional
--chain <chain>EVM chain (default: base)No

bankr wallet swap​

Swap tokens on one EVM chain, without the agent. Prints the quote, then executes with the quote's minimum output as slippage protection. Each side takes a symbol or contract address; the chain's native ticker (ETH, POL, BNB) means the native token. See Swap.

bankr wallet swap --from USDC --to ETH --amount 10
bankr wallet swap --from ETH --to 0x... --amount 0.05 --chain arbitrum --quote-only
OptionDescriptionRequired
--from <symbol or address>Token to sellYes
--to <symbol or address>Token to buyYes
--amount <amount>Amount of --from to sell (human-readable)Yes
--chain <chain>base, polygon, mainnet, unichain, worldchain, arbitrum, bnb (default: base)No
--quote-onlyPrint the quote without swappingNo

bankr wallet sign​

Sign messages, typed data, or transactions without broadcasting.

bankr wallet sign --type personal_sign --message "Hello, Bankr!"
bankr wallet sign --type eth_signTypedData_v4 --typed-data '{"domain":{...},...}'
bankr wallet sign --type eth_signTransaction --transaction '{"to":"0x...","chainId":8453}'

bankr wallet submit​

Submit transactions to the blockchain.

bankr wallet submit tx --to 0x... --chain-id 8453 --value 1000000000000000000
bankr wallet submit json '{"to":"0x...","chainId":8453,"value":"1000000000000000000"}'
note

Transfer, swap, sign, and submit are write operations. Read-only API keys will receive a 403 error. See API Keys.

bankr agent status <jobId>​

Check the status of a previously submitted job.

# One-shot check
bankr agent status job_ABC123DEF456

# Follow the job until it finishes, printing agent progress as it arrives
bankr agent status job_ABC123DEF456 --wait
OptionDescription
-w, --waitFollow the job until it finishes, streaming progress to stderr (0.3.40+)

Without --wait the progress recorded so far is printed to stdout as part of the summary; with --wait the same lines stream to stderr as they arrive, so stdout carries only the summary and the agent's final response. If the job is still running when the wait runs out, the command prints the last status it saw and exits 0 — re-run it to keep following.

bankr agent cancel <jobId>​

Cancel a pending or processing job.

bankr agent skills​

List what the Bankr agent can do, with example prompts for each capability. Skills you install into your agent are managed separately — see Skills.

bankr tokens​

Token search and info (public, no auth required).

bankr tokens search USDC
bankr tokens search ETH --chain 1
bankr tokens info 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

bankr launch​

Launch a token on Base, Robinhood Chain or Arbitrum through an interactive wizard. The wizard guides you through providing token details, including name, image, chain, the quote token the pool pairs with, social links, and fee recipients.

# Interactive wizard (prompts for all details)
bankr launch

# Headless with all options specified
bankr launch --name "MyToken" --symbol "MTK" --image "https://example.com/logo.png" -y

# Launch on Robinhood Chain, quoted in tokenized AAPL instead of WETH
bankr launch --name "MyToken" --chain robinhood --quote AAPL -y

# With fee recipient
bankr launch --name "MyToken" --fee "@myhandle" --fee-type x -y

# Quote-only fees (all creator fees collected in the quote token)
bankr launch --name "MyToken" --quote-only-fees -y

Options​

OptionDescription
--name <name>Token name (prompted if omitted)
--symbol <symbol>Token symbol, 1-20 characters (default: auto-generated from name)
--image <url>Token image URL (optional)
--chain <chain>Chain to launch on: base, robinhood, or arbitrum (default: base; prompted if omitted)
--quote <token>Quote token the pool pairs with — a symbol or address from bankr launch quotes, e.g. a tokenized stock on Robinhood Chain or Base (default: WETH; prompted if omitted)
--no-vestingTurn off the default 15% creator vesting and sell 100% of supply into the pool
--tweet <url>Associated tweet URL for social proof (optional)
--website <url>Project website URL (optional)
--fee <recipient>Fee recipient: X/Farcaster handle, ENS name, or wallet address (optional)
--fee-type <type>Fee recipient type: x, farcaster, ens, or wallet (default: x)
--quote-only-feesCollect all creator fees in the quote token (e.g. WETH) instead of a mix of the launched token and quote token — creator take is identical either way. Fixed at launch
-y, --yesSkip confirmation prompt
--simulateSimulate the deploy without broadcasting a transaction

Fee Recipients​

Direct the creator share of trading fees — 95% of the 0.7% pool swap fee (0.665% of trading volume; the hook adds the Bankr protocol fee + BNKR buyback and LP fee on top — see Fee Structure) — to collaborators, partners, or your treasury:

# X (Twitter) handle
bankr launch --name "MyToken" --fee "@partner" --fee-type x

# Farcaster handle
bankr launch --name "MyToken" --fee "@partner" --fee-type farcaster

# ENS name
bankr launch --name "MyToken" --fee "partner.eth" --fee-type ens

# Wallet address
bankr launch --name "MyToken" --fee "0x..." --fee-type wallet

Quote token (stock-paired launches)​

By default the new pool pairs your token with WETH. On Robinhood Chain and Base you can pair it with a tokenized stock instead — an AAPL, TSLA or NVDA Stock Token, say — and with one of the fixed additional quote tokens (BNKR, ba3Pump, cbHYPE, cbZEC or TAO on Base; BNKR or musebook on Robinhood Chain — BNKR is a separate contract on each chain and --quote BNKR picks the one on --chain). The wizard asks after you pick the chain; headless runs pass --quote:

# Robinhood Chain memecoin quoted in tokenized TSLA
bankr launch --name "MyToken" --chain robinhood --quote TSLA -y

# By address works too
bankr launch --name "MyToken" --chain robinhood --quote 0xaF3D76f1834A1d425780943C99Ea8A608f8a93f9 -y

# Robinhood Chain launch quoted in musebook
bankr launch --name "MyToken" --chain robinhood --quote musebook -y

# Robinhood Chain launch quoted in BNKR (the Robinhood Chain BNKR contract)
bankr launch --name "MyToken" --chain robinhood --quote BNKR -y

# Base launch quoted in BNKR
bankr launch --name "MyToken" --chain base --quote BNKR -y

--quote must name an entry from bankr launch quotes --chain <chain>; anything else is rejected before the deploy is sent. A stock flagged [thin liquidity] still launches — the pool is just hard to trade until more liquidity arrives — and the summary warns you first. Arbitrum launches are WETH-paired only.

The wizard displays a summary and asks for confirmation before submitting the launch. Use --yes to skip confirmation in scripts and automated deployments.

note

This is a write operation. Read-only API keys will receive a 403 error. See API Keys. Token launches are subject to deployment limits.

bankr launch quotes​

List the quote tokens a launch on a chain can pair with — WETH, every tokenized stock Bankr can price there, and (on Base and Robinhood Chain) the fixed additional quote tokens. Public, no auth required.

bankr launch quotes --chain robinhood
bankr launch quotes --chain base --json

Each row shows the symbol, name and contract address, plus [thin liquidity] for a stock whose own pool is thin right now and [not ready yet] for an additional quote token still waiting on its reviewed liquidity ([readiness unknown] when that hasn't been measured). Pass either the symbol or the address to bankr launch --quote. Backed by GET /token-launches/quote-tokens.

OptionDescription
--chain <chain>Chain to list for: base, robinhood, or arbitrum (default: base)
--jsonOutput raw JSON

bankr fees [address]​

View a full fee earnings dashboard for your deployed tokens. Displays claimable and claimed WETH, a daily earnings chart, per-token breakdown, and projected monthly/yearly earnings based on your daily average.

# Dashboard for your authenticated wallet
bankr fees

# Dashboard for a specific wallet address
bankr fees 0x1234...

# Look up fees by token contract address
bankr fees --token 0xTokenAddress

# Custom lookback period (1-90 days, default 30)
bankr fees --days 7

# Raw JSON output (for scripting)
bankr fees --json
OptionDescription
--days <n>Lookback period for daily chart (1–90, default: 30)
--token <address>Look up fees by token contract address instead of wallet
--jsonOutput raw JSON data

The dashboard includes:

  • Claimable / Claimed WETH summary cards
  • Daily earnings chart with sparkline visualization
  • Statistics: total earned, daily average, best day, active days, current streak
  • Projections: estimated monthly and yearly earnings based on your daily average
  • Per-token breakdown: claimable and claimed amounts for each token

bankr fees claim <tokenAddress>​

Claim accumulated fees for a specific token:

# Claim with confirmation prompt
bankr fees claim 0xTokenAddress

# Skip confirmation (for scripts)
bankr fees claim 0xTokenAddress --yes
OptionDescription
-y, --yesSkip confirmation prompt
note

This is a write operation. Read-only API keys will receive a 403 error. See API Keys.

bankr fees claim-wallet [address]​

Claim earned Doppler fees using your own private key — no Bankr account needed. Scans all launches where your wallet is a fee beneficiary, shows claimable amounts, and submits claim transactions directly from the CLI. It signs on Base only, so launches on other chains are skipped with a warning; claim those from the token page at bankr.bot.

# Derive address from BANKR_PRIVATE_KEY in .env
bankr fees claim-wallet

# Specify address explicitly (key prompted or read from .env)
bankr fees claim-wallet 0xYourAddress

# Claim all tokens without interactive selection
bankr fees claim-wallet --all

# Skip all confirmation prompts (for scripts)
bankr fees claim-wallet --all --yes

# Use a custom RPC endpoint
bankr fees claim-wallet --rpc https://your-rpc.com
OptionDescription
--private-key <key>Private key (0x...). Also reads BANKR_PRIVATE_KEY from .env or environment. If neither set, prompted interactively.
--rpc <url>Custom Base RPC URL (default: https://mainnet.base.org)
--allClaim all tokens without selection prompt
-y, --yesSkip confirmation prompt

Environment variables:

Create a .env file in your working directory:

BANKR_PRIVATE_KEY=0xYourPrivateKey
BANKR_API_KEY=your-api-key

The CLI automatically reads .env from the current directory. When BANKR_PRIVATE_KEY is set and no address argument is provided, the address is derived from the key automatically.

bankr llm models​

List all models available through the Bankr LLM Gateway:

bankr llm models
bankr llm models --zdr # Only models reachable with zero data retention (:zdr)
bankr llm models --private # Only models that run in a private TEE environment (:private)

If you're authenticated, the CLI fetches the live model list from the gateway. Otherwise it shows the built-in catalog, and the --zdr / --private filters need the live list. See Privacy tiers.

bankr llm credits​

Check your LLM gateway credit balance:

bankr llm credits

Shows your current USD credit balance for LLM gateway usage. An exhausted balance shows as $0.00 with a warning; a rejected key is an error.

bankr llm credits add <amount>​

Top up your LLM gateway credits from your wallet with $1 to $1,000 per top-up. Pay on any supported EVM chain — Base, Polygon, Ethereum, Arbitrum, or BNB Chain — and the CLI picks the chain holding the highest USD balance of your chosen token.

bankr llm credits add 25                   # Defaults to Base USDC
bankr llm credits add 25 --token USDC # USDC on the chain with the largest balance
bankr llm credits add 25 --token USDT # USDT on the chain with the largest balance
bankr llm credits add 50 --token ETH # Native ETH (Base / Ethereum / Arbitrum)
bankr llm credits add 25 --token 0x... # By contract address
bankr llm credits add 25 -y # Skip confirmation prompt
OptionDescription
--token <symbol-or-address>Token to pay with (default: USDC on Base). Resolved across all supported chains; highest USD balance wins.
-y, --yesSkip confirmation prompt

USDC and USDT are sent directly when they're an accepted stablecoin on the resolved chain. Any other token is auto-swapped to the chain's preferred stablecoin (USDC on most chains, USDT on BNB) with ≤5% slippage protection.

note

This is a write operation. Read-only API keys will receive a 403 error. See API Keys.

bankr llm credits auto​

View or configure automatic LLM credit top-ups:

bankr llm credits auto                     # View current config
bankr llm credits auto --amount 25 --threshold 5 --tokens USDC # Enable auto top-up
bankr llm credits auto --disable # Disable auto top-up
OptionDescription
--enableEnable auto top-up
--disableDisable auto top-up
--amount <usd>Top-up amount in USD ($1–$1,000)
--threshold <usd>Trigger top-up when balance falls below this ($1–$500)
--tokens <list>Comma-separated token symbols or addresses to pay with (max 3, e.g. USDC,ETH)

When --amount, --threshold, or --tokens are provided without --enable/--disable, auto top-up is implicitly enabled. Token symbols/addresses are resolved across every supported chain (Base, Polygon, Ethereum, Arbitrum, BNB Chain) — the chain holding the highest USD balance for each token is saved alongside it. Auto top-up tries the saved tokens in priority order and routes each on its own chain.

bankr llm setup <target>​

Generate configuration to use the Bankr LLM Gateway with your coding agent. Supported targets:

bankr llm setup openclaw             # OpenClaw JSON config
bankr llm setup openclaw --install # Write to ~/.openclaw/openclaw.json
bankr llm setup opencode # OpenCode JSON config
bankr llm setup opencode --install # Write to ~/.config/opencode/opencode.json
bankr llm setup cursor # Cursor IDE setup instructions
bankr llm setup claude # Claude Code env var config

The --install flag (available for OpenClaw and OpenCode) merges the Bankr provider into your existing config file without overwriting other providers. bankr llm setup openclaw --images also routes OpenClaw's image generation through the gateway by taking over its openai provider — see OpenClaw.

bankr llm claude [args...]​

Launch Claude Code with all API requests routed through the Bankr LLM Gateway. bankr claude is a top-level alias for the same command:

bankr claude                        # shorthand
bankr llm claude # equivalent
bankr claude --model claude-opus-4.8 # dotted gateway id, rewritten to claude-opus-4-8

# The [1m] suffix is optional through the gateway; if you use it, quote it (zsh treats [1m] as a glob)
bankr claude --model "claude-opus-5[1m]"

This spawns claude with ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN set automatically from your Bankr config. If a separate llmKey is configured, it uses that; otherwise it falls back to your API key. All arguments are passed through to Claude Code, except that a dotted Claude model id is rewritten to the dashed form Claude Code expects. See Claude Code for model ids and the 1M-token tier.

note

Because claude is now a command, it takes precedence over the default prompt fallthrough — bankr claude ... launches Claude Code rather than asking the agent. To send the agent a prompt starting with that word, use bankr agent "..." explicitly.

bankr llm opencode [args...]​

Launch OpenCode with all API requests routed through the Bankr LLM Gateway:

bankr llm opencode
bankr llm opencode -m bankr/claude-opus-4.8 # OpenCode model ids take the bankr/ prefix

This spawns opencode with the Bankr provider automatically configured. If the OpenCode config doesn't include the Bankr provider, it runs bankr llm setup opencode --install first. All arguments are passed through to OpenCode.

bankr project​

Manage your project page (create, update, delete, add-update). Renamed from bankr agent profile in 0.3.39; the old spelling still works as a deprecated alias. On earlier versions it is the only spelling: there bankr project … is not a command, so the prompt shortcut sends it to the agent as text.

bankr project                           # View your project
bankr project create # Interactive creation wizard
bankr project update --description "…" # Update fields
bankr project add-update # Post a project update
bankr project delete # Delete (with confirmation)

A wallet can own several projects; pass --slug <slug> to update, delete and add-update to pick one.

bankr club​

Manage your Bankr Club membership from the CLI.

bankr club                              # Show membership status (default)
bankr club status # Same as above
bankr club signup # Subscribe (monthly, USDC default)
bankr club signup --yearly # Subscribe yearly
bankr club signup --token BNKR # Pay with BNKR (direct transfer)
bankr club signup --token ETH # Pay with ETH (swapped to USDC at checkout)
bankr club signup --token 0x4200... # Pay with any Base ERC-20 by address
bankr club signup --yes # Skip confirmation prompt
bankr club cancel # Cancel subscription
OptionDescription
--yearlySubscribe to the yearly plan instead of monthly
--token <symbol-or-address>Payment token: USDC (default), BNKR, ETH, or a 0x-prefixed Base ERC-20 address
-y, --yesSkip the confirm prompt

Pricing is $20/month or $198/year (saves ~$42). The actual on-chain amount depends on the chosen token's price at quote time. Non-direct tokens (anything other than USDC or BNKR) are swapped to USDC at checkout with ≤5% slippage protection.

bankr files​

Manage your wallet's file storage — the same files the agent and the web terminal see. bankr files with no subcommand lists your files.

bankr files ls --folder /research               # List (optionally one folder)
bankr files upload ./report.csv --folder /data # Upload a local file (up to 10 MB)
bankr files download <fileId> # Get a download URL
bankr files cat <fileId> -o ./copy.md # Print contents, or save with -o
bankr files edit <fileId> -f "old" -r "new" # Find/replace (--all for every match)
bankr files edit <fileId> --from ./new.md # Overwrite (or --content "...")
bankr files write <fileId> --from ./new.md # Overwrite from a file or stdin
bankr files search "hyperliquid" --mime-type text/ --limit 20
bankr files mkdir reports --parent / # Create a folder
bankr files mv <fileId> /archive # Move to another folder
bankr files rename <fileId> new-name.md # Rename a file or folder
bankr files info <fileId> # Show metadata
bankr files rm <fileId> # Delete
bankr files storage # Usage and quota

bankr x402​

x402 Cloud commands for deploying, managing, and calling paid API endpoints. See the full x402 CLI Reference for all commands.

Key commands:

bankr x402 init                    # Scaffold project
bankr x402 add <name> # Add a service
bankr x402 deploy [name] # Deploy services
bankr x402 list # List deployed endpoints
bankr x402 search <query> # Search the marketplace
bankr x402 schema <url> # View endpoint schema
bankr x402 call <url> # Call with automatic payment
bankr x402 call <url> -i # Interactive mode — prompt for inputs
bankr x402 revenue [name] # View earnings
bankr x402 env set KEY=VALUE # Set encrypted env var

bankr webhooks​

Deploy and manage webhooks that trigger the Bankr agent on external events (init, add, deploy, list, pause, resume, delete, logs, env). See the full Webhooks CLI Reference.

bankr config get [key]​

Read configuration values. Without a key, shows all config:

bankr config get          # show all
bankr config get apiKey # show API key (masked)
bankr config get apiUrl # show API URL
bankr config get llmKey # show LLM gateway key (masked)
bankr config get llmUrl # show LLM gateway URL

bankr config set <key> <value>​

Set a configuration value. Supported keys: apiKey, apiUrl, llmKey, llmUrl.

bankr config set llmKey YOUR_LLM_KEY

bankr logout​

Clear stored credentials:

bankr logout

bankr sounds​

Manage CESP (CLI Event Sound Packs) sound effects. Without a subcommand, displays the current sound configuration status.

bankr sounds                        # Show current config
bankr sounds enable # Enable sounds
bankr sounds disable # Disable sounds
bankr sounds install <pack> # Install a pack from the CESP registry
bankr sounds search [query] # Search available packs
bankr sounds list # List installed packs
bankr sounds use <pack> # Set the active sound pack
bankr sounds volume [level] # Get or set volume (0.0–1.0)
bankr sounds mute # Mute all sounds
bankr sounds unmute # Unmute sounds
bankr sounds test [category] # Play a test sound

Sound packs are installed to ~/.bankr/sounds/ and provide audio feedback for CLI events like task completion or errors.

bankr update​

Update the CLI; --check only reports whether a newer version exists. See Updating.

Default command​

Any unrecognized arguments are treated as a prompt:

bankr what is the price of BNKR?
# equivalent to: bankr agent what is the price of BNKR?

Named commands take precedence over this fallthrough — bankr claude ... runs bankr llm claude rather than prompting the agent, and the same applies to fees, launch, and every other command listed above. Use bankr agent "..." when your prompt begins with a command name.

Deprecated spellings are commands too: they still work, print a deprecation warning, and point to the current form — prompt (now agent), status and cancel (agent status, agent cancel), balances (wallet portfolio), sign and submit (wallet sign, wallet submit), and profile / agent profile (project).

The shortcut takes the same --thread, --continue and --model options as bankr agent.

Configuration​

The CLI uses this config precedence (highest to lowest):

  1. Environment variable — BANKR_API_KEY, BANKR_LLM_KEY, BANKR_API_URL, BANKR_LLM_URL, BANKR_WEB_URL (web app origin for MFA approval links; derived from the API URL by default)
  2. Config file (~/.bankr/config.json; point elsewhere with the global --config <path> flag or BANKR_CONFIG)
  3. Defaults (API URL: https://api.bankr.bot, LLM URL: https://llm.bankr.bot)

Separate LLM key​

If your LLM gateway key differs from your Bankr API key, you can configure them separately. The LLM key is used for all LLM gateway calls (bankr llm models, bankr llm credits, bankr llm setup, bankr llm claude). When not set, the API key is used for both.

# Set during login
bankr login --api-key bk_YOUR_KEY --llm-key YOUR_LLM_KEY

# Or set via config
bankr config set llmKey YOUR_LLM_KEY

# Or via environment variable
export BANKR_LLM_KEY=your_llm_key_here

Access Controls​

The CLI uses the same API key as the REST API, so all server-side access controls apply:

  • Read-only key — bankr agent works, but the agent can only query data (prices, balances, analytics). It cannot execute swaps, transfers, or other write operations.
  • IP allowlist — requests from IPs not on the allowlist are rejected with a 403 error.
  • Rate limits — the same daily message limits apply (100/day standard, 1,000/day Bankr Club).

Credential storage — The API key is stored in ~/.bankr/config.json. Never commit this file to version control. Run bankr logout on shared machines and consider chmod 600 ~/.bankr/config.json to restrict file permissions.

See API Keys for full details.

Programmatic usage​

The CLI also exports its API client for use in Node.js/TypeScript projects:

import { submitPrompt, pollJob, getUserInfo, getBalances } from "@bankr/cli";

// Submit and poll
const { jobId, threadId } = await submitPrompt("what is the price of ETH?");
const result = await pollJob(jobId, {
onStatus: (s) => console.log(s.status),
});
console.log(result.response);

// Continue the conversation using the threadId
const { jobId: jobId2 } = await submitPrompt("and what about BTC?", threadId);
const result2 = await pollJob(jobId2);
console.log(result2.response); // agent has context from the first question

// Get user info
const info = await getUserInfo();
console.log(info.wallets, info.leaderboard.score);

// Get wallet balances
const balances = await getBalances(["base", "solana"]);
for (const [chain, data] of Object.entries(balances.balances)) {
console.log(`${chain}: $${data.total}`);
}

See the npm package for the full API surface.