Production Mode
Production mode turns a one-off generation into a durable, measurable, improvable agent. It’s the path you use when you want to keep a chain, test it, evolve it, and ship the best version.
What happens on a Production prompt
Section titled “What happens on a Production prompt”When you type a task in Production mode, MAESTRO runs this sequence automatically:
- Generate — MAGE produces a reproducible chain (no ReAct loop, no answer-synthesis — Production chains must run the same way every time).
- Stash — the chain lands in the session artifact store (the header pill and
/artifactssee it). - Save — the chain is saved to Memory under a stable
chain_idwith a display name. (Duplicate of an existing chain → no re-save.) - Baseline — MAESTRO runs one baseline execution and persists it as the first dataset entry for that chain.
- Evolve — if a Platform is wired and the baseline succeeded, MAESTRO kicks off an evolution run against the baseline.
After this, the chain lives in your Library under its
chain_id.
Requirements & fallback
Section titled “Requirements & fallback”- Memory is required:
CARE_MEMORY__BASE_URL(+CARE_MEMORY__API_KEYif auth is enforced). Without it, selecting Production auto-falls back to Ad-Hoc with a warning. - Platform is optional: evolution only runs when
CARE_PLATFORM__BASE_URLis set; otherwise the save + baseline still happen, evolution is skipped.
Channels & versions
Section titled “Channels & versions”Saved chains are versioned. Edits (via /revise) create new versions; the
latest channel always points at the newest. Promote a chosen version (or an
evolution winner) into the stable channel with /promote.
CLI reads honour --channel (default latest) — e.g. care run <id> --channel stable.
Production commands
Section titled “Production commands”These appear in Production mode (see the full list under slash commands → production):
Datasets — measure quality
Section titled “Datasets — measure quality”/dataset add <chain_id> "<task>" --expected "<out>" [--rubric "<prompt>"]/dataset list <chain_id>/dataset run <chain_id> # replay every entry + score it/dataset export <chain_id> <path> # write entries as JSONLThe baseline run seeds entry #1; add more cases, then /dataset run to score the
chain against them. The CLI twin builds + scores datasets headlessly.
Evolution — improve automatically
Section titled “Evolution — improve automatically”You can launch an evolution run three ways:
- Automatically — in Production, a successful baseline kicks one off (step 5 above).
- From the TUI — open a saved chain in the Library and press
v/Eto open the Evolution Launch picker. It shows a budget preview before you commit — the iteration count, rubric, and objectives, with the estimated token/USD cost for the run — so you can size a run before spending on it. - Headless —
care evolve <chain_id> --iterations 8 --wait --accept.
Once a run is live, follow it on the Evolution dashboard — the
list of active and recent runs (Enter opens one, c compares two). Each run view
streams the Fitness chart, the Pareto front, Programs, and Versions, with
a running cost meter in the header so you always see token/USD spend against the
budget you set at launch.
Watch and steer a run from chat:
/evolution <run_id> # render the run's state inline/evolution watch <run_id> # stream events live/evolution accept <run_id> <individual_id> # promote the winnerThe GA optimises against the chain’s dataset (the fitness signal), so seed a few
dataset entries first. Accepting a winner — via
/evolution accept, the Evolution dashboard’s Accept winner
button, or care evolve --accept — promotes the best individual into the stable channel.
Deploy — serve as an HTTP agent
Section titled “Deploy — serve as an HTTP agent”Ship a saved chain to the agent hub so it runs as an HTTP agent with its own Swagger UI:
/deploy <ref> [--channel <ch>] [--name <agent>] # default channel: stableNeeds the deploy extra (pip install "maestro-care[deploy]"). Full guide:
Deploying agents.
Lifecycle
Section titled “Lifecycle”/revise [<id>] <change> # edit the chain in natural language → new version/promote <id> <version> # promote a version / winner to the stable channel/upload <chain_id> # POST the chain to CARE_UPLOAD__URL/forget <chain_id> [--force] # soft-delete the chain + its datasetSee also
Section titled “See also”- Scenarios — end-to-end worked examples.
- Ad-Hoc vs Production · Architecture