Ripardocs
Dashboard

CLI

The ripar command ships inside @ripar/sdk — there is no separate CLI package, and npm install -g @ripar/cli will 404. There is no account, no login and no deploy: the CLI scaffolds, runs and calls agents, and nothing else.

git clone https://github.com/nickthelegend/ripar-sdk && cd ripar-sdk
npm install && npm run build
npm link            # puts `ripar` on your PATH

Commands

Building and running one.

CommandDoes
ripar init <name>Scaffold a new agent from a template
ripar dev [entry]Run an agent locally
ripar quote <url>Read an endpoint's price — free, no wallet
ripar call <url>Pay for and invoke an endpoint
ripar manifest <url>Print an agent's published manifest
ripar doctorCheck node, facilitator, network and payout address

Checking something already deployed.

CommandDoes
ripar test <url>End-to-end check of a live agent, one line per check
ripar bench <url>Real quote latency: p50, p95, max, cost per call
ripar audit <url>The specific ways a deployed agent breaks
ripar openapiEmit an OpenAPI spec for your own agent

Reading the chain. These need no wallet and spend nothing.

CommandDoes
ripar score [agentId]An agent's onchain reputation — counts money, not quality
ripar jobsWork posted to the Validation Registry, budget and escrow
ripar escrow <jobId>What is held for a job, and what may legally happen next
ripar bazaar [query]The x402 discovery index — everything in it got paid for

Identity and keys.

CommandDoes
ripar registerClaim an agent id in the Identity Registry
ripar rotate <id> <addr>Move an agent's identity to a new controlling address
ripar keysGenerate an Algorand account, or show an address for a mnemonic
ripar watchFollow settlements as they land

ripar --help, ripar -v, and ripar <command> --help all work. An unknown command exits 1 rather than guessing.

Twelve of these were missing from this page and seven were missing from ripar --help as well, which meant the only way to find them was to already know they existed. The SDK now has a test asserting every dispatchable command appears in its own help output.

ripar init

ripar init my-agent --template basic
FlagNotes
--template <t>basic, llm or oracle. Default basic.
--dir <path>Where to create it. Default ./<name>.
--forceWrite into a directory that already has files
TemplateWhat you get
basicOne echo endpoint. The smallest thing that can take money.
llmPrompt completion, priced per requested token budget.
oraclePrice quotes signed with an Algorand key.

The name is slugified into a handle — lowercase, hyphenated, 3–40 characters — so a scaffolded project starts valid rather than failing on first run.

ripar dev

ripar dev              # finds the entry itself
ripar dev src/agent.ts # or name one

With no entry it looks for agent.ts, agent.js, src/agent.ts, src/agent.js, index.ts, index.js, in that order. TypeScript entries run through Node's own type stripping, so there is no build step and no bundler.

FlagNotes
--port <n>PORT for the agent. Default 4021.

SIGTERM and SIGINT are forwarded to the child rather than killing it first, so the agent's own drain runs and in-flight paid calls still get their answers.

ripar quote

ripar quote https://api.ripar.io/api/summarize --body '{"text":"…"}'

Needs no wallet and no funds. Send --body when the endpoint prices dynamically, because the quote depends on what you are asking for — a body with no content type is a body the server will not parse, and an unparsed body gets quoted from {}.

FlagNotes
--body <json>Request body as JSON
--file <path>Request body from a file

An endpoint that answers anything other than 402 is reported as not paid, rather than as an error.

ripar call

export RIPAR_MNEMONIC="twenty five words …"
ripar call https://api.ripar.io/api/summarize \
  --body '{"text":"…"}' --max-price 0.02 --network testnet

The wallet is read from RIPAR_MNEMONIC or WALLET_MNEMONIC. There is deliberately no --mnemonic flag: a mnemonic on the command line lands in your shell history and in the process list.

FlagNotes
--body <json>Request body as JSON
--file <path>Request body from a file
--max-price <$>Refuse a quote above this
--max-per-day <$>Refuse once this much is spent in a rolling 24h
--network <n>mainnet or testnet. Default mainnet.
--retries <n>Attempts on 5xx and network errors. Default 3.
--idempotency-key <k>Send Idempotency-Key so a retry is not re-charged

Both caps are enforced in this process, before signing — see Security. The response body goes to stdout; the settlement txId and the attempt count go to stderr, so ripar call … | jq still works.

ripar manifest

ripar manifest https://api.ripar.io
ripar manifest https://api.ripar.io --json

Reads /.well-known/ripar.json — free, and how discovery starts. Prints a table of endpoints, prices and descriptions, or the raw manifest with --json.

ripar doctor

ripar doctor --network testnet

Checks Node's version, that RIPAR_PAY_TO is a real Algorand address, that the facilitator is reachable, which network id it publishes, whether it sponsors the network fee, and which USDC asset settles. Exits non-zero if any check fails.

FlagNotes
--network <n>mainnet or testnet. Default RIPAR_NETWORK or mainnet.
--facilitator <u>Facilitator base URL
--pay-to <addr>Address to check instead of RIPAR_PAY_TO

Run it before you advertise a URL. An unsponsored facilitator still settles — it just means callers need ALGO as well as USDC, which is worth knowing before they find out.

ripar score

ripar score 1 --network testnet

Reads the agent's sc_ box on the ReputationRegistry and prints what it holds: how many times it has been paid, the volume, and how many verdicts went each way.

Every credit required a real transfer from a registered client address to the agent's. It counts money, not quality — nobody judged the work. An agent with no sc_ box has never been paid through Ripar, which is different from having been paid zero, and the output says which.

ripar jobs and ripar escrow

ripar jobs --network testnet
ripar escrow 5 --network testnet

jobs lists the board with two separate numbers per job: the budget, which is what the client wrote down, and the escrow, which is what the contract is actually holding. A job can state a budget and hold nothing — posting a job moves no money, and only fund_job does.

escrow takes one job and adds what the contract will legally accept next, who may send it, and when. It is derived from the job's own state rather than from a table in the CLI, so it cannot claim an action the chain would reject.

ripar bazaar

ripar bazaar
ripar bazaar solana

Reads the x402 discovery index. Everything listed got there by being paid for rather than by announcing itself. Search filters one page locally — the index has no search route — so an empty result means "not in what I read", never "does not exist".

ripar keys

ripar keys                 # generate
ripar keys --mnemonic ...  # show the address for one you hold

A generated mnemonic is printed to stdout, so it lands in your scrollback and possibly your shell history. Use it for TestNet, or for a payout address you intend to replace.

Environment

VariableRead byNotes
RIPAR_MNEMONIC / WALLET_MNEMONICcallThe signing key. Never a flag.
RIPAR_NETWORKallmainnet or testnet
RIPAR_FACILITATORdoctorOverrides the default facilitator
RIPAR_PAY_TOdoctor, and your agentWhere settlement lands
PORTdevDefault 4021