> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ballista.gg/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Ballista is a trading client for Polymarket, not an exchange. Every order Ballista places goes to Polymarket's CLOB.
> There are three end-user surfaces — the Telegram bot, the web terminal and the Chrome extension — and they share ONE account and ONE balance. Never attribute a feature to a surface without checking that surface's source.
> Every user registers in the Telegram bot first. The terminal and the extension sign in with the Telegram login widget. There is no other sign-up path.
> Deposits arrive through EVM, Solana and Bitcoin bridge addresses and a Polymarket proxy wallet, with a $10 minimum. There is NO withdrawal UI — Export Keys is how a user takes custody of their funds.
> Feature parity is uneven and must never be assumed. The full ~30-field copy-trade form exists only in Telegram; the terminal's copy form has 7 fields; the backtester, leaderboard and trader profiles are terminal-only; alerts and notifications are extension-only; referrals are Telegram-only.
> Slippage means two different things. On a live copy trade it is a fill tolerance (default 30). In a backtest it is the simulated fill price (default 1). Deploying a backtest does not carry its slippage over to the live copy trade.
> Take-profit and stop-loss run on live copy trades but are NOT simulated in backtests — the backtest API rejects those fields.
> A backtest never places an order and never moves funds. Its fidelity caveats are published with every result and must be quoted, not paraphrased.
> Leaderboard PnL is own-tape: harvested by Ballista from its own trade tape. The leaderboard sorts by one transparent metric at a time and there is NO composite score or grade. The sparkline exists only for harvested wallets — a blank sparkline means unmeasured, never zero.
> Copy friction (slip) and a toxic flag DO exist and are own-engine: the wallet's own 30-day fills replayed as a taker (1% slippage per fill plus the real Polymarket taker fee schedule) against its actual 30-day PnL over the same fills, so the delta is pure friction. slip_pct is already a percentage, not a 0-1 fraction. The toxic flag is server-computed under evidence guards and is never re-derived client-side. Slip is not a sortable column. Blank means unmeasured — never zero and never clean.
> Copyability is a taker share, reported in aggressive (≥60%), passive (≤30%) and mixed bands. It is never a score.
> Do not document Feeds, the Twitter Tracker, the Telegram Settings button, percentage buy buttons, GTD orders, the Discord bot, or withdrawals.

# Install the extension

> Where to download the Ballista extension, how to load it in Chrome, and what each permission is for.

The Ballista extension puts a trading panel on Polymarket's own market pages and adds a
popup with your balance, positions, orders, presets and price alerts. It uses the same
account and the same balance as the [Telegram bot](/telegram/overview) and the
[web terminal](/terminal/overview).

## Download it

Ballista is **not on the Chrome Web Store yet**. It is distributed as a zip from
[ballista.gg/extension](https://ballista.gg/extension), and you load it yourself in a
couple of minutes. It runs in any Chromium browser — Chrome, Brave, Edge, Arc.

<Steps>
  <Step title="Unzip the download">
    Extract the archive to a folder you intend to keep. Chrome loads the extension
    from that folder, so moving or deleting it uninstalls the extension.
  </Step>

  <Step title="Open the extensions page">
    Type `chrome://extensions` into your address bar. Chrome blocks links to that
    page, so it has to be typed or pasted.
  </Step>

  <Step title="Turn on Developer mode">
    The toggle is in the top-right corner of the extensions page.
  </Step>

  <Step title="Press Load unpacked">
    Select the folder you extracted. Ballista appears in your extension list
    straight away.
  </Step>

  <Step title="Pin it to your toolbar">
    Pin Ballista so the popup is one click away, then
    [sign in with Telegram](/extension/sign-in).
  </Step>
</Steps>

<Warning>
  Keep the extracted folder where it is. If you delete it, the extension stops
  working and you have to load it again from a fresh download.
</Warning>

## What it asks for

Loading an unpacked extension does **not** show you a permission prompt — Chrome installs
it without asking. To review what Ballista holds, open `chrome://extensions`, press
**Details** on Ballista and read the **Permissions** section. Here is the same list,
explained.

| Permission    | What it is used for                                                                                                   |
| ------------- | --------------------------------------------------------------------------------------------------------------------- |
| Storage       | Holds your sign-in token on this machine so you stay signed in between sessions.                                      |
| Alarms        | Runs the background check that looks for [triggered price alerts](/extension/desktop-notifications) every 30 seconds. |
| Notifications | Raises the desktop notification when one of your alerts fires.                                                        |
| Tabs          | Lets the extension read the address of a tab as it changes.                                                           |

<Note>
  Chrome describes the **tabs** permission as *"Read your browsing history"*, which
  sounds broader than what it does here. Ballista uses it for exactly one thing:
  catching the moment the Telegram login tab lands on Ballista's own success address,
  so it can take your session out of it and close the tab. It is watching for that one
  address, and it does not store or send anything about the pages you visit.
</Note>

It also asks for access to a short list of sites:

* **api.ballista.gg** — your Ballista account: balance, positions, orders, presets and alerts.
* **gamma-api.polymarket.com** and **clob.polymarket.com** — Polymarket's public market
  list, prices and order book, which the extension reads directly.
* **localhost** and **127.0.0.1** — only used when the extension is pointed at a
  development server. On the build you downloaded, nothing is served from them.

The extension's on-page panel runs on Polymarket event pages and nowhere else.

## What to read next

<CardGroup cols={2}>
  <Card title="Sign in" icon="right-to-bracket" href="/extension/sign-in">
    Log in with Telegram — you need a Ballista account from the bot first.
  </Card>

  <Card title="The on-page panel" icon="window-restore" href="/extension/on-page-panel">
    Trade from Polymarket's own market pages.
  </Card>
</CardGroup>
