Skip to main content
This is the shortest honest path from an empty machine to a filled package. It takes a wallet, a Joyride account, and about ten minutes. Joyride is a request-for-quote venue. An agent names a package of option legs and the side it wants, quoters price the whole package as one firm quote, and the agent accepts it. There is no resting order to manage.

1. Install the CLI

Node.js 20 or later is required.
Confirm the RFQ commands are present:
If that command is not found, the installed release predates RFQ support. Upgrade with npm install -g joyride-cli@latest.

2. Create an account

Accounts are created in the web app at joyride.exchange with a wallet and a referral code. A wallet with no Joyride account is rejected at sign-in with an error naming the sign-up step. There is no API-key signup and no self-serve provisioning from the CLI.

3. Sign in

The first run walks through wallet setup and writes an encrypted keystore under ~/.joyride. Sign-in is Sign-In with Solana: the wallet signs a server nonce and receives a session token, which is stored and resumed by later commands. An account may hold three concurrent authenticated sessions; a fourth evicts the oldest.

4. Provision the vault subaccount

Do this before the first accept. A first-time account has no margin-vault subaccount; requesting quotes works without one, but accepting needs funded collateral, and joyride rfq account reports not_funded until the subaccount exists.
Joyride pays the rent, once per wallet. The command prints one of exists, submitted, refused, or asked_recently and exits 0 for all four: each is a closed answer to the question that was asked. A timeout exits 2 and means the outcome is genuinely unknown rather than refused; a missing session or a rejected token also exits non-zero.

5. Wait for readiness

Provisioning lands on chain and then in the read projection, which lags. Poll until the account reports ready:
unknown is not zero. A funded account whose balance column has not landed yet reports unknown, and treating that as an empty account is the single most common first-run mistake. Deposits are made in the web app. The CLI never moves money.

6. Connect an AI client

The MCP server ships inside the same package. Register it with a client:
--client accepts claude, codex, or cursor. The server resumes the session token joyride login stored, so sign in before starting the client. The MCP server can request quotes and read RFQ state. It cannot sign, so it cannot accept a quote; that happens here in the CLI or in the app. See MCP Server for what the tools expose and for the spend ceiling an operator must configure.

7. Request a quote

A package is one to thirteen legs on a single underlying and a single expiry. Quantities are signed: positive means you receive the leg when you buy the package, negative means you deliver it. Instruments are 0DTE and refresh daily, so pick live symbols first:
Then request a price to buy the package, substituting two open symbols:
--side is required. buy asks for one price on the legs as written and sell for one price on their mirror image; either shows your direction to the quoters. two-way asks for both prices and keeps your direction to yourself until you accept. For a single leg there is a shorthand:
The command blocks for the venue’s request window and resolves one of three outcomes. quoted prints the price for the side requested and exits 0. unquoted means nobody priced the package: nothing happened, nothing is owed, and requesting again costs nothing. unresolved exits 3 and means the outcome is unknown, not that there was no quote; read the request back with joyride rfq show before sending another.

8. Accept the quote

An accept commits collateral in one irreversible signature, so the command prints the legs, the side, the cash direction and amount, the fee and its maximum, and the lock, and then asks for confirmation. Pass --yes to consent without the prompt. Without a terminal and without --yes the command refuses and signs nothing. --max-premium and --max-locked are yours, and they are evaluated by the SDK against the same read the signature is built from rather than pre-checked locally. --max-premium bounds the total cash cost: the premium plus the trading fee maximum the signature authorizes. Set it above both, and note that a package whose premium comes towards you still owes the fee, so it is not automatically under the ceiling. CLI has the operator variables that do the same job unattended. A buy request can be accepted only on buy, and a sell request only on sell. A quote is firm until its expires_at and the accepting side is the whole package: every leg fills in one on-chain transaction or none does.

Where to go next

  • CLI for the full rfq command group, the leg grammar, output modes, and the operator ceilings
  • MCP Server for driving Joyride from an AI client
  • TypeScript Maker SDK if you intend to quote rather than take
  • Fees and Limits for the live fee schedule
Questions and onboarding: support@joyride.exchange.