Skip to content

CLI

A terminal agent with its own wallet. You describe what you want; it finds an API, pays for the call, and answers.

bash
npx jarvisclaw "what are Bitcoin network fees right now?"
… thinking
  paying $0.001150 — Btc Fees (federation/3675) GET
  calling Btc Fees…

Fastest (next block): 5 sat/vB
Half hour: 4 sat/vB
Hour: 3 sat/vB
Economy: 2 sat/vB

Mempool: 86,076 transactions waiting.

used: search_apis → get_api_detail → call_api
spent: $0.001150

No API key was involved in that run, and nothing was configured beforehand except a funded wallet.

Install

bash
npm install -g jarvisclaw

Or run it without installing:

bash
npx jarvisclaw "<task>"

Free, with no setup

These work before you have a credential of any kind:

bash
jarvisclaw search "bitcoin fees"   # search the API catalogue
jarvisclaw models                  # available models, cheapest first
jarvisclaw agents                  # other agents on the platform
jarvisclaw --help

search matches by meaning, not just by substring — "bitcoin fees" finds the Bitcoin fee endpoint even though no listing contains that exact phrase.

Chat also works with no credential, on free models only:

bash
jarvisclaw "explain what x402 is"

Paying for calls

Two ways to pay. Pick one:

bash
jarvisclaw setup

A wallet (the default) generates a local key and prints an address. Send USDC on Base to that address and it can spend. Gas is covered by the gateway — you only need USDC.

An API key from the dashboard bills your account balance instead. Use this if you already have one.

Either way:

bash
jarvisclaw balance   # what is spendable
jarvisclaw wallet    # your address, and how to fund it

balance reads the chain, not an internal ledger. It is the real constraint on what the agent can spend.

Spending limits

Two ceilings, both on by default:

DefaultBehaviour
Per call$0.05Above this, you are asked
Per session$1Reaching this stops the run

The per-session limit refuses rather than prompting. If a run needs more than you allowed, the right answer is to raise the limit deliberately, not to approve it under pressure mid-task.

Calls under the threshold go through without a prompt but are always printed, so you see every payment even when you were not asked about it. At a tenth of a cent per call, confirming each one would mean six prompts for one task — and a user clicking through six prompts has stopped reading them.

Change the defaults:

bash
jarvisclaw config set max-call 0.01
jarvisclaw config set max-spend 0.5

Or override for a single run:

bash
jarvisclaw --max-call 0.01 "<task>"
jarvisclaw --max-spend 0.5 "<task>"
jarvisclaw --confirm-all "<task>"   # ask about every paid call, however small

Both are enforced by the CLI, so they are your stated intent rather than a gateway rule. The hard limit is always the wallet balance: it holds only what you sent it, which caps the worst case before the agent starts.

Choosing a model

By default auto picks per request, reading the prompt first.

bash
jarvisclaw -m anthropic/claude-sonnet-4.6 "<task>"
jarvisclaw -m auto/eco "<task>"       # cheapest paid models
jarvisclaw -m auto/premium "<task>"   # strongest, highest cost
jarvisclaw -m auto/free "<task>"      # free models only

auto/free is the default before setup. See Smart Router for how routing decides.

Set a lasting default:

bash
jarvisclaw config set model auto/eco

Interactive session

Run with no arguments to keep context across turns:

bash
jarvisclaw

Spending limits apply to the session as a whole, so the per-session ceiling covers the whole conversation rather than resetting each turn.

Configuration

bash
jarvisclaw config                    # what is in effect, and where it came from
jarvisclaw config set <key> <value>  # model, max-call, max-spend
jarvisclaw logout                    # remove the stored credential

Settings live in ~/.jarvisclaw/config.json; a generated wallet key lives beside it in ~/.jarvisclaw/wallet.json with owner-only permissions. Neither is ever transmitted anywhere except as a signature on a payment you are making.

Point at a different gateway with --base-url, or pass a credential for one invocation only with --api-key / --wallet-key.

What it does under the hood

For a task that needs live data, the agent runs three steps and tells you which ones it used:

  1. search_apis — find candidate endpoints in the catalogue
  2. get_api_detail — read the parameters and the price
  3. call_api — pay and call

Steps 1 and 2 are free. Only step 3 costs anything, and it is the step the spending limits govern.

See also