Skip to content

Chat surfaces & stage policy

The toggle above the prompt (or /mode) picks how MAESTRO treats every message. There are three surfaces, but only two are real modes — Interactive (the default) and Production. Ad-Hoc is the legacy name and normalises to Interactive on read.

Interactive (default)Production
On each promptGenerate a chain, run it on the spot, answer inline.Generate a reproducible chain, then auto save → baseline → (optionally) evolve.
Save / baseline / evolveYour call — driven by the chain-action buttons (Save to library, Evolve).Automatic — the pipeline runs them for you.
Follow-up promptReuses the chain for context; a new prompt can generate afresh.Treated as /revise — a new version of the same chain.
Saved?Only when you press Save.Saved to Memory under a stable chain_id + a baseline dataset entry.
Needs Memory?No.Yes (CARE_MEMORY__BASE_URL).

The default surface. Type a task → MAGE generates → CARL runs → the answer prints. Nothing is persisted unless you choose to: the Save to library and Evolve chain-action buttons put you in control of what survives the session. Follow-up prompts reuse the same chain so the conversation has context; start a fresh chain whenever you want.

Use it for: quick answers, exploration, iterating on a chain before you commit it.

The durable path — for agents you’ll keep, measure, and improve. Every prompt produces one reproducible chain that is then automatically saved, baselined, and (if Platform is wired) evolved. Once a chain exists, your next plain messages are treated as /revise edits — a new version under the same chain_id, not a new chain. Details and the full lifecycle are on the Production mode page.

Use it for: agents you want to save, build a dataset for, evolve, and promote.

ad_hoc (and the spellings ad-hoc / adhoc) is the old name for the fast, run-on-the-spot path. It is kept only for back-compat: on read it is normalised to interactive, so anything that still passes ad_hoc lands on the Interactive surface with no change in behaviour.


Both surfaces are built from the same pipeline. Two stages — generate and preview — are always automatic. The other four are configurable, each with one of three policies:

PolicyBehaviour
autoDo it silently.
askShow a confirm gate first.
skipNever do it (and skip stages that depend on it).

The four configurable stages and their per-surface presets:

StageInteractiveProduction
runaskask
saveskip (button-driven)auto
baselineskip (button-driven)auto
evolveskip (button-driven)auto

In Interactive, save / baseline / evolve are skip at the pipeline level because they’re driven by the chain-action buttons, not by modal gates.

Set the boot-time surface, then override any stage policy without editing config.toml. Env vars nest with the __ delimiter through every level.

Terminal window
# Boot-time surface: interactive | production (legacy aliases accepted)
export CARE_CHAT__DEFAULT_MODE=production
# Per-stage policy: CARE_CHAT__MODE__<MODE>__<STAGE> = ask | auto | skip
export CARE_CHAT__MODE__INTERACTIVE__RUN=auto # run Interactive chains without a gate
export CARE_CHAT__MODE__PRODUCTION__SAVE=ask # confirm before saving in Production

<MODE> is INTERACTIVE or PRODUCTION; <STAGE> is RUN, SAVE, BASELINE, or EVOLVE. An unset stage defers to the preset above.