Your executor tells you what happens on the channels you give it: a Discord channel through a webhook, or a Telegram chat through a bot of your own. Channels are in Settings, under Notifications. An executor takes at most 10.

Add a channel

Discord. In the Discord channel’s settings, open Integrations, then Webhooks, create one and copy its URL. Paste it in Webhook URL, then Add Discord. Only Discord’s own webhook addresses are taken. Telegram.
  1. In Telegram, ask @BotFather for a new bot (/newbot) and copy the token it gives.
  2. Open your bot and send it any message, so it knows your chat.
  3. Paste the token in Bot token, then Find my chat, then Add Telegram.
Send a test sends one message to the channel, to check it works. For a channel that takes status reports, Send a sample report sends the report itself (below). A bot token and a webhook address stay in your executor’s database. The front never shows them again, and no route returns them. Links in your messages. Under the channels, set Your front’s address to where you open your executor. Each message’s title then links to its strategy’s page. Without it, titles stay plain text; markets still link to their venues.

What a channel receives

Each channel has its own switches, beside Receives. The icon beside each one says what it carries. Switch off what’s too much: Orders and Activity are the busy ones. How much a message asks of you shows before you read it. On Discord, by its colour bar: A Discord channel can name a Role to mention. Only alerts that need action now mention it: an emergency close, a pause by a rule, a failed margin move. What you do yourself from the front never mentions anyone. An order whose price the venue hasn’t said yet reads Price: Not known yet, never 0. Your strategy’s page shows it once the venue does. How a strategy is named. Every message titles a strategy the same way, whatever you called it: its asset, then where each leg is.
ETHFI · Polymarket Perps long / Hyperliquid short
A name of your own comes after the pair, such as BRENT · Hyperliquid long / Polymarket Perps short · weekend test. A name that is the asset alone, or the one the strategy was made with, adds nothing, and isn’t repeated. An alert’s title starts with what happened: Order filled · ETHFI · Polymarket Perps long / Hyperliquid short. Telegram shows the same title in bold. Two kinds of message aren’t one strategy’s, and are titled with what they are about: a move of the margin keeper’s, Margin rebalanced · Margin keeper, and an alert about a venue account, such as Alert · Hyperliquid account.

The margin keeper’s messages

The margin keeper carries every strategy’s move in one bridge, so its messages are told once, whatever the number of strategies they serve. A move’s message says what moved and why, in the keeper’s own line, then what was bridged and what it cost:
Margin rebalanced · Margin keeper Bridged $30 instead of $70: ETH needed $50 to Hyperliquid, BTC needed $20 to Polymarket Perps. Bridged $30.00 · Cost $0.00
A move that crossed nothing between venues, its strategies’ needs cancelling out, reads “Moved $40 without a bridge: …” and has no figures under it. A move that moved nothing for anyone is no message of its own: what stays short is told as an alert. Every alert, with what it means and what to do.

Status reports

Switch Reports on for a Discord channel, then set Report every to how often one comes: every 15 minutes by default, from 5 minutes to a day. Reports are sent silently. A report opens with your executor’s summary: whether anything needs you, what your running strategies earn a day together, their APR on margin and their net since they opened, the margin moved since the last report, and what went wrong and is over. Then come your strategies, as much of each as the channel’s Report detail asks.

Report detail

Each channel has its own, beside Report every. Every strategy is told the same way: no level says more of one strategy than of another in the same state. A strategy’s two lines are whether it needs you, how much of its target is filled and for how long it has run, then what it earns a day, its APR on margin and its net since it opened. Its figures are each leg’s venue, market, size and distance to liquidation, this hour’s funding and margin moves, its P&L since it opened, what closing would cost now, and the margin cover of the accounts behind its cross legs. Send a sample report sends the channel the report it would get now, at the level set, so you can compare them. It changes nothing of the channel’s schedule: your next report comes at its time. It keeps a test’s pace: asked again within a couple of seconds, it’s refused. A report too long for one Discord message goes in several, in order: Discord takes 10 embeds and 6,000 characters a message. Nothing is cut to fit. Your executor sends them about two seconds apart, within Discord’s pace for a webhook. A channel made before this setting reports at Compact. Reports used to show the first strategy with all its figures and the next ones in two lines, which was never a setting: every strategy now gets the same.

