publicBot
Resolve a share slug to the public LIVE-BOT projection (a delayed performance badge). ANONYMOUS — no auth directive, isolated from the authenticated resolver graph. Unlike the frozen projections, this reads a pre-computed BotPublicSnapshot sidecar (>=15-minute compute cutoff) — NEVER the live bot. Returns null for any unknown, revoked, expired, non-bot, or not-yet-snapshotted link (uniform not-found; no oracle). Money is always relative (%/ratio) and the open-position signal is a delayed, bucketed count.
publicBot(
shareToken: String!
): PublicBot
Arguments
publicBot.shareToken ● String! non-null scalar
Type
PublicBot object
The lean, anonymous, allowlisted projection of a LIVE bot — a DELAYED performance badge. This is the ENTIRE public surface of a shared bot. Unlike the frozen projections it is served from a pre-computed BotPublicSnapshot sidecar (>=15-minute compute cutoff), NEVER the live bot.
Structural safety is the whole surface:
- Money is ALWAYS relative — returnPct / winRatePct / maxDrawdownPct percentages and a unitless profitFactor. There is NO absolute balance/stake/equity/profit.
- status is COARSE (active/paused/stopped) — an unhealthy/error bot reads as "paused"; error_message is never exposed.
- openPositionsBucket is a DELAYED, BUCKETED count (0 / 1-3 / 4+) as of the compute cutoff — never a live count, never per-position detail (no pair, entry/exit, size, or unrealized PnL).
- uptimeBucket is a coarse age band — never an exact created_at/now.
- No ids, no owner PII, no config/secret, no runner/infra, no linked entities.