<!-- https://zunderlabs.com/docs/faq · Markdown version of the page -->

# FAQ

The questions from the homepage, answered in full, with links to the details.

## Is Zunder Guard available today?

Not yet. Guard is being built.

What exists today is the part that matters most: the risk engine (`zunder-risk`) with sizing from the stop, the daily loss stop and the drawdown halt, and the execution layer (`zunder-exec`) with stops resting on the venue, the journal and the kill switch. They run in Zunder's own trading system on Hyperliquid testnet. What is being built is the proxy that puts them in front of **your** bot: client keys, re-signing, the policy file, packaging.

On the website, Backtest, Watch and the live market run in your browser with the same risk engine compiled to WebAssembly. Until the live data module ships, they show simulated data, labelled as such.

Planned for Guard 1.0: the local Guard, the MCP server, the monitor and the integration guides. See [What Guard is](https://zunderlabs.com/docs) for what each part does.

## How do I add a daily loss limit or a kill switch to my Hyperliquid bot?

Put the check **outside** the bot's own logic. A limit written into the strategy fails together with it: a restart resets counters kept in memory, and a bug can skip the check.

A daily loss limit needs three things:

1. the account's equity at the start of the UTC day;
2. a check before every new order that refuses it once the day's loss reaches your limit;
3. a halt that survives restarts.

A kill switch is the same mechanism pulled by hand: it refuses every new order, and it stays pulled until a person releases it.

**Example.** Day start 2,000, limit 6%. At 1,880 the halt fires. A recovery to 1,910 does not clear it. The next UTC day starts from 1,910.

Guard is built to do this in front of your bot (planned for 1.0). The engine sizes from the smaller of the venue's equity and its own last observation, refuses entries once the day's loss reaches the stop (default 6%), keeps the halt in its journal across restarts, and only a person resumes after the drawdown halt (default 25% below the peak). Details: [Daily loss stop and drawdown halt](https://zunderlabs.com/docs/concepts/circuit-breakers), [Kill switch](https://zunderlabs.com/docs/concepts/kill-switch).

Until Guard ships, [Watch](https://zunderlabs.com/docs/tools/watch) can warn you in the browser when your bot breaks a rule. It cannot block anything.

## Is a Hyperliquid API wallet (agent wallet) safe? What can it do and not do?

Safer than your main key, not harmless.

An API wallet is a separate key that your main wallet approves to trade for your account. It can place, cancel and modify orders and set leverage. It cannot withdraw, transfer funds, approve other keys or approve builder fees.

So a leaked API wallet key cannot take your funds out directly. Whoever holds it can still trade your account into losses: open oversized positions, or buy an illiquid market at a bad price from themselves.

Keep it away from code you do not fully trust. With Guard (planned), the API wallet key stays inside Guard on your machine. Your bot gets a client key that Hyperliquid does not accept, and every order still has to pass your limits. If a key may have leaked, remove that API wallet in the Hyperliquid app and create a new one. More: [API wallets](https://zunderlabs.com/docs/concepts/api-wallets).

## How do I put guardrails on an AI trading agent (MCP)?

Keep the limits outside the agent, and give it tools that cannot break them. A prompt is not a limit: a model can misread a number, loop, or be talked out of an instruction.

Guard 1.0 plans an MCP server (`zunder-guard-mcp`). Its tools read the account and the limits, preview what Guard would allow, place orders with stops, tighten stops, close positions, cancel orders, show Guard's recent decisions, and pull the kill switch. No tool can raise a limit, loosen a stop, change leverage, move funds, resume after a halt or release the kill switch.

It is planned for MCP clients that run local servers: Claude Desktop, Claude Code, Cursor, the OpenAI Agents SDK and LangGraph. ChatGPT's connectors need a server reachable over the internet, so a local Guard does not work there directly. None of it is released yet. Config for each client: [MCP](https://zunderlabs.com/docs/integrations/mcp).

## What is a Hyperliquid builder fee, and how does Guard use one?

A builder fee is a per-order fee that Hyperliquid lets an app add to the orders it sends for you. You approve a maximum once, with your **main** wallet, and can revoke it at any time. Hyperliquid collects the fee with the trade and credits it to the app's builder address. Caps: 0.1% on perps, 1% on spot. At most 10 active approvals per user. (Source: [Hyperliquid docs, Builder codes](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/builder-codes).)

Guard is free to download and self-hosted. The planned model is a builder fee of **0.02%** on the orders Guard sends, shown before you approve it. On a 10,000 USDC order that is 2 USDC. No subscription. Refused orders are never sent, so they carry no fee. More: [Builder fees](https://zunderlabs.com/docs/concepts/builder-fees).

## Does Guard hold my keys or my funds?

No.

- **Funds** stay in your Hyperliquid account.
- **Guard** runs on your machine or your own server, not ours.
- **The only key Guard uses** is an API wallet key that you create, that cannot withdraw, and that stays on your machine. We never see it.
- **Zunder Labs** runs no service that holds a key or can place an order. The planned relay forwards requests and holds no key ([The relay](https://zunderlabs.com/docs/tools/relay)).
- **The website** reads public data only: no wallet connection, no signature, no key.

If you run Guard on a rented server, the platform's operators could in principle read what is on it. See [One-click templates](https://zunderlabs.com/docs/deploy/one-click#before-you-click-who-else-can-read-the-key).

## How much latency does Guard add?

Measured on AWS Graviton (`c7g.4xlarge`), release build, 20,000 rounds: the risk check and sizing take **0.3 µs** at the median. Building and signing the order take **69 µs** at the median and **74 µs** at the 99th percentile.

For scale: Zunder's own host in Frankfurt sees about 0.25 s round trip to Hyperliquid's public API (`docs/decisions.md`, 5 Oct 2026). Guard's 0.07 ms is about 1/3,500 of that.

Not in these numbers yet: the hop between your bot and Guard, and Guard's check of your bot's signature. We will measure and publish both when the proxy exists. The benchmark is in the source; anyone can rerun it. Method: [The latency benchmark](https://zunderlabs.com/docs/methods/latency).

## Which bots work with Guard?

Planned: anything that can point its Hyperliquid client at a custom URL and send its stop together with its entry. Guard speaks Hyperliquid's own API on your machine (`http://127.0.0.1:8547`), so your bot changes one setting and keeps its logic.

Written up, not yet tested: [ccxt](https://zunderlabs.com/docs/integrations/ccxt), [Freqtrade](https://zunderlabs.com/docs/integrations/freqtrade) (with an open problem: it places its stop after the entry), the official [Hyperliquid Python SDK](https://zunderlabs.com/docs/integrations/python-sdk), the community [TypeScript SDK](https://zunderlabs.com/docs/integrations/typescript-sdk) `@nktkas/hyperliquid`, [MCP clients](https://zunderlabs.com/docs/integrations/mcp), and [TradingView alerts](https://zunderlabs.com/docs/integrations/tradingview) through the relay. Each guide is marked verified once tested against a running Guard. Until then, read the list as planned.

## Is the backtest a promise of what Guard would have done?

No. It is a what-if. It replays an address's real trades twice: once as they happened, once behind your rules.

- Skipping or shrinking a trade can change what the bot would have done next. The replay cannot know that, so it keeps the bot's later decisions as they were.
- Prices, fees and funding come from the real history. No price is invented.
- A loss is capped at a stop only where the bot had one.
- Equity is realised: a loss inside an open trade shows when it closes.
- Results include fees and funding as Hyperliquid recorded them.

The full list is next to every result. More: [Backtest](https://zunderlabs.com/docs/tools/backtest), [How the honest backtest works](https://zunderlabs.com/docs/methods/honest-backtest).
