The ralph tool runs a loop of fresh agent rounds toward one objective, until a round reports the work done or the rounds run out. This page is the developer reference for the tool in DataMind Oda: when Oda may call it, what a call carries, how rounds and reports work, and the limits that apply.
ralph, showing the call's objective, and it holds the turn until the whole loop settles (Tool calls in the chat).Use the ralph tool ONLY when the direct human explicitly asks for a Ralph loop or fresh-agent iterative execution.| Field | What it carries |
|---|---|
objective | Required. The immutable completion objective for every fresh Ralph round. Every round receives the same one. |
maxRounds | Optional. Optional positive safe-integer round cap, bounded by the deployment ceiling. |
The call is checked before any round starts. It fails its checks, and starts nothing, when:
Ralph objective must be a non-empty string;Ralph maxRounds must be a positive safe integer;Ralph maxRounds <value> exceeds the deployment ceiling <ceiling>;Ralph tool requires a calling agent (exec. agent was undefined).The configured child-agent provider is checked the same way. It must be registered (Ralph subagent provider "<name>" is not registered), support structured output (Ralph subagent provider "<name>" does not support structured output) and start fresh rather than inherit the parent context (Ralph subagent provider "<name>" inherits parent context; Ralph requires a fresh provider).
continue, complete or blocked.continue report lists the next steps and carries no blocker. A complete report carries evidence, no next steps and no blocker. A blocked report carries a concrete blocker.Ralph workflow failed: followed by the failure.Ralph round <n> child failed before producing a structured report., followed by Last successful handoff: and the last report, or No previous handoff was available. when there is none.complete or blocked, or when the round limit is reached. Completion and blockers are the worker's own reports, not an independent check.complete, blocked or budget-limited, and the result carries the last bounded report and how many rounds ran.| Ending | The call renders |
|---|---|
| A round reported completion | Ralph worker reported completion after <n>. |
| A round reported a blocker | Ralph worker reported a blocker after <n>. |
| The round limit was reached | Ralph reached its <n> limit; the worker reported work remaining. |
In these lines <n> reads as the number of rounds, such as 1 round or 2 rounds.
Ralph workflow was cancelled; a loop that fails comes back as Ralph workflow failed: followed by the failure.Completion and blockers are worker reports, not independent evaluation.… [truncated] notice.Ask for it in your own words, as a Ralph loop or fresh-agent iteration; Oda reaches for the tool only on that explicit ask. The capability also sits behind an advanced feature: the Ralph autonomous loop stays off until you turn it on in Settings > Developer > Advanced features (Advanced features catalog). The call then shows as a card titled ralph.
maxRounds is optional, and 256 rounds is the default and the ceiling for one run, so a call can set a smaller cap but nothing above it. A cap over the ceiling is refused: Ralph maxRounds <value> exceeds the deployment ceiling <ceiling>.
The checks run before any round starts, and each refusal names its reason: an empty objective, a round cap that is not a positive whole number or that passes the deployment ceiling, a child-agent provider that is not registered, does not support structured output or inherits the parent context, or a call with no chat behind it. The field and provider checks above quote each message.
No. Every round starts a fresh child with no conversation seed and no parent history; only the round's bounded report crosses to the next round, and the workspace is the only other memory the rounds share.
A state, continue, complete or blocked, with the fields that state requires: next steps for a continuing round, evidence for a completed one, and a concrete blocker for a blocked one. A report that does not fit its state ends the run.
The loop stops. The result reads Ralph round <n> child failed before producing a structured report. and carries the last successful handoff, or No previous handoff was available. when there is none. An ordinary child failure is terminal for the run.
No. A Ralph loop is foreground work: it holds the turn until the whole loop settles, and it has no job id, no background start and no resume. The workflow tool is the tool whose runs can start as background jobs.
budget-limited ending mean?The loop reached its round limit while the last report still had work remaining. The call renders Ralph reached its <n> limit; the worker reported work remaining., and the result carries the last bounded report and the rounds that ran.
Yes. A loop holds the turn it runs in, so stopping that turn cancels it (Stopping Oda and queued messages); the call comes back as Ralph workflow was cancelled. In Activity, its Ralph row offers Stop like other running work (Activity rows and actions).