# Agari Docs — full text Documentation origin: https://docs.useagari.xyz Application origin: https://useagari.xyz Reviewed: 2026-09-23 Each guide includes its canonical URL. Resolve relative documentation links against the docs origin; AppLink components refer to the application origin. Application source: https://github.com/Blockchain-Oracle/agari at b98d1e40. # Your guide to Agari. Make a test-money call, explore baskets, or try a practice desk. Learn which network each action uses. Canonical URL: https://docs.useagari.xyz/ Application origin: https://useagari.xyz Reviewed: 2026-09-23 ## One app. A few ways to explore. [#one-app-a-few-ways-to-explore] ## What would you like to do? [#what-would-you-like-to-do] ## Watch the demo [#watch-the-demo] See the running product end to end in the [Agari demo on YouTube](https://youtu.be/iPtmue-eyIc). It is also on the app's [demo page](https://useagari.xyz/demo), next to the table of on-chain transactions. ## More resources [#more-resources] You can browse Markets and Baskets without connecting a wallet. **Predict** and **Cover** use tUSDC test money on Solana devnet. The [desk](/agents/desk) starts in paper practice; **Go live** is a separate Solana mainnet flow with real USDC and PreStocks tokens, awaiting its mainnet deployment as of 23 September 2026. Start with [your wallet and devnet funds](/start/wallet) for a call, or [build a practice desk](/agents/desk). * [Find every part of the app](/start/find-your-way). * [Understand the five PreStocks baskets](/trading/baskets). * [See how Agari fits together](/architecture/overview). * [See how Agari uses PreStocks and Pyth](/architecture/prestocks-and-pyth). * [Check what is available and what needs setup](/help/availability). * [Find a plain explanation of a word](/help/glossary). --- # Copy a strategy Review a creator, set on-chain limits, and release the permission when you stop. Canonical URL: https://docs.useagari.xyz/agents/copy-strategies Application origin: https://useagari.xyz Reviewed: 2026-09-23 Strategies are published by creators; Agents shows runners and their activity. A published strategy is not a promise of a fill or return. Check its runner, history, fee, playbook and hard caps before copying. To start, open the copy drawer and enter a **Total budget** and the **Most per trade** (no more than the strategy's own per-trade limit). The drawer then states the whole permission: per trade, per day, open positions and any entry-price ceiling, within the strategy's published caps, for 30 days. A strip shows your wallet, your [Trading Balance](/trading/balances) and what this setup takes from the wallet, fee included; you can deposit to the Trading Balance inline. **Max** fills the budget and the per-trade amount. Each field says in red what is wrong with it (for example "Above this strategy's … per trade" or "More than your total budget"), and the confirm button names the one rule holding it. Your wallet signs a bounded vault grant and a strategy subscription as separate steps. If one transaction is uncertain, the app reconciles its receipt and grant before continuing; do not blindly repeat a deposit or grant. The runner may place calls only inside the grant, and each position remains yours. You can **copy** the creator's side or **fade** it by taking the opposite side of the same Window. A wallet holds one strategy permission at a time: copying another strategy replaces this one's permission. Pause or revoke the permission to stop new copies; existing positions keep their normal settlement and claim path. If a runner key changes, reauthorization is required; the balance itself has not moved. The [Trading Balance guide](/trading/balances) explains funding, and [The Solana programs](/architecture/programs) maps `agari-strategy` and `agari-vault`. Strategies trade **stock Windows only**, across every listed stock; the 24/7 PreStocks, basket and xStock lanes are not theirs. While no stock Window trades, the runner rests: it checks every five minutes, makes no model call, and the strategy page reports **Resting** until the market opens. This is a **devnet tUSDC** feature. A listing can be visible while its runner or fill store is unavailable; the app reports those states rather than inventing recent trades. --- # Build a desk Choose a PreStocks basket and limits, run a paper practice desk, then understand the separate mainnet flow. Canonical URL: https://docs.useagari.xyz/agents/desk Application origin: https://useagari.xyz Reviewed: 2026-09-23 The desk studio is the **Hold** path from [Baskets](/trading/baskets). You choose which PreStocks names it may hold and how much cash to keep. The desk decides *when* to act, within your limits. A desk is different from an Up/Down call: it holds tokens rather than predicting a Window's close. Desk without a desk of your own shows what a desk does in three steps, a live card of a desk its owner shares (its basket, total value and latest check), **Start a practice desk** and **See a shared desk**. No wallet is needed until the last step of the studio. ### Choose the basket [#choose-the-basket] Open New desk, or choose **Hold** on a basket card. **The basket** step shows the five baskets as cards with their members and a seven-day line, plus **Build your own** from any of the eight PreStocks companies. Adjust each weight and the cash share with sliders; **Even split** and **Reset to basket** undo your edits, and the weights and cash must add up to 100%. Anyone can draft without a wallet. The draft stays in this browser. ### Set limits [#set-limits] **How strict** starts from **Careful**, **Balanced** or **Loose** (or **Custom**) and puts every limit on a slider: allowed drift, the largest share one company may take, the loss stop, the premium ceiling above the PreStocks mark, the per-action and daily spend caps, and the size above which it asks first. Each limit says who enforces it: the per-action and daily caps, the premium ceiling and the allowed companies are **enforced on-chain**; drift, the largest share and the loss stop are **enforced by the desk**'s own code. The defaults are Balanced: 5% drift, 50% largest share, a 15% loss stop, a 10% premium ceiling, $50 per action, $150 a day and ask first above $100. ### Ask for a test read [#ask-for-a-test-read] **Test read** runs one real check and shows it as it happens: sign the mandate, read PreStocks prices for every company, quote each trade on Jupiter at your size with PreStocks' 1% fee counted, ask the one timing question, then write the decision down and fingerprint it. This asks you to connect a wallet and sign a message; it does **not** move money. A bad or stale quote leads to a recorded refusal, not a trade. You can also continue without a test read. ### Create the practice desk [#create-the-practice-desk] **Create** shows a receipt of the split, the limits and where the desk starts before you sign. One wallet message signature creates a paper desk. Practice runs the same decision pipeline on real prices and quotes every hour, on the hour, with a paper cash ledger and **no on-chain transaction**. The app requires six practice checks of your own and a visit to the whole record before it offers Go live. ## Read your desk [#read-your-desk] Your desk's page opens on its value: a chart of the desk's worth at every check (**1D**, **1W**, **All**), the next check and how many practice checks are done. Four tabs sit under it: | Tab | What it shows | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Overview** | The latest decision, the allocation now against the target, and the limits in use (spent today, highest premium, distance from the loss stop). | | **Holdings** | Each company's tokens, its target share and its recent prices, then the USDC cash. | | **Activity** | Every check as a timeline, newest first, with day headings, quiet runs folded together and filters: **All**, **Acted**, **Decided not to**, **Asked you**, **Quiet**, **Problems**. | | **Rules** | The basket and each limit, marked **Enforced on-chain** or **Enforced by the desk**, with **Edit** to sign a new mandate version. | Open any check to read its decision page: the verdict, the companies, how sure the timing call was, the price strip (token price, PreStocks mark, 30-minute average, Pyth index when one was read, and your premium ceiling), the trade it chose or turned down, and each check it passed or refused. **Check it** recomputes the record's fingerprint. A desk its owner has not shared reads as private to anyone else. ## Go live is a separate step [#go-live-is-a-separate-step] **Go live** would open a desk on **Solana mainnet**, use real USDC and PreStocks tokens, and require mainnet wallet transactions and funding. The owner selects either **Ask me first** or **On its own**. A live operator can buy or sell within the on-chain limits, but cannot withdraw; only the owner can withdraw. PreStocks tokens have a 1% transfer fee and token-level controls, which affect what arrives after a route. **As of 23 September 2026, this mainnet step has not been deployed.** The 31-check Surfpool mainnet-fork rehearsal included two Jupiter buys, a sell, a withdrawal and refusal cases. It proves the rehearsal behavior, not a mainnet transaction. Practice desks are available in the production app. Do not treat a paper balance as a wallet balance. The desk's [architecture and trust boundary](/architecture/desk) explains what the program checks and what the venue attests. --- # Agents and strategies Published strategies, bounded copy permissions, Sensei and the PreStocks desk do different jobs. Canonical URL: https://docs.useagari.xyz/agents/overview Application origin: https://useagari.xyz Reviewed: 2026-09-23 Agari has two agent paths. Agents and Strategies publish or copy devnet Up/Down activity through bounded grants. The [desk](/agents/desk) is a separate PreStocks holding flow: paper practice is available now, and its real-money program is awaiting a Solana mainnet deploy. | Product | What it can do | Network and money | | ------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------- | | Sensei | Explains a ticker or position and hands you a call card. It does not place the call. | Read in the devnet app | | Published strategy / copy | Follows a creator's strategy through the grant the copier signs and may revoke. | Solana devnet, tUSDC test money | | Desk | Holds a chosen PreStocks basket inside owner-set limits; the runner decides timing. | Paper practice now; a separate mainnet live flow pending deployment | The strategy and copy path has devnet acceptance rows, but a listed strategy still needs a live runner and a valid grant. Read the app's current state before enabling a copy. The desk's [first-use guide](/agents/desk) and [trust boundary](/architecture/desk) explain its separate permissions. None of these pages is investment advice. --- # How the desk decides The owner, operator, attestor, Jupiter route and on-chain limits have distinct jobs. Canonical URL: https://docs.useagari.xyz/architecture/desk Application origin: https://useagari.xyz Reviewed: 2026-09-23 The desk spans a browser, an off-chain runner and `agari-desk`, an Anchor program designed for Solana **mainnet**. The owner's wallet signs changes to the mandate and any live deposit or withdrawal. The runner reads prices and proposes a buy, sell or checkpoint. The program enforces the allowed names, spend caps, a fresh signed reference, the premium ceiling, an output floor, and checks that a Jupiter route did not send the desk's tokens elsewhere. | Part | Authority | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | Owner wallet | Picks the basket and limits; approves practice messages; signs live owner actions. Only it can withdraw. | | Desk runner | Chooses timing and sends allowed operator actions. It cannot change the owner's limits or withdraw. | | Price attestor | Signs a reference containing token price, PreStocks mark and conversion multiplier. The program verifies its signature and freshness. | | Jupiter route | Swaps the desk's USDC and PreStocks tokens; the program checks the resulting balances and minimum received. | | `agari-desk` | Holds assets in a desk PDA and enforces the limits even if the runner proposes a forbidden action. | Every decision is stored as a `desk.v1` record and hashed. A live trade seals its record in the same transaction; a live "did nothing" checkpoint also advances the on-chain hash chain. **Check it** recomputes the stored hash against the chain. A practice desk has no chain seal, so the check can only compare its paper record. ## Where the trust sits [#where-the-trust-sits] PreStocks' catalogue is unsigned. The venue's attestor signs the reference the program accepts, so the premium ceiling and 8% output band defend against a compromised **operator** only while the attestor key remains separate. Pyth publishes OpenAI and Anthropic valuation indices, and the program can require a fresh verified Pyth update as an independent premium reference. The venue's current key lacks the `pyth-indices` entitlement, so that optional leg is **not active**. The index describes company valuation, while the token Window settles on the PreStocks token price; they are different measures. The program was deployed and exercised on a **Surfpool fork of mainnet** on 22 September 2026. The mainnet deploy and a real-money desk remain pending. See [Programs](/architecture/programs) for the network-specific status and [Source map](/builders/source-map) for the code and rehearsal evidence. --- # Ops and the indexer The off-chain actors that operate the venue's clock and price feed. Canonical URL: https://docs.useagari.xyz/architecture/ops-and-indexer Application origin: https://useagari.xyz Reviewed: 2026-09-23 Nothing in `services/ops` holds a user's funds. Its actors operate the venue's clock and its price feed, as separate roles each with their own key, run from one process (a single writer per role, so two processes never race to sign with the same key). | Actor | What it does | | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Window-roller | Lists and rolls Windows on the calendar cadence (5m/15m/60m during NYSE hours, the Monday Gap, and the one-hour 24/7 lanes for xStocks, OpenAI's PreStocks token and the five baskets). It pre-lists the first Window of the next session at the prior close, so a [pre-open call](/trading/pre-open-calls) has somewhere to rest overnight. | | Price-relay | Posts boundary prints. The program checks signatures, timestamps and the configured policy. For PreStocks, the venue signs a value from the unsigned catalogue; that attests the venue's read, not an independent oracle. | | Settler / halt-watch | Cranks settlement and voids once a Window's conditions are met, and watches for a halt signal. Settlement and voiding are permissionless instructions in `agari-events` — anyone can call them once the on-chain conditions hold; the settler just does it promptly. | | Market-maker | Seeds both sides of a Window's order book with a small, capped quote, so a Window isn't empty the instant it opens. When fair value sits near an edge, the far side is pinned at the edge of the price range rather than dropped, so a lopsided Window still offers both Up and Down. | | Indexer | Reads the chain and serves it back to the web app: prices, books, a wallet's positions, the proof feed. Read-only, no signing key. | | Strategy runner | Places copy and fade calls for [published strategies](/agents/copy-strategies) inside each copier's grant. It trades stock Windows only; while none is trading it rests, checking every five minutes with no model call. | | Desk runner | Runs practice checks and, after a separate mainnet deployment, would propose buys or sells inside an owner's on-chain limits. It has no withdrawal authority. | ## Always on, even when the market is closed [#always-on-even-when-the-market-is-closed] When NYSE is closed, `/markets` still shows the last price, the last session's chart, the session with the next open in the reader's clock, the 24/7 Windows still trading, and stock Windows to schedule a call on — never a blank screen or a stale "loading" label. A last known reading, correctly labeled with its age, is more honest than hiding the page. [Sessions and lanes](/trading/sessions-and-lanes) describes the closed board. ## What this buys you, and what it doesn't [#what-this-buys-you-and-what-it-doesnt] An ops role key can post a price, roll a Window, or crank a settlement — none of that spends a user's devnet tUSDC or SOL. The user's wallet or a session key under a bounded `agari-vault` grant signs an order. If an ops process is down, a stalled roller lists no new Windows; a stalled price-relay leaves a Window waiting and eventually voiding. The [desk](/architecture/desk) has a separate mainnet operator and attestor trust boundary. [Status](/help/status) shows the running actors. --- # How Agari fits together Devnet prediction Windows and the separate PreStocks desk share an app but use different money paths. Canonical URL: https://docs.useagari.xyz/architecture/overview Application origin: https://useagari.xyz Reviewed: 2026-09-23 Agari is a Solana app for short stock-price calls, holder cover and verifiable results. Its core venue is an **Anchor order book**. It lists Windows, matches Up and Down orders, records signed opening and closing prints, settles, and lets owners claim. The PreStocks desk is a separate program designed to hold tokens on mainnet; its paper practice flow is available while its mainnet deploy is pending. | Layer | Responsibility | | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Web app | Shows markets, baskets, tickets, desk decisions and receipts. It does not hold a user's private key. | | `packages/core` | Pure registry, market and desk rules; integer money arithmetic. | | `packages/markets` | Only Solana integration and transaction boundary. It builds instructions and reads the chain. | | Anchor programs | Nine devnet programs cover the venue, vault, reserves, strategies, Private and Duel; `agari-desk` was rehearsed on a mainnet fork and awaits its mainnet deploy. See [the program map](/architecture/programs). | | Ops and indexer | Roll Windows, relay prices, settle, quote, run paper desks and serve reads. These role keys do not replace the owner's wallet. | ## Two money paths [#two-money-paths] **Predict and Cover:** tUSDC with no market value on Solana devnet. A normal order is wallet-signed. A funded Trading Balance can use a bounded grant for tap-trading. The resulting Window settles from signed prints and the on-chain program, not a browser decision. **Hold through a desk:** a paper ledger during practice. A future Go live step would use real USDC and PreStocks on Solana mainnet. The owner chooses assets and limits; a runner chooses timing; `agari-desk` checks every operator action and the owner alone may withdraw. [How the desk decides](/architecture/desk) records the trust boundary. A read-only visitor can browse markets, basket marks, desk shares and proof without signing. A displayed screen is not a confirmed transaction. Use [Programs](/architecture/programs), [Price sources](/architecture/price-sources) and live status to see which path is ready. [PreStocks and Pyth in Agari](/architecture/prestocks-and-pyth) follows the two outside price sources that decide money through the product. --- # PreStocks and Pyth in Agari Where Agari uses PreStocks prices and tokens, where Pyth prices settle Windows on chain, and what each one does not do. Canonical URL: https://docs.useagari.xyz/architecture/prestocks-and-pyth Application origin: https://useagari.xyz Reviewed: 2026-09-23 Agari uses two outside price sources in ways that decide money: **PreStocks** for every pre-IPO name and basket, and **Pyth** for the equity Windows that settle on a verified pull update. [Price sources](/architecture/price-sources) lists every lane's policy side by side; this page follows each source through the product. Dates are UTC. ## PreStocks [#prestocks] [PreStocks](https://prestocks.com) issues tokenized pre-IPO stocks on Solana, each backed 1:1 by SPV exposure. Agari reads its public catalogue, [`prestocks.com/api/prestocks`](https://prestocks.com/api/prestocks), for each name's token price and the SPV's mark price. The catalogue is unsigned, so Agari's price attestor signs each boundary price it reads and the `agari-events` program checks that signature, the attestor key and the timing before it records the print. That makes a PreStocks print a venue-attested read of PreStocks data, not an independent oracle. **Every pre-IPO price, token and basket in Agari comes from PreStocks.** No other pre-IPO token or issuer is integrated. The eight names are OpenAI, Anthropic, SpaceX, Neuralink, Anduril, Kalshi, Polymarket and Figure AI. PreStocks states that its tokens are not affiliated with, endorsed by or issued by the companies they reference, and are not available in the U.S. | Where | What PreStocks supplies | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | The OpenAI 24/7 lane | `OPENAI-60m` is a one-hour Up/Down Window on the OpenAI token price that runs every hour of every day, listed and rolled by the venue with no one at a keyboard. It was registered on 19 September 2026; its first Window opened unattended, printed inside its admission window and settled at 12:00 the same day. Boosts, shorts, Lucky spins and parlay legs have run on it since. See [Sessions and lanes](/trading/sessions-and-lanes). | | Cover what you hold | Connect a wallet and Agari reads its PreStocks holdings by mint, read-only on Solana mainnet, and offers a devnet Down call as cover. A wallet holding two or more members of a basket is offered one cover on the basket. The first holder cover was a 1,000-lot Down on `OPENAI-60m` on a Saturday. | | Five baskets | Equal-weight indices in points (base 1,000 at frozen base prices) over PreStocks names, each computed from one catalogue read of every member; a partial read produces no print. All five first Windows settled on 22 September 2026 with no void, and the lanes have settled hourly since. See [Baskets](/trading/baskets). | | The desk's premium ceiling | A desk never buys a name more than its owner's ceiling above the **PreStocks mark**. The program checks this against a reference the attestor signed (token price, mark and conversion multiplier) no more than 15 minutes old. The first practice desk on production declined its first buy because OpenAI's token was 21.3% above its mark against a 10% ceiling. See [How the desk decides](/architecture/desk). | | Pre-IPO pages | Each name's page shows the token price, the PreStocks mark, the token's premium or discount to the mark, and PreStocks' weekly holder count. | The desk's real-money flow uses PreStocks tokens themselves: Token-2022 mints with a 1% transfer fee, routed through Jupiter. It was rehearsed on a Surfpool fork of mainnet with two real Jupiter buys (OpenAI and Anthropic), a sell and a withdrawal; its mainnet deployment has not happened yet, and practice desks move no money. Open in the app: Baskets, OpenAI, Short, Desk. ## Pyth [#pyth] Pyth is a **settlement source** in Agari, not a display feed. A TSLA, QQQ or VOO Window on the Pyth policy settles only once a Pyth pull update for the exact boundary second is verified inside `agari-events` (`public_record_print_pyth`, which anyone may call): * the `PriceUpdateV2` account must be **fully verified** and carry the policy's feed id; * it must be the first publish at or after the boundary: the previous publish time is before the boundary second, and the update's publish time is at or after it and at most 5 seconds later; * its confidence interval must be within 0.5% of the price. The app never settles on a "latest" read. Feeds: [TSLA/USD](https://app.pyth.com/explore/Equity.US.TSLA%2FUSD), [QQQ/USD](https://app.pyth.com/explore/Equity.US.QQQ%2FUSD), [VOO/USD](https://app.pyth.com/explore/Equity.US.VOO%2FUSD). **Cross-check and void.** TSLA's Pyth policy names RedStone as its check source. Both boundaries are compared, and a gap wider than 25 bps voids the Window (`CrossCheckDivergence`) instead of paying anyone; a missing print voids it as `MissingPrint`. Devnet evidence from 14 September 2026 includes a TSLA Window settled Up on Pyth 358.20432 → 358.75 with RedStone agreeing, a divergence void, and a missing-print void. See [Halts and voids](/trading/halts-and-voids). **Proof replay.** Proof lists every settled Window, newest first, with its opening and closing print and the source that signed them; filter it to Pyth to see only Pyth-settled Windows. Each row, and each settled Window's receipt, opens that Window's proof page, which lists each print with its source and signer count. **Re-verify on devnet** posts the archived Pyth update again from a funded `proof-replay` role, so a reader can watch the same bytes verify on chain. Replays are limited to 20 an hour across the deployment and 3 an hour per IP address. The same Pyth access also feeds the price relay, the halt watch and the market calendar. **The trial window.** The Pyth policy for TSLA, QQQ and VOO covers Windows through the NYSE close on **25 September 2026**. From then TSLA settles on RedStone under its next registered policy, and QQQ and VOO list nothing ("paused: no signed source") until a new policy is registered. Policies are append-only and a Window keeps the one it opened under. ### Pyth's pre-IPO valuation indices: wired, not active [#pyths-pre-ipo-valuation-indices-wired-not-active] Pyth publishes [OpenAI](https://app.pyth.com/explore/Equity.Index.OPENAI%2FUSD) and [Anthropic](https://app.pyth.com/explore/Equity.Index.ANTHROPIC%2FUSD) valuation indices around the clock. Agari carries a one-hour **valuation lane** for each (`OPENAIV-60m`, `ANTHROPICV-60m`) that would settle on Pyth through the same on-chain path as TSLA. The venue's current key is refused for both feeds (HTTP 403, group `pyth-indices`), so an hourly probe records them as denied, the roller lists no valuation Window, the deploy script refuses to register the lanes, and the pages leave the index rows out rather than show a dead lane. A refused index never affects TSLA, QQQ or VOO. A key with the `pyth-indices` group switches these on with no code change or program upgrade: * the registration script accepts the two valuation lanes (it probes first and refuses while the key is denied), and the roller lists them from the next hourly probe; * the OpenAI and Anthropic pages add **Pyth index** and **Token vs Pyth** beside the PreStocks mark; * a desk decision's price strip shows the index when one was read; * a desk owner can require the index: every buy must then carry a fully verified Pyth update no older than 60 seconds, and the premium ceiling is measured against the index instead of the venue-attested mark. That is the one check in the desk's trust boundary that does not depend on Agari's own keys. The index measures company valuation and the token Window settles on the PreStocks token price, so Agari never uses one as a cross-check for the other. ## Where to check the current state [#where-to-check-the-current-state] Source availability changes. Status shows the price pipelines, the relay and the Pyth entitlement probe as they are now; this page is a snapshot of the reviewed source. --- # Price sources and signed prints Equity, token, PreStocks, basket and valuation lanes use different source policies. Canonical URL: https://docs.useagari.xyz/architecture/price-sources Application origin: https://useagari.xyz Reviewed: 2026-09-23 A Window settles from its opening and closing **boundary prints**. The on-chain program checks the configured source and timestamp; the web app does not pick a winner from a latest-price tile. Policy versions are registered ahead of time, so a Window retains the policy it started with. | Lane | Boundary source and limit | | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | TSLA, QQQ, VOO equity | Pyth pull update for the exact boundary second, verified in the program. TSLA also cross-checks RedStone within 25 bps. This policy covers Windows through the NYSE close on 25 September 2026; after it TSLA settles on RedStone and QQQ and VOO pause until a new policy is registered. | | Other equity names | RedStone signatures under the configured signer threshold. | | Tokenized stock lane | Switchboard On-Demand signatures from a pinned queue. An upstream gateway outage can pause this lane without pausing equities. | | PreStocks name | Agari's price attestor signs a PreStocks catalogue **token price**. The catalogue itself is unsigned and supplies no independent oracle proof. | | PreStocks basket | Agari computes equal-weight index points from all members in one catalogue read and signs that index. Missing members prevent a print. | | Pyth pre-IPO valuation lane | Pyth's OpenAI or Anthropic valuation index, only when the venue key is entitled. The trial key was denied at review, so no valuation Window was listed. | The token price and Pyth's company valuation index are **different measures**. Agari does not treat the latter as a cross-check for a token-price Window. The desk can optionally require a fresh verified Pyth index for a buy, but that leg also needs the separate entitlement. [Baskets](/trading/baskets) explains the points index; [halts and voids](/trading/halts-and-voids) explains missing or disagreeing prints. [PreStocks and Pyth in Agari](/architecture/prestocks-and-pyth) covers the Pyth verification rules, the proof replay and every PreStocks surface in detail. For a current source read, use Status. The [source map](/builders/source-map) identifies the config, relay and program boundaries. The [proof walkthrough](/trading/proof) shows how the recorded boundaries appear in the app. --- # The Solana programs What is deployed on devnet, what was rehearsed on a mainnet fork, and what each program enforces. Canonical URL: https://docs.useagari.xyz/architecture/programs Application origin: https://useagari.xyz Reviewed: 2026-09-23 | Program | Address | Observed state at the 23 September 2026 review | | ---------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | | `agari-events` | `cDcHZiQ1WYAHbSjxMoju86fbC8azrtQg7dzrWKynANH` | Deployed on devnet, upgraded in place; on-chain IDL and confirmed order/settlement transactions. | | `agari-vault` | `84puRVxGcjs7JNcPCVAEkkK6ZFXneEC8yky8RTMzhPi9` | Deployed and initialized on devnet; Trading Balance and bounded grants have devnet evidence. | | `agari-maker` | `442oD4u4fHnAwPjSqdQvkgGeDaGVEZ9YHHaLny98nEaN` | Deployed on devnet; maker inventory and provider shares back [Earn](/trading/earn). | | `agari-range` | `GfsAzxPeNp2cbUTrXehHBjLjAMX6Cf69gz2zJYkGM7ha` | Deployed on devnet; prefunded Range and Moonshot outcomes. | | `agari-leverage` | `2yMrhq686tL6uAUFHfKGsPZAWSGoQoRW9HxNvnAZJeQb` | Deployed on devnet; funded Boost positions and knock-out rules. | | `agari-parlay` | `H4gdpoPirbtHP6hNdiQRLwfifjshdgDamYuvrGxj2ZCC` | Deployed on devnet; multi-Window tickets and their reserve. | | `agari-private` | `6qjoqeiGt8K5RoYvsRCDoS4QsDXrsPAZjHwy4vU98d9j` | Deployed on devnet; separate Private balance and claim path. | | `agari-strategy` | `2yiPYmuNQxpfC3nCk66KzkW72uCbkT6hHwLRSHpYDskQ` | Deployed on devnet; creator registry, subscriptions and bounded copy permissions. | | `agari-arena` | `CakGVH2CaM2YAF9edgMTrCv1HCFf5tgbTcinN24JWvR3` | Deployed on devnet; Duel match and pot accounting. Arcade scores remain off-chain. | | `agari-desk` | `4gAfiRauANHVajpErqCey7iWGbKkyuSsnXLRbApVaWak` | Deployed and exercised **on a Surfpool fork of mainnet only**. Mainnet deploy awaits the owner-funded C7 step. | The `agari-events` and `agari-vault` IDLs were published through Program Metadata. Their on-chain dumped bytes matched the local host builds checked during the development review; a separate verifiable-image build produced different bytes because its toolchain differed. The [public evidence ledger](https://github.com/Blockchain-Oracle/agari/blob/main/docs/evidence/acceptance.md) lists selected devnet transactions. No external audit is claimed. ## Event book [#event-book] Every order is `BUY_YES`, `SELL_YES`, `BUY_NO` or `SELL_NO`, priced in YES ticks. The book supports a direct Yes or No trade, minting a complete Yes/No pair when both sides buy, and burning a pair when both sell. PostOnly can rest before a Window opens; a taker cannot fill it until trading starts. IOC takes available size and cancels the rest; FOK requires a complete fill. A Window moves Listed → Trading → Locked → Resolved or Voided. The closing signed print at or above the opening print pays Up, including ties. A void returns the stake as credit rather than guessing an outcome. [First call](/trading/first-trade) covers the user journey. ## Trading Balance and desk [#trading-balance-and-desk] `agari-vault` holds devnet tUSDC and enforces a user's session grant with spending, daily and open-position limits. `agari-desk` is a different program: a mainnet desk PDA would hold USDC and PreStocks under allowed-name, cap, reference, premium, output-floor and withdrawal checks. Its [rehearsal and current limit](/architecture/desk) must not be confused with a live mainnet deployment. --- # Read the market headlines News, sentiment and the tickers each headline is about. Canonical URL: https://docs.useagari.xyz/explore/profile-news Application origin: https://useagari.xyz Reviewed: 2026-09-23 The news feed is a dense list of rows: a lead story, then the wire underneath, each with a source, an age and a sentiment tone shown as a thin colored edge on the row. Every row that names a stock carries an asset-mark chip with a `$TICKER` cashtag, so you can see at a glance which tickers a headline touches. The same row shape (source, age, sentiment edge, cashtag chips) is reused across the news page, the activity feed and the ticker hub, so a headline reads the same wherever it appears. On narrow screens the sentiment tone moves from the row's left edge into the meta line, so headline titles keep their full width. ## Reading sentiment [#reading-sentiment] The tone is a small colored mark plus a word (not just a bare color), so it doesn't rely on color alone to carry meaning. Sentiment is a read on the headline's language, not a trading signal — treat it the way you'd treat any single news source's slant, not as a settlement input. Nothing about a Window's Up/Down result depends on sentiment; only the signed price print at each boundary does. ## Following a cashtag [#following-a-cashtag] Choosing a `$TICKER` chip takes you to that ticker's own hub, where the same news rows, its live price and its open Windows sit together. --- # Reels and takes Short, wallet-signed calls on a ticker, woven into a feed. Canonical URL: https://docs.useagari.xyz/explore/reels Application origin: https://useagari.xyz Reviewed: 2026-09-23 A **take** is a short, public call on a ticker — a sentence or two, signed with your wallet (an ed25519 message signature, not a transaction) and verified on the server before it's shown. Reels is the feed those takes flow into, alongside relevant news. ## Why a signature, not just a post [#why-a-signature-not-just-a-post] The signature ties a take to the wallet that made it, the same way a trade is tied to the wallet that placed it. It costs no network fee — it’s a message signature, not an on-chain transaction — but it means a take can't be spoofed as coming from an address that never signed it. ## Cashtags [#cashtags] A take carries the same asset-mark chip and `$TICKER` cashtag grammar as the news feed, so a call about TSLA shows TSLA's mark right on the card, and choosing the cashtag opens that ticker's hub. Not investment advice: a take is one person's public call, not a recommendation, and Agari doesn't rank or promote any take as more credible than another. --- # Rooms and price alerts Who can speak in a Window's Room, and how a price alert actually watches. Canonical URL: https://docs.useagari.xyz/explore/rooms-alerts Application origin: https://useagari.xyz Reviewed: 2026-09-23 ## The Room [#the-room] Each Window (and each ticker) has a Room, but only wallets with a real position in it can speak. The app checks, in order: does this wallet hold a position on this Window right now (read from the index), and separately, has it "ever bet" here (a registry/seat check) — either one unlocks joining with a single wallet signature. A wallet with no position sees the Room as locked, not hidden: it can see that a Room exists, just not post into it. ## Price alerts [#price-alerts] An alert watches a ticker's live price while your browser tab is open — it's a client-side watcher, not a server-side push. It fires only on a fresh tick (published within the last minute) inside today's regular session, so a stale or after-hours print never triggers a rule. When it fires, you get an in-app toast, and — if you've granted the browser's notification permission — a system notification too. Because the watch runs in your browser, an alert doesn't fire while the tab is closed. If you need to know a stale reading exists at all, Status and the market's own "last close · as of …" label are the honest always-on signal; alerts are a convenience on top of an open tab, not a background service. --- # Ask Sensei for a read A stock-, session- and position-aware assistant that never gives investment advice. Canonical URL: https://docs.useagari.xyz/explore/sensei Application origin: https://useagari.xyz Reviewed: 2026-09-23 Sensei is a dock that knows the ticker you're looking at, the NYSE session state, earnings context and your open positions. It keeps a **Brake** — it does not tell you what to trade, and it explicitly refuses to give investment advice. It can hand a trade card to the ticket for you to review and place yourself; it never places an order on its own. It reads only Windows that are trading now, so it does not suggest a call on a stock Window that has not reached its bell. ## What it needs [#what-it-needs] Sensei is model-agnostic through the Vercel AI SDK: an `AI_MODEL` setting (for example `anthropic/claude-opus-5` or `openai/gpt-5.4`) plus one matching provider credential, all server-side only. Without any AI credential configured, the dock still renders — the ring, the teaser, the drawer, the meter, the tape and trade cards all work — but a reply says it's unavailable and names exactly what's missing rather than failing silently. ## What it won't do [#what-it-wont-do] * It won't tell you to buy or sell. * It won't promise an outcome. * It won't act on your behalf — every trade card still needs your own review and your own wallet signature (or a session key you already granted). See [what's available](/help/availability) for whether Sensei's model credential is configured in the environment you're using. --- # Run Agari locally Install, check and build the application from its integration checkout. Canonical URL: https://docs.useagari.xyz/builders/local-setup Application origin: https://useagari.xyz Reviewed: 2026-09-23 Run these commands from the repository root, **not** from `docs-site/`. The branch reviewed here is `integration/w1` at `b98d1e40`. Check the current source and public evidence before changing behavior. ```sh pnpm install --frozen-lockfile pnpm typecheck && pnpm invariants pnpm build ``` The program build is separate: ```sh NO_DNA=1 anchor build --arch v0 ``` Anchor 1.2 otherwise defaults to an SBPF architecture the deployment does not use. The app's `.env.example` files list configuration names; keep provider keys on the server and Solana keypairs under `~/.config/agari/`. Running a local app does not start the production actors or fund a wallet. See the application's README for the exact service and environment prerequisites. The docs site has its own lockfile in `docs-site/` and needs only Node 22+ and pnpm 11.24: from that folder, `pnpm install --frozen-lockfile`, then `pnpm check`. It renders without wallets, a database or provider credentials, and its check reads the app source from the parent directory. --- # For builders Start from the integration checkout, follow the package boundaries, and verify a claim against source and evidence. Canonical URL: https://docs.useagari.xyz/builders/overview Application origin: https://useagari.xyz Reviewed: 2026-09-23 This documentation site lives in the Agari application repository at `docs-site/`. These guides were reviewed against app commit `b98d1e40` (23 September 2026) on `integration/w1`, the branch that deploys. The public app is at useagari.xyz; the GitHub repository is private for now. Connected captures record the live app as observed that day; its deployed commit was not independently identified. Use [Local setup](/builders/local-setup) for the actual commands, [Source map](/builders/source-map) to locate each system, [Programs](/architecture/programs) for network-specific deployments, and [Price sources](/architecture/price-sources) for the oracle and attestation paths. The devnet acceptance ledger and the S21 desk rehearsal are different kinds of evidence; a local test does not prove a mainnet deploy. --- # Source map and evidence Where each documented behavior lives in the reviewed Agari checkout. Canonical URL: https://docs.useagari.xyz/builders/source-map Application origin: https://useagari.xyz Reviewed: 2026-09-23 **Reviewed application:** `integration/w1` at `b98d1e40`, 23 September 2026. The docs live in the same repository at `docs-site/`, and the paths below are relative to its root. The GitHub repository is private for now. | Behavior | Source owner | Evidence boundary | | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | Registry, baskets and integer index | `packages/core/src/market/baskets.ts` | Frozen member bases and arithmetic; confirmed devnet basket prints and settlements in `docs/evidence/acceptance.md` | | Order book, Window settlement and claims | `anchor/programs/agari-events/`, `packages/markets/` | Devnet program and transaction ledger | | Trading Balance and bounded grants | `anchor/programs/agari-vault/`, `packages/markets/src/vault/` | Devnet program and grant drives | | Earn and market making | `anchor/programs/agari-maker/`, `web/src/features/earn/` | Devnet maker deploy and reserve transactions; present liquidity must be read live | | Range, Moonshot, Boost, Parlay and Private | `anchor/programs/agari-range/`, `agari-leverage/`, `agari-parlay/`, `agari-private/`; matching `web/src/features/` folders | Separate devnet program deploys and settlement evidence; a listed route may lack a usable quote | | Strategy subscriptions and copy | `anchor/programs/agari-strategy/`, `web/src/features/strategies/`, `services/ops/src/actors/strategy-runner/` | Devnet grant and subscription receipts; a runner must be configured to act, and it rests while no stock Window trades | | Shorts | `web/src/features/short/` over `anchor/programs/agari-leverage/` | Uses the devnet Boost reserve; a Window must be trading and the book deep enough to take the position back | | Closed-market board and session lines | `web/src/features/markets/word-board/`, `packages/core/src/market/horizons.ts`, `packages/core/src/copy/session-words.ts` | Behaviour depends on the hour; read the live board | | Pyth pull-update verification | `anchor/crates/agari-common/src/print/pyth.rs`, `anchor/programs/agari-events/src/instructions/record_print_sources.rs`, `web/src/features/proof/` | Devnet settlement and void rows in `docs/evidence/acceptance.md`; see [PreStocks and Pyth in Agari](/architecture/prestocks-and-pyth) | | Games and scoring | `anchor/programs/agari-arena/`, `web/src/features/games/` | Duel on devnet; Practice and arcade scores are not on-chain | | Price policies, attested PreStocks prints, Pyth index entitlement | `services/ops/config/price-sources.json`, `services/ops/src/actors/`, `packages/markets/src/prices/` | Live source availability can change; `/status` and the ops entitlement probe show current state | | Basket and desk screens | `web/src/features/baskets/`, `web/src/features/desk/` (the entry, studio, cockpit, activity timeline and decision page in their own folders) | Production routes `/baskets`, `/desk`, `/desk/new`, `/desk/`, `/desk//record` and `/desk//decision/` were present at review | | Desk rules and record | `packages/core/src/desk/`, `anchor/programs/agari-desk/` | Surfpool mainnet-fork rehearsal, 31/31 checks; **mainnet deployment still pending** | | Desk operator and runner | `packages/markets/src/desk/`, `services/ops/src/actors/desk-runner/` | Production paper practice; live program behavior only rehearsed on a fork | The application README links specific devnet transactions. The desk has a recorded mainnet-fork rehearsal, while mainnet deployment and real-money operation remain pending. --- # Duel and Lucky Two game wrappers that place real devnet orders on Agari's live Windows. Canonical URL: https://docs.useagari.xyz/games/duel-and-lucky Application origin: https://useagari.xyz Reviewed: 2026-09-23 ## Duel [#duel] At Duel, two players receive the same committed deck of live Windows. Choose Free or Ranked, inspect the per-card order cap and any side-pot, then find an opponent. Free means **no side-pot**; every pick is still a real market order using your devnet tUSDC. Ranked adds a tUSDC side-pot and rating. The entry names a key held by this browser to place your picks; your wallet signs the entry and pays the fees shown there. Each player keeps the economics of their own positions, while the pot follows the match result or forfeit rules. Claims are pull payments from the arena. A card is dealt only from a Window whose book is quoting both Up and Down, and never from a Window past its series' close (a stock series ends at the session close; a Gap Window has no successor). Out of hours that leaves the 24/7 pre-IPO and basket Windows with live quotes; when none has one, the queue says the market is shut instead of dealing a deck that cannot fill. The deck hash is committed on-chain before its cards are revealed. A usable duel requires the `agari-arena` program, a room server, a matchmaker, another player and dealable Windows. The route reports which dependency is missing. A queued match or unsettled card is not a paid result. ## Lucky [#lucky] At Lucky, enter a stake and spin. A server seed is committed before the reels move; your browser adds its seed. The draw names a stock, side and reach, then shows a **live quote** on a live Window. You decide whether to place one ordinary order. If the book moves, the live quote may differ from the reel's reach; review that difference before signing. It settles and claims like another venue position. What a spin can draw depends on the hour. While any stock Window trades, the list is the nine launch stocks plus the 24/7 lanes (OpenAI and the five baskets). While none trades, it is the 24/7 lanes alone, so an out-of-hours spin never draws a stock with nothing to deal. The list is sealed with the server seed as a numbered policy, so a draw can be replayed against the exact list it was made from. Lucky's browser check proves the revealed seed matches the commitment and replays the draw from the seeds. The candidate Window set and its selection rule are recorded, but that check does not prove the server chose the candidate set fairly. Neither a spin nor a deal spends tUSDC until an order is placed. Both modes use **devnet test money**. For the underlying order and settlement rules, see [Place a trade](/trading/first-trade). --- # Games Practice and the arcade wrap Agari's live Windows with their own scoring and funding rules. Canonical URL: https://docs.useagari.xyz/games/overview Application origin: https://useagari.xyz Reviewed: 2026-09-23 Games has seven modes: Practice, Duel, Lucky, Range, Moonshot, Line Rider and Candle Hop. They share Agari's live Windows, but have different scoring and money rules. A particular round still needs its own current game state, liquidity or participants. Start with [Practice and arcade](/games/practice-and-arcade) to play without a stake. [Duel and Lucky](/games/duel-and-lucky) involve real devnet orders. [Range and Moonshot](/trading/range-and-moonshot) use a separate prefunded reserve. Read the entry cost and result rule in each mode before signing; money-backed games use **devnet test tUSDC** and are separate from the [desk](/agents/desk). While the stock market is closed, every mode that plays a Window is marked **24/7 only** with the session (for example "Market closed · Opens Wed 09:30 ET · pre-IPO and baskets only"): it runs on the round-the-clock Windows alone. The arcade runs never touch a Window and are unaffected. The [ordinary call guide](/trading/first-trade) explains the Window beneath the games. Use Status if a round is not listing or settling. --- # Practice and arcade Play real-price prompts or seeded score runs without placing a position. Canonical URL: https://docs.useagari.xyz/games/practice-and-arcade Application origin: https://useagari.xyz Reviewed: 2026-09-23 Practice deals live Agari Windows as swipe cards. Swipe up or down, use arrow keys, or tap a button. After the final swipe it watches the public price feed for a short fixed interval and scores every card at the same moment. The opponent is a labelled coin flip. **The score is not the Window's eventual settlement.** There is no stake, position, payout, chain transaction or rating. If the live Window list or price feed is unavailable, no round can be scored. Out of hours Practice deals from the 24/7 pre-IPO and basket Windows, and says so when none has enough time left for a round. Line Rider and Candle Hop are arcade runs. Line Rider asks you to keep a dot on a scrolling line; Candle Hop asks you to pass through candle gaps. A visible seed generates the course. Inputs are recorded and the server replays a completed run before posting its score. A connected wallet is needed to post to a board, and a deployment without the games store can keep the score only on your screen. Arcade scores are **server checked, not on-chain**, and no money rides on them. These modes do not use `agari-arena`; that program backs [Duel](/games/duel-and-lucky). --- # What is available Check the network, funds and current source before acting. Canonical URL: https://docs.useagari.xyz/help/availability Application origin: https://useagari.xyz Reviewed: 2026-09-23 This page is a **23 September 2026 source review**, not a promise that a particular Window, game or quote is live every minute. Read Status and the screen's current state before signing. | Path | Network and prerequisites | Evidence at review | | ----------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- | | Browse markets and baskets | No wallet; readable app and indexer | Public routes available. | | Predict or Cover | Solana devnet wallet, devnet SOL for fees, tUSDC, a trading Window and a quote | Devnet fills and basket settlements in the acceptance ledger. | | Trading Balance and tap-trading | Devnet tUSDC, deployed `agari-vault`, a funded and valid grant | Vault deployed and grant paths exercised on devnet. | | Earn, specialist tickets, agents, X trading and games | Each route has its own round, grant, role or liquidity conditions | Built after the first venue with devnet evidence; availability varies by route. | | Practice desk | Wallet message signature for creation; paper cash, real price/quote reads | Production practice desk and decision record observed. No transaction. | | Go live with a desk | Mainnet program deploy, owner wallet, real USDC, PreStocks tokens and SOL fees | **Not yet deployed** at this review; fork rehearsal is not mainnet proof. | | Pyth pre-IPO valuation lane | `pyth-indices` entitlement for OpenAI/Anthropic | Trial key denied (403) at review; no lane listed while denied. | The regular equity, Gap, 24/7 token, PreStocks and basket lanes have distinct clocks and [price sources](/architecture/price-sources). If a source is unavailable, the venue should pause the affected lane or void a Window whose required print does not arrive. A stopped lane is not a confirmed loss. A signature approval is not itself proof that a financial transaction landed; inspect the transaction before retrying. --- # Glossary A plain explanation of the words Agari uses. Canonical URL: https://docs.useagari.xyz/help/glossary Application origin: https://useagari.xyz Reviewed: 2026-09-23 | Term | Meaning | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Window** | One tradeable period on one ticker: an opening print, a closing print, one cadence (5m/15m/60m, the Monday Gap, or 24/7 token). | | **Series** | A ticker + cadence pair (for example TSLA-5m). Owns the price policy and the order books its Windows use. | | **Book** | The order book for one Window — bids and asks, matched price-time. Recycled between Windows on the same Series. | | **Ledger** | The seat registry for one Window: who's in, their escrowed cash and outcome balances. | | **Seat** | One trader's slot in a Window's Ledger. A small refundable bond holds a seat open; it returns when you leave. | | **Print** | A signed price value for one boundary (open or close) of a Window, verified on-chain. See [price sources](/architecture/price-sources). | | **Policy version** | A Series' price-source rule for a date range (which source, thresholds, admission window). Registered in advance; never edited once written. | | **PostOnly / IOC / FOK / Normal** | Order types. PostOnly only rests, never takes. IOC takes what it can, cancels the rest. FOK reverts unless it fills completely. Normal rests if it doesn't fully fill. | | **Mint-pair / burn-pair** | A fill where a complete Yes/No pair is created or destroyed, because both sides of the trade are buyers (mint) or both are sellers (burn). | | **Void** | A Window that pays 0.5/0.5 instead of settling, because a required print never arrived (`MissingPrint`) or two price sources disagreed too much (`CrossCheckDivergence`, TSLA only). Stake returns as credit. | | **tUSDC** | Agari's devnet test collateral, a 6-decimal SPL token with no market value. | | **Trading Balance** | A balance held in `agari-vault`, used for tap-trading instead of a wallet-signed order each time. | | **Session key / grant** | A separate signing key your wallet authorizes with spending caps (per trade, per day, open positions) — never your wallet's own private key, and it never leaves your browser. | | **24/7 lane** | One-hour Windows that trade around the clock: xStocks on Switchboard, OpenAI's PreStocks token and the five baskets on attested PreStocks prices. | | **Cover** | A Down call a holder takes as insurance on tokens the connected wallet holds (xStocks, Ondo or PreStocks tokens, or two or more members of a basket). | | **Schedule a call** | A post-only call rested on a stock Window before its bell; see [pre-open calls](/trading/pre-open-calls). | | **Short** | A Down position the Boost reserve holds and marks against the book, with an exit at any time and a knock-out line; see [Short a fall](/trading/shorts). | | **Halt** | A wide or issuer-level trading halt signal. Shown as "Trading halted." A merely stale price print is shown as "Signed price stale" instead — a different, more common state. | --- # Status How to read the app's own service-health page. Canonical URL: https://docs.useagari.xyz/help/status Application origin: https://useagari.xyz Reviewed: 2026-09-23 Status reports the off-chain actors, the price pipelines and indexer freshness. The Pyth valuation-index row also shows whether the venue key may read OpenAI and Anthropic's indices. The entitlement was denied at the 23 September 2026 review; the corresponding valuation lanes stay unlisted while denied. If a page you're following shows a stale reading, "signed price stale," or a faucet that isn't responding, check Status first. If everything there looks healthy and the problem persists, it's more likely something in the guide is out of date than the app itself. --- # Troubleshooting Common problems and what they actually mean. Canonical URL: https://docs.useagari.xyz/help/troubleshooting Application origin: https://useagari.xyz Reviewed: 2026-09-23 ## The app shows a wrong-network state [#the-app-shows-a-wrong-network-state] Your wallet is set to a cluster other than **Solana devnet**. Switch it to devnet in the wallet extension, not in the app. ## The faucet claim didn't land [#the-faucet-claim-didnt-land] Devnet faucets are rate-limited per wallet (about once per rolling 24 hours for SOL) and share a small daily allocation. If the app's own faucet is exhausted, use `faucet.solana.com` for devnet SOL directly, then retry the tUSDC mint. Check Status for the faucet role's health before assuming it's broken. ## A transaction's outcome is unclear [#a-transactions-outcome-is-unclear] A wallet popup confirming a signature is not the same as a confirmed fill. Check the transaction on a devnet explorer, or wait for the app's own result in Portfolio, before retrying — retrying an order that actually landed can produce a second, unwanted fill. ## A Window shows "paused: no signed source" [#a-window-shows-paused-no-signed-source] This is expected, not a bug. A Series only lists a Window when a registered price policy version covers both its opening and closing boundary. If none does (for example, after the Pyth trial ends and before a replacement source is added for QQQ/VOO), the lane pauses honestly rather than trading on an unverified price. ## A Window voided instead of settling [#a-window-voided-instead-of-settling] Either a required print never arrived within its admission window (`MissingPrint`), or, for TSLA, its two price sources disagreed beyond the allowed threshold (`CrossCheckDivergence`). Either way your stake returns as credit — see [halts and voids](/trading/halts-and-voids). This is not a lost trade. ## A feature seems to be missing entirely [#a-feature-seems-to-be-missing-entirely] Check [what's available](/help/availability) and Status. These routes have been built, but each may need its own live round, liquidity, grant or actor. The mainnet desk remains pending even though paper practice works. --- # Find your way around Where to trade, read prices and check what's available. Canonical URL: https://docs.useagari.xyz/start/find-your-way Application origin: https://useagari.xyz Reviewed: 2026-09-23 The app's nav leads to **Markets**, **Reels**, **Games**, **Build**, **Explore** and **Portfolio**. Baskets sit under Explore; the desk sits under Build. These docs also explain the sessions, price sources and network boundaries behind those screens. | I want to… | Read the guide | | ----------------------------------------------------- | --------------------------------------------------------------- | | Get the Android or iPhone app | [Get the app](/start/mobile-app) | | Make an Up or Down call | [First trade](/trading/first-trade) | | Understand my balances and claims | [Portfolio](/trading/portfolio) | | Explore a PreStocks group | [Baskets](/trading/baskets) | | Draft a practice desk | [Build a desk](/agents/desk) | | Understand tUSDC and Trading Balance | [Balances](/trading/balances) | | Know when the next Window lists | [Sessions and lanes](/trading/sessions-and-lanes) | | Trade before the market opens | [Pre-open calls](/trading/pre-open-calls) | | Short a stock, PreStocks name or basket | [Short a fall](/trading/shorts) | | Understand a halt or a void | [Halts and voids](/trading/halts-and-voids) | | See how the programs and services fit together | [Architecture](/architecture/overview) | | Check the program ids and instructions | [Programs](/architecture/programs) | | See where prices come from | [Price sources](/architecture/price-sources) | | See how PreStocks and Pyth are used | [PreStocks and Pyth in Agari](/architecture/prestocks-and-pyth) | | Ask about a live Window | [Sensei](/explore/sensei) | | Read market headlines | [News](/explore/profile-news) | | Read and post community calls | [Reels and takes](/explore/reels) | | Check a Window's Room and price alerts | [Rooms and alerts](/explore/rooms-alerts) | | Check what needs a wallet, a key or a running service | [Availability](/help/availability) | | Check service health | [Status](/help/status) | | Look up a term | [Glossary](/help/glossary) | The [five baskets](/trading/baskets) each offer Predict and, when you hold at least two members, Cover on devnet. Hold opens the [desk studio](/agents/desk), where anyone can draft before connecting a wallet. For the current state of each lane and its prerequisites, see [availability](/help/availability). ## Choose light or dark [#choose-light-or-dark] Use the sun/moon control in the header. Your choice is saved on this device; the app follows your system preference until you choose one. ## Share the right page [#share-the-right-page] Use the app's own share controls for a specific market. The public How it works, Demo and Pitch pages explain the product. These docs give the task-by-task instructions. Use Status if a live feature looks unavailable. --- # Get the app Agari on Android and iPhone: the APK, TestFlight, and what the phone app does differently. Canonical URL: https://docs.useagari.xyz/start/mobile-app Application origin: https://useagari.xyz Reviewed: 2026-09-23 Agari has a native app for Android and iPhone. It is the same product as the website, on the same Solana devnet Windows, laid out for a phone. ## Android [#android] QR code that downloads the Agari APK Scan the code with your phone's camera, or download the APK directly: [agari-0.1.1.apk](https://github.com/Blockchain-Oracle/agari/releases/download/android-v0.1.1/agari-0.1.1.apk) (version 0.1.1, 59.1 MB, for arm64 Android phones, from the [GitHub release](https://github.com/Blockchain-Oracle/agari/releases/tag/android-v0.1.1)). 1. Download the file on your Android phone. 2. Open it, and allow installs from this source when Android asks. 3. Open Agari and connect a wallet, or practise first. To check the file, compare its SHA-256 with: ``` 7a3d4f2711f0a4dbe4aa6f68fecfe5a8f2de5798a548f8acccaea5434d28901f ``` Run `sha256sum agari-0.1.1.apk` on Linux, `shasum -a 256 agari-0.1.1.apk` on a Mac, or `certutil -hashfile agari-0.1.1.apk SHA256` on Windows. ## iPhone [#iphone] Join the [public Agari TestFlight beta](https://testflight.apple.com/join/g3MnDrr7) on your iPhone to install the native app. You can also open [useagari.xyz](https://useagari.xyz) in Safari and add it to your Home Screen. ## Connecting a wallet [#connecting-a-wallet] | Choice | How it works | | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | Phantom, Solflare | The app opens the wallet to approve, then returns to Agari. | | Android wallet | Android's Mobile Wallet Adapter lets you choose any installed Solana wallet. | | Practice wallet | A devnet-only key created on this phone and kept in its secure storage. It never leaves the device and is not restored from a backup onto another phone. | Set your wallet to Solana devnet first; [Wallet](/start/wallet) explains why and how. ## What is different on a phone [#what-is-different-on-a-phone] * **A first-run walkthrough.** Four short screens explain a Window, how it settles, the games and test funds. * **Bottom drawers.** The Up/Down ticket, Add funds and your account rise from the bottom of the screen, and the ticket shows its receipt in place. * **One-tap trading.** Arm tap trading once with a wallet signature, and the app signs calls within your limits from a key kept on the phone. [Tap trading](/trading/tap-trading) covers the limits. * **Notifications.** Turn them on from Activity to hear about fills, results and payouts, with a Live Activity for a Window you are in. * **Pull to refresh** on every page, and full-screen, sideways arcade runs. --- # Make your first call Go from browsing to a settled result with devnet test funds. Canonical URL: https://docs.useagari.xyz/start/quickstart Application origin: https://useagari.xyz Reviewed: 2026-09-23 A call is a prediction about a listed price during a **Window**: one asset, one open, one close, one cadence (5m, 15m or 60m for stocks during NYSE hours; one hour around the clock for tokenized stocks, PreStocks names and baskets; the whole weekend for the Monday Gap). Choose Up or Down, pay the amount shown, then wait for the closing print to settle it. Agari runs on **Solana devnet**. Trading collateral is **tUSDC**, a devnet test token with no market value. You can browse Markets and read every price without a wallet. ### Connect your wallet [#connect-your-wallet] Open Markets and choose **Connect**. Agari uses the Wallet Standard, so Phantom, Solflare and Backpack all work the same way — approve the connection in your wallet. If the app shows the wrong network, switch to **Solana devnet**. Connecting lets the app see your address. It does not place an order. ### Get devnet funds [#get-devnet-funds] Open **Get test funds** in the header or Portfolio. The faucet mints devnet SOL (for network fees) and tUSDC (for trading) to your wallet in one flow — the app's own faucet route posted both a SOL top-up and a 10,000-tUSDC mint in a single confirmed devnet transaction during testing, with no separate external faucet needed. [Wallet setup](/start/wallet) covers what to do if a claim is rate-limited. ### Choose a Window and a side [#choose-a-window-and-a-side] Pick a ticker and a live Window. **Up** wins when the settlement print is at or above the opening print; **Down** wins otherwise (a tie goes to Up — stocks tick to the cent, so exact ties happen more than they would on a continuous price). Start with an ordinary wallet order at 1× before trying a pre-open call or a longer Window. ### Review and place [#review-and-place] Enter your stake and side. Depending on what's resting on the book, your order fills one of four ways: it trades directly against an opposite order at that order's price, or it mints or burns a complete Yes/No pair against a matching taker on the other side. All four pay out exactly the same way at settlement — the fill path only changes who's on the other side of your trade, never the payout rule. A **Normal** order rests if it doesn't fully fill; **IOC** and **FOK** never rest; **PostOnly** never takes — useful for a pre-open call, covered in [Pre-open calls](/trading/pre-open-calls). ### Watch and collect [#watch-and-collect] Open Portfolio to watch the Window. When it closes, the venue records a signed price print, verifies it on-chain, and settles the Window — or voids it honestly (0.5/0.5 back) if a print never arrived or two price sources disagreed past the allowed divergence. Either way, claim your result from Portfolio; nothing pays out automatically into your wallet. [Your first call, in full](/trading/first-trade) covers partial fills, resting orders and what a void actually looks like. [What is available](/help/availability) explains which parts of the app need a wallet, a deployed program, or a running service — and which are read-only right now. --- # Wallet and devnet funds Connect a Wallet Standard wallet, get devnet SOL and tUSDC, and recover from a stuck connection. Canonical URL: https://docs.useagari.xyz/start/wallet Application origin: https://useagari.xyz Reviewed: 2026-09-23 Agari connects through the **Wallet Standard**, the shared interface Phantom, Solflare and Backpack all implement — there is no embedded/social-login wallet and no separate connector package per wallet. Connecting one of these on the header's **Connect** button is the same flow every time: approve the connection, then approve individual transactions as you place orders. ## Which wallets work [#which-wallets-work] Phantom is the wallet used in the app's own first end-to-end devnet test, and is the one most contributors run day to day. Solflare and Backpack implement the same standard and are expected to work the same way; if one behaves differently, that's worth reporting rather than assuming. ## Wrong network [#wrong-network] For **Predict**, **Cover** and Trading Balance, set your wallet to **Solana devnet**. If it is on another cluster, the app's balances or connection state will not match the devnet venue. The [desk](/agents/desk) is a different path: practice signs a message without a transaction; a later Go live step would use Solana mainnet and real funds. ## Devnet SOL and tUSDC [#devnet-sol-and-tusdc] Two different things pay for two different jobs: * **Devnet SOL** pays Solana network fees. It has no value; it exists only so your wallet can sign and send transactions on devnet. * **tUSDC** is Agari's devnet test collateral — a 6-decimal SPL token minted by a faucet authority with no freeze authority, used to size every call, ticket and pre-open order. Use **Get test funds** in the header or Portfolio to request both in one flow. If a claim doesn't land, check Status for the faucet role's health before retrying — devnet faucets are rate-limited per wallet. ## Disconnecting and switching accounts [#disconnecting-and-switching-accounts] Disconnect from the same account menu you connected from. Switching accounts in your wallet extension while connected should be picked up automatically; if the app still shows the old address, reconnect explicitly. ## If a signature prompt never resolves [#if-a-signature-prompt-never-resolves] A hung prompt is usually the wallet extension, not the app. Close the prompt, refresh, and try again before assuming an order was placed — a wallet signature alone does not mean an order filled; check Portfolio or the transaction's explorer link for the actual result. --- # tUSDC and Trading Balance What your test collateral is, and what the Trading Balance vault adds on top of it. Canonical URL: https://docs.useagari.xyz/trading/balances Application origin: https://useagari.xyz Reviewed: 2026-09-23 ## tUSDC is devnet test collateral [#tusdc-is-devnet-test-collateral] Every stake, ticket and pre-open order on Agari is sized in **tUSDC**: a 6-decimal SPL token minted by a faucet authority with no freeze authority. It has no market value — it exists only so devnet trading has a consistent unit. Get some from **Get test funds** in the header or Portfolio; see [Wallet and devnet funds](/start/wallet) for the exact flow. An ordinary wallet order escrows tUSDC straight from your wallet's token account for the life of the order, and returns it to your wallet (or pays out the settled result there) once the position closes. ## Trading Balance [#trading-balance] Trading Balance is a separate pool of tUSDC held in `agari-vault`, Agari's Trading Balance and bounded-grants program, rather than sitting directly in your wallet's token account. Depositing into it is one signature; withdrawing back to your wallet is another. Its purpose is [tap-trading](/trading/tap-trading): once funded and once you've granted a session key, further orders don't need a new wallet popup for every trade. Nothing about Trading Balance changes how a position settles — the settlement rule (Up if close ≥ open, void 0.5/0.5 if a print never arrived or two sources disagreed) is identical whether the stake came from your wallet directly or from this balance. It only changes where the money sits before and after a trade, and who can sign an order against it (you, or a session key your wallet granted, capped and revocable). ## Depositing and withdrawing [#depositing-and-withdrawing] Deposit moves tUSDC from your wallet into the vault account; withdraw moves it back. The Trading Balance panel in Portfolio gives **Deposit** and **Withdraw** equal weight, with one amount field and a **Max** button. The field says in red when the amount is not a number or is more than your wallet holds, and its starting amount never asks for more than the wallet has. If the wallet is short of devnet SOL for the fee, the panel re-checks on its own every 12 seconds and clears the warning once the fee is covered. The Private balance uses the same controls. Withdrawal only pays to a token account you own — nothing here can redirect your funds elsewhere. See [Portfolio](/trading/portfolio) for where a Trading Balance position shows up once it settles. --- # Baskets Five PreStocks groups, one-hour Up/Down Windows, and three different actions. Canonical URL: https://docs.useagari.xyz/trading/baskets Application origin: https://useagari.xyz Reviewed: 2026-09-23 Baskets groups the eight supported PreStocks names into five choices. Each basket is an **equal-weight price-return index**: it started at 1,000 points at a frozen set of base prices on 22 September 2026. The app reads all members in one PreStocks catalogue fetch; a missing member means no index print. The points are an index level, **not a dollar price or a token you buy**. | Basket | Members | | ------------------------------- | --------------------------------------- | | AI Labs (`AILABS`) | OpenAI, Anthropic | | Frontier AI (`FRONTIER`) | OpenAI, Anthropic, Figure AI, Neuralink | | Prediction Markets (`PREDMKTS`) | Kalshi, Polymarket | | Defense & Space (`DEFSPACE`) | Anduril, SpaceX | | All PreStocks (`PREALL`) | All eight names | Each card keeps the same rows whatever loads or rolls: the members as a stack of logos with their count ("2 companies · equal weight"), the index in points with its recent range and its move this week, and the live Window with its countdown and Up and Down prices in cents. A Window nobody is quoting says **No quotes yet**. Basket Windows trade 24/7, so a card never shows the stock market's session. ## Pick the action you mean [#pick-the-action-you-mean] | Action on the card | Where it goes | Money and network | | ------------------ | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | **Predict** | The basket's one-hour Up/Down Window, or its ticker page if none is trading | tUSDC test money on Solana devnet | | **Cover** | A Down call against a basket when the connected wallet holds at least two of its members; one member uses its own name | tUSDC test money on Solana devnet | | **Hold** | The [desk studio](/agents/desk) with that basket preselected | Starts as a paper practice desk; a later Go live flow would use real USDC and PreStocks on Solana mainnet | The basket Window settles on the change in **points** between two signed boundary prints. The venue's price attestor signs an index built from the one catalogue read. That is a venue-attested PreStocks value, not an independent Pyth check. Agari's first five basket Windows printed both boundaries and settled on devnet on 22 September 2026; the [source map](/builders/source-map) points to the implementation and evidence. If the card says **No Window trading right now**, you can still inspect its members and draft a desk. A Predict or Cover order needs a live Window and a quote. ## Preview a connected ticket [#preview-a-connected-ticket] --- # Boost, Parlay and Private Three distinct devnet ticket paths and their settlement rules. Canonical URL: https://docs.useagari.xyz/trading/boost-parlay-private Application origin: https://useagari.xyz Reviewed: 2026-09-23 ## Boost [#boost] In the Markets ticket, choose the **Wallet** route to see 2× or 3× Boost when available. The reserve fronts the rest of the position; your loss is capped at your stake, but the position may knock out before expiry. Review exposure, knock-out line, charge and live quote. Existing Boosts appear in Portfolio, where cash-out, settlement and claim depend on their state. `agari-leverage` enforces this path on devnet. A private or Trading Balance ticket cannot be boosted. ## Parlay [#parlay] At Parlay, combine two or three Window legs into one ticket. Every leg must win for the combined payout; one miss loses the ticket. A venue void can void the ticket under the program's rules. The quote accounts for legs that share a closing print, and `agari-parlay` prefunds the maximum payout. Read all legs, the final quote and reserve availability before signing; follow the ticket through settlement and claim on the same route. ## Private [#private] Private is a separate **1×** route inside the Markets ticket. It has its own devnet balance and claim flow in Portfolio, backed by `agari-private`. Check the ticket's funding and recovery instructions before placing and keep the wallet used for the claim. A Private bet cannot use Boost. The presence of Private in a selector does not by itself confirm that the route is usable on the current deployment. All three use test tUSDC on **Solana devnet**. For the ordinary order book and its opening and closing prints, see [Place a trade](/trading/first-trade). --- # Earn from the four reserves Choose a devnet reserve, read its shares and risk, and withdraw what is idle. Canonical URL: https://docs.useagari.xyz/trading/earn Application origin: https://useagari.xyz Reviewed: 2026-09-23 Earn has four devnet tUSDC reserve tabs. Each has its own shares, exposure and withdrawal capacity. Supplier capital is at risk; none of the tabs promises a fixed yield. These positions are separate from your [Trading Balance](/trading/balances) and from the [desk](/agents/desk). | Tab | What supplier capital backs | What may keep it committed | | ---------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | Maker vault | Bids and asks resting on Agari's Window books; spread earned and inventory losses change share value. | Quotes or one-sided inventory on live Windows. | | Range & Moonshot | The reserve takes the other side of prefunded band and target tickets. | Potential payouts until each closing print resolves. | | Parlay | The reserve funds combined Window tickets. | Maximum payouts until the last leg resolves. | | Boost | The reserve fronts capital for boosted positions and charges a premium. | Fronted capital until positions close, knock out or settle. | 1. Connect a devnet wallet and select the reserve you mean. Inspect its value, utilization, risk text and active commitments before entering a tUSDC amount under **Supply**. 2. Review the wallet transaction. The position view shows your shares, share price, realized return and current paper value separately. 3. Use **Withdraw** to take the idle part back. Committed capital remains until its Window, round, ticket or Boost resolves. The maker tab can settle a closed Window before withdrawal. The maker tab's Windows table shows quotes resting, paired sets, one-sided inventory and settlement. The other tabs show their reserve bounds and committed capital instead. When new deposits are paused, existing positions continue settling and idle withdrawals remain available. Read the **selected tab's** live state before signing: deployment evidence does not guarantee that quotes are running or that a particular amount is withdrawable. The tabs use `agari-maker`, `agari-range`, `agari-parlay` and `agari-leverage` respectively. [The Solana programs](/architecture/programs) maps their devnet addresses. Current pool capacity belongs to the live app, not to a dated receipt. --- # Place an Up or Down trade Order types, the four fill paths, and how a Window settles or voids. Canonical URL: https://docs.useagari.xyz/trading/first-trade Application origin: https://useagari.xyz Reviewed: 2026-09-23 A Window is the unit of trading: one ticker, one cadence, one opening print and one closing print. Every call resolves to Up or Down against those two prints — nothing else decides the outcome. ## Order types [#order-types] * **Normal** — rests on the book if it doesn't fully fill immediately; if the order's fill budget runs out while it could still cross, the unfilled remainder cancels rather than resting mid-cross. * **IOC** (immediate-or-cancel) — fills what it can right now and cancels the rest; reverts if it fills nothing at all. * **FOK** (fill-or-kill) — reverts unless it fills completely. * **PostOnly** — never takes; it reverts if it would cross the book immediately. This is the only order type allowed on a Window that hasn't opened for trading yet — see [Pre-open calls](/trading/pre-open-calls). Every order also carries an expiry no later than the Window's lock time, and a self-match rule (cancel the taker side or the resting maker side) so you can't trade against yourself by accident. ## How a fill actually happens [#how-a-fill-actually-happens] The engine matches on price and time, and every fill lands as one of four kinds, depending on what's resting on the other side: | You place | Matches against | What happens | | --------- | --------------- | ------------------------------------------------- | | Buy Up | Sell Up | You buy Up directly from a seller | | Sell Down | Buy Down | You sell Down directly to a buyer | | Buy Up | Buy Down | A complete Up+Down pair is minted between you two | | Sell Down | Sell Up | A complete Up+Down pair is burned between you two | All four pay out by the identical rule at settlement — Up wins if the close is at or above the open, Down wins otherwise. The fill path only changes who ends up on the other side of the position, never what a winning or losing position is worth. A fill always executes at the resting order's price; if you paid more than that price as a taker, the difference is refunded. If your stake is more than the book can fill right now, the ticket says so and offers **Use …, all the book can fill** to resize the order to what is resting. A Window nobody is quoting reads **No quotes yet**. ## How a Window settles [#how-a-window-settles] Once the Window's close time arrives, the venue needs a verified price print for both the open and the close before it can pay anyone out: * **Settles Up or Down** once both prints exist and (for tickers with a cross-check) they agree closely enough. A real devnet drive produced exactly this: TSLA's Pyth print and its RedStone cross-check agreed within tolerance, and the Window settled Up. * **Voids `MissingPrint`** if a required print never showed up in time — everyone gets 0.5 back per lot (their stake, not a loss) plus their seat bond. A real devnet drive produced this too: an NVDA Window with no price posted voided honestly rather than settling on a guess. * **Voids `CrossCheckDivergence`** if a ticker has two price sources and they disagree past the allowed tolerance — same 0.5-back treatment. A real devnet drive produced this for a test ticker whose attested price landed about 1% away from its RedStone check. See [Halts and voids](/trading/halts-and-voids) for the honest labels the app uses for each of these, and every one of these transactions with its explorer link in the repository's `docs/evidence/acceptance.md`. ## Claim your result [#claim-your-result] Open Portfolio when the Window shows a result. You can claim a pending payout yourself; after the grace period, the settler's automatic redemption job pays any remaining seat to its owner. History shows **Paid automatically** and the payout receipt when that happens. A manual claim also remains possible after the Window itself has been cleaned up on-chain, while the claim is still pending. --- # Halts and voids What it means when a Window can't settle cleanly, and what you get back. Canonical URL: https://docs.useagari.xyz/trading/halts-and-voids Application origin: https://useagari.xyz Reviewed: 2026-09-23 Most Windows settle cleanly: both the opening and closing print show up, and (for tickers with a cross-check source) they agree closely enough. When that doesn't happen, Agari voids the Window rather than guessing — a void pays back 0.5 per lot on every side, plus the seat bond, so nobody is worse off for a price problem that wasn't theirs. ## The two void reasons [#the-two-void-reasons] * **`MissingPrint`** — a required signed price never arrived within the admission window. The app labels this "Signed price stale" rather than "Trading halted," since there's no licensed exchange-halt feed behind it; it just means nobody posted a verifiable price in time. A real devnet drive produced exactly this for an NVDA Window with no prints posted. * **`CrossCheckDivergence`** — for a ticker with two configured price sources (TSLA, during the Pyth trial), the two prints disagreed by more than the allowed tolerance at either boundary. A real devnet drive produced this too, for a test ticker whose attested price landed about 1% away from its RedStone check — the two sources disagreed, so the Window voided rather than picking one arbitrarily. ## "Trading halted" vs. "Signed price stale" [#trading-halted-vs-signed-price-stale] The app only shows **"Trading halted"** for a real exchange-wide or issuer-specific halt signal (a `pyth-wide` or `issuer-halt` condition) — Agari doesn't have a licensed halt feed to call every missing print a "halt." Everything else that keeps a Window from settling on time shows the more accurate "signed price stale" label instead. ## What you get back from a void [#what-you-get-back-from-a-void] Both sides get 0.5 per lot back — your original stake, treated as a wash, not a loss — plus your seat bond. It settles from a `MissingPrint` or `CrossCheckDivergence` result the same way a normal Up/Down Window settles from a real print: claim it from Portfolio once the void is recorded. --- # Portfolio Read your open and settled positions, and claim what you're owed. Canonical URL: https://docs.useagari.xyz/trading/portfolio Application origin: https://useagari.xyz Reviewed: 2026-09-23 Portfolio is where a position's life ends up, whichever way you placed it: an ordinary wallet order, a pre-open call resting until the bell, or a tap-trading fill through your Trading Balance session key. ## Open positions [#open-positions] An open position sits on a live Window. If your order is still resting rather than filled, it shows there too — cancel a resting order any time before the Window locks, and get your escrow back immediately. ## Settled positions [#settled-positions] Once a Window closes and settles (or voids), its positions move into a claimable state. A winning position pays out by the settled ratio; a losing position pays nothing; a voided Window returns 0.5 per lot regardless of side, because nobody could tell what actually happened. You can **Claim** while a payout is pending. If it remains unclaimed, the venue's automatic redemption job pays it after a short delay; History then marks it **Paid automatically** with a transaction receipt. Check the row before trying to claim again. ## Trading Balance vs. a plain wallet position [#trading-balance-vs-a-plain-wallet-position] A position funded straight from your wallet and a position funded through your **Trading Balance** (the `agari-vault` account tap-trading uses) both show up here, but they behave a little differently: a Trading Balance position's proceeds land back in that balance, not your wallet, until you withdraw. See [Balances](/trading/balances) for what the Trading Balance actually is and [Tap-trading](/trading/tap-trading) for how a session key places orders from it without a wallet popup each time. ## If a claim looks stuck [#if-a-claim-looks-stuck] Check the transaction's own status before assuming something is wrong — a signature can confirm without the intended effect landing exactly when you expect, especially right after a Window closes and its settlement transaction is still confirming. Status shows whether the settler and price-relay roles are running. --- # Pre-open calls Rest a call on a Window before it opens for trading; taker orders are refused until the bell. Canonical URL: https://docs.useagari.xyz/trading/pre-open-calls Application origin: https://useagari.xyz Reviewed: 2026-09-23 Because Windows are prelisted ahead of time (see [Sessions and lanes](/trading/sessions-and-lanes)), you can place a call before the market — or the Monday Gap, or a Window's own trading start — actually opens. This is a **resting**, post-only call, not an instant trade: nothing fills before the Window's trading start, by design. ## Where to schedule one [#where-to-schedule-one] While the stock market is closed, the `/markets` board lists each company's next Windows under **Schedule a call**. Choose a Window length, then **Call Up** or **Call Down** to open the pre-open ticket at your price. On Short, a stock Window that opens later offers **Schedule a Down call** on the same terms. ## How it works [#how-it-works] A Window before its trading start is in a **Listed** state. In that state, the venue only accepts **PostOnly** orders — an order that rests on the book rather than taking. A taker-type order (IOC, FOK, or a Normal order that would cross immediately) is refused outright with a `PreOpenTakerRefused` error, so nobody can jump the queue by trading against a resting pre-open call before the bell. ## What happens at the open [#what-happens-at-the-open] Once the Window opens for trading, resting pre-open calls become ordinary resting orders: the venue's own seed maker or any other trader can fill them at their resting price, same as any other order on the book. * **Default expiry:** a scheduled call expires 90 seconds after the trading start if nothing has filled it — "fills within the first minute after the bell, or your stake returns." This is the default so a stale call from hours earlier doesn't linger unexpectedly. * **Resting until the lock** is available as an explicit opt-in, if you'd rather leave the call open for the whole Window instead of just the first minute. ## What's guaranteed and what isn't [#whats-guaranteed-and-what-isnt] * Nothing fills before the open boundary — that's enforced by the program, not just the UI. * No fill is promised. A pre-open call is an offer at your price; it fills only if the book comes to it. * If the Window voids for any reason, an unfilled pre-open call loses nothing — cancel it any time before it fills, and the escrow (plus the seat bond) comes straight back. --- # Read a Window's proof Trace its opening and closing prints, policy source, and on-chain recording transactions. Canonical URL: https://docs.useagari.xyz/trading/proof Application origin: https://useagari.xyz Reviewed: 2026-09-23 Proof lists settled Windows. Start with a ticker or filter by source, then open a row. The page shows the **opening** and **closing** boundary values, their recording transactions and the policy used to accept them. The program settles from these recorded values, not the latest display price. ## Check the units and source [#check-the-units-and-source] Equity and individual PreStocks token prints are prices; a basket print is an **index in points**. In this AI Labs example, the PreStocks catalogue supplied both members in one read and **Agari's attestor** signed the calculated index. That is different from a Pyth-signed update. Use the [price-source map](/architecture/price-sources) to see each verification path. An absent archived source package should be treated as unavailable evidence even if the on-chain print and recording transaction are present. --- # Range and Moonshot Two prefunded outcomes decided by a Window's closing print. Canonical URL: https://docs.useagari.xyz/trading/range-and-moonshot Application origin: https://useagari.xyz Reviewed: 2026-09-23 Range asks whether the closing price will land **inside or outside** a band you set. Choose a live Window, move the band or its width, choose a side, and inspect the quoted stake and payout before placing. A narrow band may pay more, but the quote comes from the venue book and its measured movement, so read the actual ticket rather than assuming a fixed multiple. Moonshot asks whether the close reaches a level. Choose long or short and a target multiple; the reserve solves the strike from the live basis. The ticket shows the strike, stake, payout, and expiry budget before you sign. Long pays at or above its level; short pays at or below its level. Both modes use the `agari-range` devnet program and the same verified closing print as the underlying Window. The reserve sets aside the full potential payout at placement. After resolution, use **Your rounds** to settle or claim. A void returns the stake; a missed outcome loses it. A live Window, usable quote and reserve capacity are required, so the route can be present while placement is unavailable. For an ordinary Up/Down call, see [Place a trade](/trading/first-trade). For program status, see [The Solana programs](/architecture/programs). --- # Sessions and lanes Regular NYSE-hours Windows, the Monday Gap, and the lanes that trade around the clock. Canonical URL: https://docs.useagari.xyz/trading/sessions-and-lanes Application origin: https://useagari.xyz Reviewed: 2026-09-23 Agari lists Windows in different lanes, because a stock doesn't trade the same way around the clock. ## Regular (NYSE hours) [#regular-nyse-hours] Nine tickers (TSLA, NVDA, AAPL, MSFT, META, AMZN, GOOGL, QQQ, VOO) each list 5-minute, 15-minute and 60-minute Windows while the market is open, as long as a registered price source covers the Window (see [price sources](/architecture/price-sources)). The app shows the session as a plain word rather than a raw status code: Pre-market, Open, Early close, Halted, After hours, Closed, Weekend or Holiday. The next open or close is named in **your own clock** with the ET time beside it and a countdown, for example "Pre-market · opens 14:30 (09:30 ET), in 4h 04m" for a reader in UTC+1. ## Monday Gap [#monday-gap] One Window spans the whole weekend: it opens on Friday's 16:00 ET close print and settles on the following Monday's 09:30 ET open print. This is the lane for a view that only matters over a gap a normal intraday Window can't span — earnings after Friday's close, a weekend news cycle, and so on. It lists Friday afternoon and locks at the open, so a call has to be placed (or rested — see [Pre-open calls](/trading/pre-open-calls)) before Monday's bell. ## 24/7 lanes [#247-lanes] Three kinds of one-hour Window trade around the clock, including weekend evenings and market holidays: | Lane | Names | Price source | | -------------------------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------- | | Tokenized stocks (xStocks) | TSLAx, NVDAx, SPYx, QQQx | Switchboard On-Demand quotes, not the NYSE tape | | PreStocks | OpenAI (`OPENAI-60m`) | The PreStocks token price, signed by Agari's attestor | | Baskets | AI Labs, Frontier AI, Prediction Markets, Defense & Space, All PreStocks | An index in points from one PreStocks read, signed by Agari's attestor | Cards on these lanes carry a **24/7** chip (for example "24/7 · pre-IPO" or "24/7 · basket"). [Baskets](/trading/baskets) explains the index, and [PreStocks and Pyth in Agari](/architecture/prestocks-and-pyth) covers the PreStocks lanes. ## When the stock market is closed [#when-the-stock-market-is-closed] `/markets` never goes blank because the bell hasn't rung. It shows the last price, the last full session's chart, and a strip such as "US stocks · After hours · reopens …" with "Pre-IPO names and baskets trade around the clock." The board then splits in two: * **24/7 Windows** keep trading, grouped by how soon they close. A Window nobody is quoting says **No quotes yet** rather than waiting on an empty book, and its ticket names the next Window. * **Stock Windows listed before their bell** sit under **Schedule a call**, one card per company. Pick the Window length, then **Call Up** or **Call Down** opens the pre-open ticket. These cards have no closing countdown and no Yes/No prices, because there is no book to trade against yet. See [Pre-open calls](/trading/pre-open-calls). A Window whose opening print is more than two minutes late (a paused xStock, or a Window that will void) drops off the board and the pickers instead of waiting there. Its own lifecycle is unchanged: it still settles or voids by the program's rules. ## Windows exist before the bell [#windows-exist-before-the-bell] Agari's roller prelists the next session's first Window ahead of time rather than waiting for the exact open — a Regular Window can exist hours ahead, and a Gap Window exists from Friday afternoon. That's what makes it possible to place a call before the market opens at all; see [Pre-open calls](/trading/pre-open-calls) for exactly how that works. --- # Short a fall A Down position the Boost reserve holds for you, marked against the book, with an exit at any time and a knock-out line. Canonical URL: https://docs.useagari.xyz/trading/shorts Application origin: https://useagari.xyz Reviewed: 2026-09-23 Short opens a **Down position the reserve holds for you**. It is marked against the Window's book every second, you can close it at any time without waiting for the bell, and the most you can lose is your stake. It uses the same `agari-leverage` reserve as [Boost](/trading/boost-parlay-private), with **devnet tUSDC** test money. ## Pick what to short [#pick-what-to-short] The picker shows every stock, PreStocks name and basket that has a Window you can enter, as small logo cards (a row of chips on a phone). Each card shows its kind (**Stock**, **Pre-IPO · 24/7** or **Basket · 24/7**), its price and week, and whether it trades now. Filter with **All**, **Stocks** or **24/7**. While the stock market is closed, the names trading now come first; the stocks follow under the session line with the time their Windows open. Choose a name, then a Window length, then a Window. A live Window shows what a dollar of Down costs right now. ## Size and open [#size-and-open] Enter a stake and choose a multiple. Multiples start at **2×**: the reserve fronts the rest of the position and charges a premium on what it fronts, and that premium is inside your stake. The reserve prices the short against its own book before you sign. If the book can take less than your stake, the ticket says how much it takes and offers **Use** that amount. If the book could not take the position back whole, the reserve refuses to open it. A Window that has not opened yet cannot hold a short. Its card says when it opens and offers **Schedule a Down call**, a plain [pre-open call](/trading/pre-open-calls) placed on that Window, not a short. ## Your shorts [#your-shorts] Each open short shows its stake, what it is worth now, its entry and current price, its size, and how far its mark may fall before it reaches its **knock-out line**. The reserve is repaid before you are, so once the book would pay less than the reserve's maintenance share of what it fronted, anyone may close the position. When no bids can mark it, the card says there is no honest mark and no exit rather than showing a number. * **Close** sells the position back into the book and returns what it is worth to your wallet. * After the Window ends, use **Settle** and **Claim** to collect what is owed. * A void pays every contract half its face, so a short opened above 50¢ comes back short of its stake. When the reserve is paused, no new shorts open; live ones still settle, close and knock out. The premium and the maintenance share are the deployed reserve's parameters, so the page reads them from the reserve rather than from this guide. --- # Other ways to trade Earn, Range, Boost, Short, Parlay and Private use their own rules around Agari's devnet venue. Canonical URL: https://docs.useagari.xyz/trading/specialist-tickets Application origin: https://useagari.xyz Reviewed: 2026-09-23 These are separate products in the Agari app, built after the first Up/Down venue. They use **Solana devnet** and test collateral. Their presence in source and the [program map](/architecture/programs) does not mean a particular route has liquidity or a runnable round right now; read its live state before signing. | Route | What changes from an ordinary call | | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | Earn | Supply to one of four reserves: maker, Range & Moonshot, Parlay or Boost. Each has distinct shares, risk and withdrawal capacity. | | Range | Call whether a close lands inside or outside a stated price band. | | Boost in the Markets ticket | A financed position with a knock-out rule; read the price, cost and loss case before signing. | | Short | A Down position the Boost reserve holds and marks against the book, with an exit at any time and a knock-out line. See [Short a fall](/trading/shorts). | | Parlay | Several Window legs become one ticket, subject to each leg's liquidity and settlement. | | Private in the Markets ticket and Portfolio | A separately funded position flow with its own recovery and claim steps. | These routes do not use the [mainnet desk](/agents/desk). For a first transaction, use the [ordinary call guide](/trading/first-trade), then read the actual ticket's review screen and receipt. If a route is paused or unavailable, [Status](/help/status) and [availability](/help/availability) explain the current prerequisites. --- # Tap-trading One signature opens a session key; a capped sponsor role pays the fee after that. Canonical URL: https://docs.useagari.xyz/trading/tap-trading Application origin: https://useagari.xyz Reviewed: 2026-09-23 Tap-trading removes the per-order wallet popup once you've opted in. It's built on `agari-vault`'s Trading Balance and a bounded session-key grant, not a change to how orders themselves work. ## The one-time setup [#the-one-time-setup] A single wallet signature does three things at once: opens your Trading Balance account, deposits the amount you choose, and grants a **SESSION** key — a separate keypair, generated in your browser, that can place orders on your behalf within limits your wallet just approved (a spending cap, an expiry, and which market it can act in). ## Trading after that [#trading-after-that] Further orders are signed by the session key, not your wallet, so there's no popup per trade. A `sponsor` role — a server-held key, never one that can move your funds — co-signs each transaction as **fee payer only**, against an exact allowlist of instructions, after simulating the transaction first. It can never be a transfer source, never the payer of a new account, and never sign as anything but the fee payer. That sponsor role is capped in several independent ways at once (names only — see `web/.env.example` in the repository for the exact defaults): a per-address hourly limit, a per-device hourly limit, per-minute attempt limits before a transaction is even simulated, a per-device daily lamport budget, and a global daily lamport budget with its own circuit breaker. Status shows the sponsor's remaining budget. ## What this doesn't change [#what-this-doesnt-change] * Deposits are never sponsored — funding the Trading Balance in the first place always needs your wallet. * The session key can only place orders within the grant your wallet approved; it cannot withdraw the Trading Balance to itself. * You can revoke the grant at any time; a revoked or expired session key stops working immediately, and whatever is left in your Trading Balance stays exactly where it was. See [Balances](/trading/balances) for what the Trading Balance itself is, and [Portfolio](/trading/portfolio) for where a tap-traded position shows up once it settles.