Skip to content

Compiled agent defaults

Every field a bare-minimum Agent manifest doesn't declare is filled in by mas-ctl compile before the runtime ever sees it — the plugin for every singleton slot (design_pattern, context_manager, assembler), the sub-plugin composed by one of those (context_manager.params.summarizer), and every attribute each one takes. Omitting a field, writing the plugin name, and writing the fully-expanded object are the same runtime behaviour (plugin-bindings.md) — this page exists so you don't have to hold that expansion in your head, or worse, guess at it.

This page is a worked example, not a schema. Field-by-field docs (with the why) live on the pages linked from each block below; if a number here ever looks stale, trust the command over this page and re-run it — see Regenerating this page.


The input: Tutorial 1's minimal manifest

docs/tutorials/01-building-an-agent/agent.yaml declares a model, a description, and a system-prompt fragment. Nothing else:

apiVersion: mas/v1
kind: Agent

metadata:
  name: qa-agent

spec:
  models:
    - model: gpt-4o

  description: Answer general knowledge questions.
  context:
    intent: "Answer general knowledge questions."
    role: |
      Answer questions clearly and concisely.

The output: mas-ctl compile agent.yaml

apiVersion: mas/v1
kind: Agent
metadata:
  name: qa-agent
spec:
  models:
  - model: gpt-4o
  description: Answer general knowledge questions.
  context:
    intent: Answer general knowledge questions.
    role: 'Answer questions clearly and concisely.

      '
  design_pattern:
    type: react@v1
    params:
      max_cot_pass: 1
      parallel: true
  context_manager:
    type: summarising
    params:
      keep_turns: 10
      hysteresis_ratio: 0.1
      summarizer: llm
      working_memory_messages: 20
      trimmer:
        reserve_tokens: 2000
        safety_margin_ratio: 0.1
  assembler:
    type: assembler
    params:
      emit_segments: true
      always_reassemble: false

What each block is

Block Plugin (default) Attributes Docs
models[0].context_window — Auto-resolved from the effective model; an unknown model warns and uses 128000 agent.md · context-management
design_pattern react@v1 (registry alias react) max_steps (dispatch-loop cap), max_cot_pass, parallel plugin-bindings.md § design_pattern
assembler assembler (ContextAssemblerPlugin) emit_segments, always_reassemble — builds messages[]; not where history policy lives plugin-bindings.md § assembler · context-assembly.md
context_manager summarising keep_turns, hysteresis_ratio, summary_threshold, working_memory_messages, trimmer.{max_tokens,reserve_tokens,safety_margin_ratio} plugin-bindings.md § context_manager · context-management
context_manager.params.summarizer llm (sub-plugin of summarising) params.model omitted → summarizer slot (Agent/MAS/experiment.models.summarizer) else agent's primary model. Compile does not invent a cheaper summarizer. plugin-bindings.md § summarizer · summarization.md

Every one of these is a real registered plugin — resolving type: react@v1, type: summarising, type: assembler, type: llm through the same plugin registry a manifest author's own explicit choice would go through. There is no hidden "if omitted, do X in code" branch: the default is a binding (library-standard/library.yaml's defaults: map), and it is overridable per-workspace (config.yaml defaults:) without touching a single agent manifest. See config.yaml § defaults.

Regenerating this page

The numbers above will drift as defaults change. Reproduce them yourself from any manifest — an omitted field and its fully-expanded form are identical at runtime, so this works on your own agents too, not just the tutorial:

cd docs/tutorials/01-building-an-agent
mas-ctl compile agent.yaml --no-header

Add -o overlays/<file>.yaml (repeatable) to see overlays folded in first — compile command reference. To see only what a specific manifest sets versus package defaults, add --no-defaults and diff.