Skip to main content
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:

Example output

Risk profile

Set ZUNO_RISK_PROFILE to bias the Critic’s floors and the Arbiter’s tiebreak:

Confidence labels

Replaying the debate

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.