Lighter
| Property | Value |
|---|---|
| Transport | WebSocket (order placement + market data) |
| Signing | Schnorr (ECgFp5 curve), key derived from your L1 wallet signature |
| Funding interval | 1 hour |
| Concurrent Spreadr maker trades | up to 3 per wallet — one API key slot each |
| Builder code support | ✅ — 0.5 bp via integrator account index |
Premium account required. Spreadr only connects and trades Premium Lighter accounts, on either side of a spread (maker or hedge). A Standard or Plus account is refused when you connect it and when a trade starts. Switch the account to Premium in Lighter's UI first.
Account setup
Lighter uses an account-index model: your L1 wallet maps to a numeric account index, and orders are signed with a key registered against one of its API key slots. Spreadr discovers and generates all of this for you.
Open an account
Visit app.lighter.xyz (opens in a new tab), connect your L1 wallet (MetaMask etc.), and deposit USDC.
Connect in Spreadr
In the terminal: Settings → Wallets, pick your wallet, then + Lighter → Connect Lighter. Spreadr discovers your account index, generates the signing keypair in your browser, and registers it with Lighter. You sign the key authorization, a one-time fee authorization (only if the account hasn't given it before), and the credential vault unlock. Spreadr then checks the account is Premium and stops if it isn't. Nothing to copy or paste.
Quirks
- Use a dedicated trading sub-account. Lighter's signing key model doesn't have a trade-only restriction equivalent to HL/Extended/Orderly's agent/sub-key setups. We recommend a Lighter sub-account holding only the collateral you want exposed to bot trading, kept separate from your main holdings. See Security.
- One maker trade per API key slot. Lighter orders are signed against a strict per-key sequence counter, so maker trades running at the same time on one wallet each need their own API key. Choose how many slots to register when you connect (1–3, one wallet signature each) or add one later with + SLOT on the wallet card. A maker trade with no free slot is rejected until one frees up; hedge legs share the wallet's default key.
- Don't point another bot at the same account. A second process signing with the same key causes sequence collisions (rejected orders), and even with a separate key it eats the shared per-account rate budget.
- Volume quota. Lighter meters order placements and edits with a volume quota (Premium accounts; new accounts start with 1,000). Each placement or edit spends one unit, cancels are free, and every $2 you trade, on Spreadr or anywhere else, earns one. Lighter reports the remaining quota only in its replies to orders, so the figure in the order form is the last one Spreadr saw for that wallet, shown with its age; it updates when Spreadr next places a Lighter order for you. Under 500, Spreadr moves the maker to the other leg when that leg can take it, and otherwise warns and runs the trade as asked. It never blocks a trade on this figure. If quota really runs low mid-trade, Spreadr slows the maker and stops the trade early.
Builder fees
Spreadr is registered as a Lighter integrator (account index in the builder
table). Takes 0.5 bp maker + 0.5 bp taker via the value/1e6 fee unit
(50 = 0.5 bp). Shows on Lighter's side as integrator fee.
Common errors
| Symptom | Cause | Fix |
|---|---|---|
| "Invalid nonce" | Another process is signing with the same API key | Make sure only Spreadr uses this key |
| "Not enough volume quota" | Order-action quota exhausted (new or low-volume account) | Spreadr throttles automatically; quota refills as you trade |
| The account "is on the standard tier" (or plus) | The Lighter account isn't Premium | Switch it to Premium in Lighter's UI, then connect again or restart the trade |
| "Insufficient collateral" | Margin too thin | Deposit USDC or reduce leverage |
| Trade fails to start | Stale or corrupted credentials | Delete the Lighter credential in Spreadr and reconnect |