Skip to content

Multi-turn history

A delegate sub-agent starts fresh every turn by default. Set history: true and its transcript is seeded from state.kaboo_history on the way in and captured back into the outgoing snapshot on the way out — so it can remember across turns.

assistant_team (delegate):
  coordinator ─▶ memo (history: true)

Config

agents:
  memo:
    history: true
    system_prompt: "Use the notes from previous turns when answering follow-ups."

orchestrations:
  assistant_team:
    mode: delegate
    entry_name: coordinator
    connections:
      - { agent: memo, description: "Records and recalls notes across turns" }

entry: assistant_team

Full runnable project: examples/19_multiturn_history.

The client owns storage

kaboo enriches the data structure; it does not choose your datastore. The captured transcript comes back in the run's outgoing history snapshot, and the client feeds it back in state.kaboo_history on the next turn. For turnkey persistence (in-memory or Postgres ThreadStores behind a CopilotKit runtime), use kaboo-runtime.

Run

OPENROUTER_API_KEY=... uv run kaboo-serve examples/19_multiturn_history/config.yaml

Proven by

  • tests/e2e/test_cross_cutting.py::test_subagent_history_round_trips_and_accumulates (turn 2 is seeded from turn 1 and grows).
  • tests/e2e/test_cross_cutting.py::test_history_disabled_sub_agent_does_not_persist (the stateless-by-default contrast).