Monitoring, briefs and watches
Monitoring is read-only. A watch may fetch, compute, save and alert. It may never send to the exchange. If a watch condition implies action ("stop got hit, re-enter"), the alert opens a proposal; the lifecycle does the rest.
Grok Bot routines
Each Bot can own routines (schedules or event triggers). Ask the owning Bot to create one with: schedule and time zone, input source, expected result, approval boundary. Keep routines few and specific; the app keeps only recent run records, so a routine that produces something durable should also write to /workspace/trading-desk.
Recommended starting set (the user picks; none is on by default):
| Routine | Owner | Schedule | Output |
|---|---|---|---|
| Desk brief | Desk Lead | once a day at the user's chosen time | briefs/YYYY-MM-DD-desk.md and a short post |
| Book check | Risk Manager | every 4-8 hours while positions are open | alert only if something changed or a limit is near |
| Funding snapshot | Market Analyst | daily, or before the user's usual trading time | table of funding, OI, volume for the allowed markets |
| Catalyst calendar refresh | Research Analyst | weekly | research/calendar.md |
| Weekly review | Trade Reviewer | weekly | review posted by DM |
The desk brief
Assembled by the Desk Lead from specialists' inputs, or generated by the Desk Lead directly if it is the only Bot awake:
DESK BRIEF | 2026-08-17 07:00 UTC | mainnet | account 0xabc...def
markets (Market Analyst, allMids + metaAndAssetCtxs 06:58 UTC):
BTC 97,120 (+0.8% 24h) | funding 0.0010%/h | OI $4.1B
ETH 3,004 (+0.2%) | funding 0.0012%/h | OI $1.2B
SOL 151.2 (-1.1%) | funding -0.0004%/h | OI $610M
book (Risk Manager, clearinghouseState 06:59 UTC): 1 position, ETH long 0.51 @ 3,000, uPnL +$2.0, margin ratio 4.9%, stop resting 2,900; open risk 0.5%; day PnL 0.0%
research (Research Analyst): ETH client release scheduled 2026-08-19 [link]; nothing breaking on held markets
open items: HG-20260816-01 live; no pending tickets
Facts with sources; interpretation, if any, on one clearly labelled line. No trade suggestions.
Watches
A watch is a condition plus an alert. Two ways to run one on the desk computer:
- Polling with
/infocalls on a short loop from a script under/workspace/trading-desk/watch/(respect rate limits:/inforequests carry weight; a poll every 5-15 seconds per market is plenty for a desk). - WebSocket subscriptions (
allMids,l2Book,trades,candle,userFills,orderUpdates,userEvents) perhyperliquid-websocket. Better for fills and order updates. Keep the process supervised (a routine can restart it) and log to a file.
Common watch conditions:
| Watch | Data | Alert to |
|---|---|---|
| Price crosses a level | allMids or candle | user, Desk Lead |
| Funding flips sign or exceeds a threshold | metaAndAssetCtxs funding / predictedFundings | user, Desk Lead |
| Order filled or cancelled | orderUpdates, userFills | Execution Trader, Trade Reviewer |
| Margin ratio above X or liquidation distance below Y | clearinghouseState | user, Risk Manager, Desk Lead |
| Position without a resting stop | clearinghouseState + frontendOpenOrders | Risk Manager, Desk Lead (incident) |
| Daily loss stop approached (80%) or hit | clearinghouseState vs start-of-day equity | user, Risk Manager |
| Exchange unreachable for more than N minutes | any /info call failing | Desk Lead |
An alert message carries: what fired, the value and the threshold, the source and UTC time, and the proposal id if related. Alerts do not include instructions to trade.
Hygiene
- Every watch script logs to
/workspace/trading-desk/watch/<name>.logwith UTC timestamps. - A watch that fails silently is worse than none: routines that own a watch check its heartbeat.
- Do not run more than a few watches at once; each is a process on the shared computer.
- When the desk goes flat and the user is done for the day, stop the watches that only make sense with positions.
Never
- Never let a watch place, modify or cancel an order, or change leverage. Even a "protective" one. It alerts; the desk acts through a ticket.
- Never alert with unsourced numbers.
- Never poll faster than the desk needs; a rate-limited desk is a blind desk.