What its words mean

  • Filled 100% of target is the position against its target per leg: what both legs hold, over the target you set, in dollars or in units. It says nothing of the hedge.
  • Over its target. A position more than 10% over its target needs a look: no rule brings it back. With a wider top-up threshold, that threshold counts above the target too. The report says what each leg holds against what you set; raise the target, or reduce the position. Under its target, a position is its entry’s to fill, and the first line says how far it is.
  • Unhedged means the legs’ sizes differ: one leg holds more than the other. That’s the unhedged guard’s business. The report says which leg holds how much more, and whether one of the strategy’s rules watches for it.
  • Paying funding is a notice, not something to fix: at the rates now, both legs’ funding together costs the strategy. The report keeps its calm colour, and its title says 1 notice instead of All clear. Your strategy’s page says the same in its warnings badge.
  • No liquidation price means the venue gives none for that leg. In cross margin, that’s a leg its account covers at any price of its market: on Hyperliquid, a long once the account holds more over its maintenance margin than the leg is worth. Nothing is wrong with it.
A report’s colour is the state when it’s sent: blue while all is clear or noted, amber when a strategy needs a look. Quiet while nothing runs. With every strategy paused, or none made, a channel gets no report at all. Reports come back within a minute of a strategy being activated. One exception, once a day at most. If a paused strategy still holds a position, which no rule watches, your executor sends a summary that says so: activate it, or close it. A paused strategy that’s flat says nothing. A feed’s outage never colours a report. It shows in the report’s footer while it lasts, with for how long. It isn’t listed as something that needs a look: it has its own alert, below.

What’s told once

An ongoing problem is told when it starts and when it ends, not at every check. The keeper’s and the entry’s alerts end with one Back to normal message, once the problem is over. Neither is told again because your executor restarted: it keeps what it told. A keeper’s problem that ends and comes back within the hour isn’t told a second time. Also:
  • An alert about a venue account is one message, titled with the account, even when several strategies have a leg there.
  • A feed your active strategies don’t need is idle, never down: no alert, no line in a report. Should a strategy that needs it be activated while it’s down, you’re told at once.
  • The same message to the same place goes once a minute at most. Two channels on one webhook or one chat get it once.

Sign-in alerts

When your executor answers on a public address, every sign-in is told on the channels that receive Alerts or Activity, once each: the wallet by its short address, the time, and the address it came from.
  • From an address that hasn’t signed in lately, the message leads with New device or address: check it was you, in amber, and buzzes.
  • From a known address, it’s sent silently.
On Discord, a sign-in from a new address reads:
Signed in from a new device or address · Executor New device or address: check it was you. A session opened on executor.example.com. If it wasn’t you, stop the executor and move the funds. Wallet 0x12ab…cd34 · When 11 October 2026 18:20 · Address 203.0.113.7
To tell a new address from a known one, your executor remembers the last 20 addresses that signed in, each for 90 days, and nothing else about them. A refused sign-in is never remembered. Switch it off in Settings, under Access: Alert on every sign-in. A sign-in is then told among the Activity only, and those addresses are forgotten. On loopback, where nobody else reaches the sign-in, that’s always how it is.

With several wallets

A channel serves this wallet or the whole organization, which any member may add or change.
  • A wallet’s messages go to its own channels and the organization’s.
  • From two wallets on, every message names its wallet by label and short address.
  • A notice for the whole executor, such as a newer release, goes to the organization’s channels that want it, or to each wallet’s when none does.
  • An organization’s channel gets each wallet’s status report one after the other, at that channel’s Report detail: each wallet’s summary is titled with the wallet, and its strategies follow.
With one wallet, nothing changes: no message names a wallet.