Skip to main content
recommend what I should do with this position
The headline workflow. When the AXL mesh is online, the CLI sends the request through Scout → Strategist ↔ Critic → (Arbiter on deadlock) and returns a structured, persisted plan with the full debate transcript attached. If the mesh is not online, an in-process orchestrator runs the same four handlers; if no LLM is available, the deterministic recommendPlan math runs as a final fallback.

What happens

  1. CLI sends a flow_start envelope to Scout.
  2. Scout reads the position + pool tick state, loads vol / gas / yield, classifies the regime (ranging / trending / volatile / stressed), and forwards context_observed to Strategist.
  3. Strategist proposes 2-5 candidate ranges as (widthMultiplier, centerOffsetTicks) tuples (snapped to tickSpacing), each with stress + yield numbers. Forwards proposal to Critic.
  4. Critic runs deterministic stress (1×, 2×, 3× vol), gas/yield ratios, and judges each candidate accept | revise | veto against the user’s risk profile.
    • On accept: emits plan_ready to the CLI, flow ends.
    • On revise: forwards critique back to Strategist for round 2.
    • On veto_all past ZUNO_MAX_DEBATE_ROUNDS: emits deadlock to Arbiter.
  5. Arbiter (on deadlock) reads the full debate, picks one candidate from the latest proposal, and emits plan_ready to the CLI.
  6. CLI prints the result and writes ~/.zuno/plans/<planId>.json with the transcript baked into risk.reasons.
The CLI streams agent_thought envelopes throughout, rendering each turn live under the recommendation card:
  ◇ scout       regime: ranging · vol 110bps · gas 14gwei · in range
  ◇ strategist  3 candidates · lean tighter, vol is sleeping
  ◇ critic      reject A: 18h buffer is fine now, vol mean-reverts
  ◇ strategist  A′: ±2.6% · 28h buffer · $3.60/d expected
  ◇ critic      accept A′ - converged

Example output

$ recommend what I should do with this position

  position    WETH / USDC 0.05%
  range       2,190.79 to 2,421.19   out of range
  current     2,438.19

  ────────────────────────────────────────────────────────

  recommended 2,273.36 to 2,614.97   shift
  rejected    2,361.41 to 2,519.99   tighten at 2× vol
  reason      28h base buffer · survives 2× vol · gas/yield 0.71x
  decided by  critic · debate converged

  confidence  0.82  approve_with_caution

  plan id     plan_dd4f9e0b6806

Risk profile

Set ZUNO_RISK_PROFILE to bias the Critic’s floors and the Arbiter’s tiebreak:
profilemin base buffermax gas/yieldtiebreak
conservative36h1.2xlargest 2× vol buffer wins
balanced24h1.6xbest buffer × yield balance
aggressive14h2.4xhighest yield among non-vetoed candidates

Confidence labels

labelmeaning
approveconverged with strong buffer
approve_with_cautionconverged but buffer is tight, or arbiter broke deadlock
rejectevery candidate failed stress at the active risk profile

Replaying the debate

explain recommendation
Renders risk.reasons, which includes every [scout] / [strategist] / [critic] / [arbiter] line from the original flow. The transcript is persisted with the plan so you can read the reasoning later.