Reference

Command line reference for the steward CLI.

Steward CLI - supervise evaluations.

Usage

steward [OPTIONS] COMMAND [ARGS]...

Subcommands

ack Accept an open item, so that nothing reports it again.
collect Read what has accumulated, and mark how far you have read.
init Create a steward workspace.
investigate Mark an anomaly class as under investigation.
launch Start a run: capture the definition, commit it, arm a timer, tend once.
note Write a note into the journal, for whoever reads this run next.
notify Post MESSAGE to this run’s notification channel.
pause Stop scheduling new work, leaving what is running to finish.
propose Propose one disposition for one or more anomaly classes.
raise Record that an item is now with the operator who can decide it.
ramp Hold or resume the tuning loop’s climb.
resume Start scheduling again.
rule Rule on anomaly classes: what the failures mean, and what happens to the data.
runbook Print the agent runbook: how Steward works.
schedule Arm, disarm, and inspect the agent’s recurring collect.
signoff Attest that these results are accepted, and end the run.
status Report where the run stands, and what the next turn would do.
tasks Enumerate the tasks defined by an eval set definition.
tend Run one turn of the supervision loop.
timer Arm, disarm, and inspect the timer that tends this run.

steward ack

Accept an open item, so that nothing reports it again.

ITEM is an item id, or any unambiguous prefix of one — ids are printed beside each item by steward status.

The item leaves status.md, the tend summary, and the verdict; the journal keeps the record. It comes back only if the condition changes in a way that matters, because an item’s id is chosen so that it does: acknowledging one edit to a definition does not acknowledge the next one.

Usage

steward ack [OPTIONS] ITEM

Options

Name Type Description Default
--reason text Why this is being accepted. Recorded in the journal, and the only account of the decision that survives. _required
--by choice (operator | agent) Who decided. An agent relaying an operator’s answer records operator; one disposing of something on its own judgement records agent. operator
--json boolean Output the acknowledgment as JSON. False
--help boolean Show this message and exit. False

steward collect

Read what has accumulated, and mark how far you have read.

The agent’s view of the run: the decisions that are still the agent’s to act on, where the run stands, and everything that has happened since the last collection. Whatever the filter sets aside is counted rather than dropped, so a shortened section never reads as an empty one.

Advancing the cursor is a bookmark, not a pop — the journal is append-only, nothing is consumed by being read, and an open item stays open until somebody acts on it. --peek leaves the cursor where it is.

Usage

steward collect [OPTIONS]

Options

Name Type Description Default
--peek boolean Read without advancing the cursor, so the next collection sees the same history again. False
--since integer range (0 and above) Show history from this journal position instead of the last collection. --since 0 shows everything. None
--help boolean Show this message and exit. False

steward init

Create a steward workspace.

DIRECTORY defaults to the current directory and is created if it does not exist.

Safe to re-run: existing files are kept and only what is missing is added. Steward never overwrites your work — least of all _steward.yaml, which changes only where you have approved the change.

Usage

steward init [OPTIONS] [DIRECTORY]

Options

Name Type Description Default
--type choice (evalset | flow | hawk) Definition type, which decides the placeholder’s filename. evalset
--no-git boolean Do not initialise a git repository. False
--help boolean Show this message and exit. False

steward investigate

Mark an anomaly class as under investigation.

CLASS is an open class key as steward status prints it, or any unambiguous prefix. Investigating a proposed class pulls it back out of its proposal.

Usage

steward investigate [OPTIONS] CLASS

Options

Name Type Description Default
--note text Where the investigation stands — written for the next session, not this one. _required
--by text Who is investigating. agent
--help boolean Show this message and exit. False

steward launch

Start a run: capture the definition, commit it, arm a timer, tend once.

DEFINITION is a Python file culminating in an eval_set() call, an Inspect Flow spec (Python or YAML), or a Hawk eval set config (YAML). Omitted, this workspace’s own definition is used.

Safe to run again. A second launch is the amend path — it re-captures, reports what changed, and refuses to commit anything that would move results out of logs/ unless you pass –accept-archive.

Usage

steward launch [OPTIONS] [DEFINITION]

Options

Name Type Description Default
--arg, -A text Argument for the definition (flow spec function args only). Can be specified multiple times. Defaults to the committed manifest’s on a re-launch. None
--no-args boolean Capture with no definition arguments, rather than reusing the committed manifest’s. False
--no-overrides boolean Capture at the definition’s own shape, rather than reusing the overrides the committed manifest recorded. Ignores STEWARD_* and INSPECT_EVAL_* for this launch too. False
--type choice (evalset | flow | hawk) Definition type (auto-detected, or taken from the committed manifest). None
--accept-archive boolean Commit even though results would leave logs/ — archived, or left behind by a log directory that moved. False
--no-timer boolean Launch without arming a timer. The run is then recorded as unsupervised until something arms one. True
--log-root value Root this machine keeps eval logs under. Used only where the definition names no log_dir, in which case this run writes to /. Overrides log_root in _steward.yaml and STEWARD_LOG_ROOT. None
--no-log-root boolean Keep this run’s logs in the workspace, whatever root the machine configured. False
--log-store value Where to look for logs this run does not have to produce — a flow store, or a plain directory of logs. Matches are copied in and reported, and a rehearsal leaves them out. Overrides log_store in _steward.yaml and STEWARD_LOG_STORE. None
--no-log-store boolean Run against no log store, whatever this project or machine configured. False
--notification value Where to post what this run cannot decide — an Apprise URL, several separated by commas, or an Apprise config file. Reaches every worker too. Overrides notification in _steward.yaml and STEWARD_NOTIFICATION. None
--no-notification boolean Post nothing about this run. Silences Steward only — a worker waiting on an operator still asks. False
--scan-model value Model scanners use, for this launch’s own turn. Reaches every worker too. Overrides scan_model in _steward.yaml and STEWARD_SCAN_MODEL. None
--no-scan-model boolean Configure no scan model — scanners use each sample’s own model under evaluation. False
--max-workers integer range (1 and above) Worker processes, or unset for a process per task. Overrides max_workers in _steward.yaml and STEWARD_MAX_WORKERS. None
--stall-after integer range (1 and above) Fruitless respawns before a task is given up on. Overrides stall_after in _steward.yaml and STEWARD_STALL_AFTER. None
--samples-ramp value Range to discover sample concurrency in, e.g. [40, 300], or false to fix it. Overrides samples_ramp in _steward.yaml and STEWARD_SAMPLES_RAMP. None
--stuck-after value Quiet time before a running sample is reported stuck, with a unit, e.g. 5h. Overrides stuck_after in _steward.yaml and STEWARD_STUCK_AFTER. None
--preauthorized value Rulings granted in advance: class patterns to dispositions, e.g. {'error:ReadTimeout@*': rerun}, or false to decline every standing grant for this turn. Overrides preauthorized in _steward.yaml and STEWARD_PREAUTHORIZED. None
--tend-interval value How often a scheduled tend runs, with a unit, e.g. 10m. Overrides tend_interval in _steward.yaml and STEWARD_TEND_INTERVAL. None
--sync value Where to mirror this workspace’s own files. Defaults to the run’s log directory, so results and what explains them sit together. Overrides sync in _steward.yaml and STEWARD_SYNC. None
--no-sync boolean Leave the workspace on this machine, whatever this project configured. False
--smoke boolean Rehearse first instead of launching: a few samples per task under a cap, into .steward/smoke/. False
--samples integer range (1 and above) Samples per task in a smoke (default 2). None
--cap integer range (0 and above) Wall-clock minutes a smoke may take, 0 for none (default 15). None
--accept choice (context_window | reasoning | reasoning_api | scan_coverage) Record a smoke check as waived rather than failing on it. Repeatable. None
--no-break-claim boolean Refuse if another command is wedged, rather than killing it and taking the claim. False
--json boolean Output the delta and the first turn as JSON. False
--log-format value Log file format, overriding the definition’s. Also STEWARD_LOG_FORMAT, INSPECT_LOG_FORMAT, INSPECT_EVAL_LOG_FORMAT. None
--log-samples value Whether to log individual samples, overriding the definition’s. Also STEWARD_LOG_SAMPLES, INSPECT_EVAL_NO_LOG_SAMPLES. None
--log-realtime value Whether to log sample events in realtime, overriding the definition’s. Also STEWARD_LOG_REALTIME, INSPECT_EVAL_NO_LOG_REALTIME. None
--log-images value Whether to log base64-encoded images, overriding the definition’s. Also STEWARD_LOG_IMAGES. None
--log-model-api value Whether to log model API calls, overriding the definition’s. Also STEWARD_LOG_MODEL_API, INSPECT_EVAL_LOG_MODEL_API. None
--log-refusals value Whether to log model refusals, overriding the definition’s. Also STEWARD_LOG_REFUSALS, INSPECT_EVAL_LOG_REFUSALS. None
--log-buffer value Samples to buffer before writing, overriding the definition’s. Also STEWARD_LOG_BUFFER, INSPECT_EVAL_LOG_BUFFER. None
--log-shared value Whether (and how often) to sync logs to a shared filesystem, overriding the definition’s. Also STEWARD_LOG_SHARED, INSPECT_LOG_SHARED, INSPECT_EVAL_LOG_SHARED. None
--log-level value Console log level, overriding the definition’s. Also STEWARD_LOG_LEVEL, INSPECT_LOG_LEVEL. None
--log-level-transcript value Transcript log level, overriding the definition’s. Also STEWARD_LOG_LEVEL_TRANSCRIPT, INSPECT_LOG_LEVEL_TRANSCRIPT. None
--limit value Dataset slice, overriding the definition’s: a sample count, or a (start, end) range. Also STEWARD_LIMIT, INSPECT_EVAL_LIMIT. None
--sample-id value Specific sample id(s) to run, overriding the definition’s. Also STEWARD_SAMPLE_ID, INSPECT_EVAL_SAMPLE_ID. None
--sample-shuffle value Whether to shuffle the dataset (optionally with a seed), overriding the definition’s. Also STEWARD_SAMPLE_SHUFFLE, INSPECT_EVAL_SAMPLE_SHUFFLE. None
--epochs value Epochs to repeat samples over, overriding the definition’s. Also STEWARD_EPOCHS, INSPECT_EVAL_EPOCHS. None
--max-samples value Sample concurrency, overriding the definition’s. Also STEWARD_MAX_SAMPLES, INSPECT_EVAL_MAX_SAMPLES. None
--max-tasks value Task concurrency, overriding the definition’s. Also STEWARD_MAX_TASKS, INSPECT_EVAL_MAX_TASKS. None
--max-subprocesses value Subprocess concurrency, overriding the definition’s. Also STEWARD_MAX_SUBPROCESSES, INSPECT_EVAL_MAX_SUBPROCESSES. None
--max-sandboxes value Sandbox concurrency, overriding the definition’s. Also STEWARD_MAX_SANDBOXES, INSPECT_EVAL_MAX_SANDBOXES. None
--max-dataset-memory value Maximum MiB of dataset sample data to hold in memory per task, overriding the definition’s. Zero pages every sample to disk. Also STEWARD_MAX_DATASET_MEMORY, INSPECT_EVAL_MAX_DATASET_MEMORY. None
--generate-config value Model transport settings, overriding the definition’s. Also STEWARD_GENERATE_CONFIG. None
--model-base-url value Base URL for model API requests, overriding the definition’s. Also STEWARD_MODEL_BASE_URL. None
--model-cost-config value Model pricing table (or a path to one), overriding the definition’s. Also STEWARD_MODEL_COST_CONFIG, INSPECT_EVAL_MODEL_COST_CONFIG. None
--sandbox value Sandbox environment, overriding the definition’s. Also STEWARD_SANDBOX, INSPECT_EVAL_SANDBOX. None
--sandbox-cleanup value Whether to clean up sandboxes after a task, overriding the definition’s. Also STEWARD_SANDBOX_CLEANUP, INSPECT_EVAL_NO_SANDBOX_CLEANUP. None
--sandbox-prebuilt value Whether sandbox images are prebuilt, overriding the definition’s. Also STEWARD_SANDBOX_PREBUILT, INSPECT_EVAL_SANDBOX_PREBUILT. None
--checkpoint value Sample checkpointing, overriding the definition’s. Also STEWARD_CHECKPOINT, INSPECT_EVAL_CHECKPOINT. None
--approval value Approval policy (or a path to one), overriding the definition’s. Also STEWARD_APPROVAL, INSPECT_EVAL_APPROVAL. None
--retry-on-error value Sample-level retries before an error is recorded, overriding the definition’s. Also STEWARD_RETRY_ON_ERROR, INSPECT_EVAL_RETRY_ON_ERROR. None
--score-on-error value Whether to score samples that errored, overriding the definition’s. Also STEWARD_SCORE_ON_ERROR, INSPECT_EVAL_SCORE_ON_ERROR. None
--debug-errors value Whether to raise sample errors rather than recording them, overriding the definition’s. Also STEWARD_DEBUG_ERRORS, INSPECT_DEBUG_ERRORS. None
--score value Whether to score the run, overriding the definition’s. Also STEWARD_SCORE, INSPECT_EVAL_NO_SCORE. None
--score-display value Whether to display scoring metrics, overriding the definition’s. Also STEWARD_SCORE_DISPLAY, INSPECT_EVAL_SCORE_DISPLAY. None
--tags value Tags to stamp into the logs, overriding the definition’s. Also STEWARD_TAGS, INSPECT_EVAL_TAGS. None
--metadata value Metadata to stamp into the logs, overriding the definition’s. Also STEWARD_METADATA, INSPECT_EVAL_METADATA. None
--display value Display type, overriding the definition’s. Also STEWARD_DISPLAY, INSPECT_DISPLAY. None
--trace value Whether to trace message interactions to the console, overriding the definition’s. Also STEWARD_TRACE, INSPECT_EVAL_TRACE. None
--help boolean Show this message and exit. False

steward note

Write a note into the journal, for whoever reads this run next.

MESSAGE is free text: the state of something and what you think it means. It appears under what happened in status and collect, in order with everything else that was done to the run.

Usage

steward note [OPTIONS] MESSAGE

Options

Name Type Description Default
--by choice (operator | agent) Whose note. Defaults to the agent, whose observations are what this verb exists to keep. agent
--help boolean Show this message and exit. False

steward notify

Post MESSAGE to this run’s notification channel.

MESSAGE is the title — the line that stands alone in a phone notification, so make it the thing you would want read if nothing else was. Everything else goes in –detail.

The channel is the run’s own: notification in _steward.yaml, STEWARD_NOTIFICATION, or INSPECT_EVAL_NOTIFICATION, whichever is set.

Usage

steward notify [OPTIONS] MESSAGE

Options

Name Type Description Default
--kind choice (attention | stopped) Why you are sending this. attention is worth knowing and work continues; stopped means nothing progresses until an operator answers. attention
--detail text A supporting line, under the message. Repeatable — one per thing you want the reader to see without opening anything. None
--help boolean Show this message and exit. False

steward pause

Stop scheduling new work, leaving what is running to finish.

Every later turn reports the run as paused and spawns nothing. Workers already in flight are left alone: stopping one is not a mechanical act, and it is not what pausing means.

Recorded in the journal rather than in .steward/, which is disposable — a pause that a cleared cache silently undid would resume an expensive run with nobody watching.

Usage

steward pause [OPTIONS]

Options

Name Type Description Default
--reason text Why the run is being held. Recorded in the journal, and the only account of the decision that survives. _required
--by choice (operator | agent) Who decided. An agent relaying an operator’s instruction records operator. operator
--help boolean Show this message and exit. False

steward propose

Propose one disposition for one or more anomaly classes.

CLASSES name open classes — a finding’s label, label:task, an exception type, or a class key or prefix of one. Prints the sentence the operator is to be given and the steward rule that records their answer. The proposal becomes one consolidated item for its owner, answered whole or in part by naming its findings or its task to steward rule.

Usage

steward propose [OPTIONS] CLASSES...

Options

Name Type Description Default
--action choice (rerun | exclude | zero | score | accept | dismiss) The one disposition this proposal asks for. Classes wanting different answers are different proposals. _required
--reason text Why these classes are one decision — what the investigation found. _required
--by text Who is proposing. agent
--json boolean Output the proposal as JSON. False
--help boolean Show this message and exit. False

steward raise

Record that an item is now with the operator who can decide it.

ITEM is a operator-owned item’s id, or any unambiguous prefix of one — ids are printed beside each item by steward status, under the heading that says whose it is. An item the agent owns is its own to investigate and then steward ack --by agent; raising one would take it out of the agent’s queue with nobody else looking at it.

The item stays open and stays in status: only a ruling closes it. What changes is that steward collect stops offering it as work, so the agent is not shown the same decision every time it looks. It returns if the condition changes in a way that matters, because an item’s id is chosen so that it does.

Usage

steward raise [OPTIONS] ITEM

Options

Name Type Description Default
--note text What was done to surface it — where it was asked, and of whom. Optional: handing a decision off does not owe the account that disposing of one does. `| |–json| boolean | Output the hand-off as JSON. |False| |–help| boolean | Show this message and exit. |False`

steward ramp

Hold or resume the tuning loop’s climb.

Usage

steward ramp [OPTIONS] COMMAND [ARGS]...

Subcommands

hold Stop the tuning loop climbing, leaving the levels where they are.
resume Let the tuning loop climb again.

steward ramp hold

Stop the tuning loop climbing, leaving the levels where they are.

With IDENTIFIER (a task identifier, from steward tasks), holds that one arm and leaves the others climbing; bare, holds the fleet. Ramp-downs stay active either way — a hold is a brake on growth, never on the cut that exits a retry storm.

Usage

steward ramp hold [OPTIONS] [IDENTIFIER]

Options

Name Type Description Default
--reason text Why the climb is being held. Recorded in the journal, and what the next reader of the tuning block sees. _required
--by choice (operator | agent) Who decided. Defaults to the agent, because holding on its own judgement is exactly what this verb exists for. agent
--help boolean Show this message and exit. False

steward ramp resume

Let the tuning loop climb again.

With IDENTIFIER, releases that task’s hold; bare, releases everything — the fleet-wide hold and every per-task one, because the bare verb means ramp freely again rather than ramp except where I have forgotten I said otherwise.

Usage

steward ramp resume [OPTIONS] [IDENTIFIER]

Options

Name Type Description Default
--help boolean Show this message and exit. False

steward resume

Start scheduling again.

The next tend converges from whatever it finds, which is not necessarily where the run was when it was paused — logs landed, workers exited, and the definition may have been relaunched. That is the ordinary behaviour of the loop rather than a caveat about pausing.

Usage

steward resume [OPTIONS]

Options

Name Type Description Default
--help boolean Show this message and exit. False

steward rule

Rule on anomaly classes: what the failures mean, and what happens to the data.

Each argument names a finding — its label (internet_egress), label:task where the same finding is open on two tasks, its exception type (TimeoutError), or the class key as steward status prints it or any prefix of one — or a task by its display key (cybench, cybench@openai), which answers every finding proposed for that task as proposed. A finding a proposal covers is answered with the proposal’s disposition unless --disposition says otherwise; one nothing proposes needs --disposition. A ruling closes the class’s window — every open generation of it — and recurrence afterwards opens a new one carrying this decision as precedent.

Usage

steward rule [OPTIONS] [FINDING|TASK]...

Options

Name Type Description Default
--proposal text Answer a proposal by id. Alone, rules every class it covers that still awaits one; with CLASS arguments, rules just those — a partial answer, and the remainder stays proposed. None
--disposition choice (rerun | exclude | zero | score | accept | dismiss) The answer. A finding a proposal covers takes the proposal’s answer by default; given, this one overrides it. Required for a finding nothing proposes. None
--reason text Why. Recorded in the journal, attached as precedent to any recurrence, and the only account of the decision that survives. _required
--by text Who decided — a name, never a role. Defaults to this workspace’s git user.name, or the login name; pass it when relaying someone else’s decision. None
--effect text The sentence the report carries for a disposition that marks the data. Composed automatically for exclude/zero/score, required for accept, refused for rerun and dismiss — which mark nothing. None
--json boolean Output the rulings as JSON. False
--help boolean Show this message and exit. False

steward runbook

Print the agent runbook: how Steward works.

The runbook ships with the package rather than living in the workspace, so an agent can never follow last year’s instructions against this year’s CLI. It is mechanics; _steward.yaml in the workspace is what a particular human wants.

Usage

steward runbook [OPTIONS]

Options

Name Type Description Default
--help boolean Show this message and exit. False

steward schedule

Arm, disarm, and inspect the agent’s recurring collect.

Usage

steward schedule [OPTIONS] COMMAND [ARGS]...

Subcommands

arm Schedule <agent> exec to collect and act on this workspace on a schedule.
disarm Remove this workspace’s scheduled collect.
status Say what is scheduled, and check that it is really there.

steward schedule arm

Schedule <agent> exec to collect and act on this workspace on a schedule.

Idempotent: a schedule already installed exactly as asked is left in place, and any other existing schedule is removed first, so re-arming at a new interval or under a different scheduler leaves exactly one. Independent of the tend timer — arming this arms neither, and steward timer is unaffected.

Usage

steward schedule arm [OPTIONS]

Options

Name Type Description Default
--agent choice (codex) Which harness runs the scheduled collect. codex
--tend-interval value How often a scheduled tend runs, with a unit, e.g. 10m. Overrides tend_interval in _steward.yaml and STEWARD_TEND_INTERVAL. None
--scheduler choice (launchd | systemd | cron) Which scheduler to use. Detected when not given, preferring one that survives a reboot. None
--help boolean Show this message and exit. False

steward schedule disarm

Remove this workspace’s scheduled collect.

Nothing else stops: the tend timer keeps tending, and steward collect still works by hand. What ends is the agent being called back automatically.

Usage

steward schedule disarm [OPTIONS]

Options

Name Type Description Default
--help boolean Show this message and exit. False

steward schedule status

Say what is scheduled, and check that it is really there.

Asks the scheduler rather than the journal, the same way steward timer status does, and for the same reason.

Usage

steward schedule status [OPTIONS]

Options

Name Type Description Default
--json boolean Output the schedule’s state as JSON. False
--help boolean Show this message and exit. False

steward signoff

Attest that these results are accepted, and end the run.

Runs a final turn, refuses with every blocker at once if anything is still unnamed, moves superseded attempts into logs-archive/, records who signed and what they signed over, and takes the timer down. It does not commit the journal — that stays yours.

An operator decides this. An agent may prompt for it and may run it once they answer, recording their name, which is why the signer is recorded rather than the process. --publish is the same shape one step further out: exporting results into a shared store is the operator’s call too, so it is asked rather than configured.

Usage

steward signoff [OPTIONS]

Options

Name Type Description Default
--by text Who is accepting these results — a name, never a role. Defaults to this workspace’s git user.name, or the login name; pass it when relaying someone else’s decision. None
--note text What you want said about the acceptance. Optional: the account of every decision is already in the journal. None
--again boolean Record a second signature over a run whose first one still stands. False
--publish boolean Put the signed logs into the configured log store, so another project can reuse them instead of running the task. Never happens without this flag — there is no setting that turns it on. False
--no-break-claim boolean Refuse if another command is wedged, rather than killing it and taking the claim. False
--json boolean Output the signature, or the blockers, as JSON. False
--help boolean Show this message and exit. False

steward status

Report where the run stands, and what the next turn would do.

tend --dry-run: the same reads and the same decision, with the actions discarded. Read-only — it spawns nothing, moves nothing, writes nothing, and does not take the run claim, so it is safe to run as often as you like while a tend is in flight.

Markdown by default, because that is the operator’s page and what an agent relays verbatim (runbook, When the operator asks how it is going), and its columns line up read as plain text either way. --format text is the terminal preview an operator reads before launch — the only read-only view of what the next tend would spawn and of the startup-memory projection width is chosen against. --json for the machine-readable state.

Usage

steward status [OPTIONS]

Options

Name Type Description Default
--max-workers integer range (1 and above) Worker processes, or unset for a process per task. Overrides max_workers in _steward.yaml and STEWARD_MAX_WORKERS. None
--stall-after integer range (1 and above) Fruitless respawns before a task is given up on. Overrides stall_after in _steward.yaml and STEWARD_STALL_AFTER. None
--samples-ramp value Range to discover sample concurrency in, e.g. [40, 300], or false to fix it. Overrides samples_ramp in _steward.yaml and STEWARD_SAMPLES_RAMP. None
--stuck-after value Quiet time before a running sample is reported stuck, with a unit, e.g. 5h. Overrides stuck_after in _steward.yaml and STEWARD_STUCK_AFTER. None
--preauthorized value Rulings granted in advance: class patterns to dispositions, e.g. {'error:ReadTimeout@*': rerun}, or false to decline every standing grant for this turn. Overrides preauthorized in _steward.yaml and STEWARD_PREAUTHORIZED. None
--format choice (md | text) md (the default) is the operator’s page, the same markdown status.md carries and what an agent relays verbatim; text is the fuller terminal preview, which alone carries what the next tend would spawn and the startup-memory projection. md
--json boolean Output the state as JSON. False
--help boolean Show this message and exit. False

steward tasks

Enumerate the tasks defined by an eval set definition.

DEFINITION is a Python file culminating in an eval_set() call, an Inspect Flow spec (Python or YAML), or a Hawk eval set config (YAML).

Usage

steward tasks [OPTIONS] DEFINITION

Options

Name Type Description Default
--arg, -A text Argument for the definition (flow spec function args only). Can be specified multiple times. None
--type choice (evalset | flow | hawk) Definition type (auto-detected by default). None
--json boolean Output the full manifest as JSON. False
--help boolean Show this message and exit. False

steward tend

Run one turn of the supervision loop.

Reconciles the log directory against the committed manifest: spawns what should be running, records what died, archives what the definition no longer asks for, then rewrites status.md and appends to the journal. Never blocks — everything long-running is a detached child that a later turn observes.

Safe to call as often as you like. A repeated turn is a no-op, and an interrupted one is reconciled by the next.

Usage

steward tend [OPTIONS]

Options

Name Type Description Default
--max-workers integer range (1 and above) Worker processes, or unset for a process per task. Overrides max_workers in _steward.yaml and STEWARD_MAX_WORKERS. None
--stall-after integer range (1 and above) Fruitless respawns before a task is given up on. Overrides stall_after in _steward.yaml and STEWARD_STALL_AFTER. None
--samples-ramp value Range to discover sample concurrency in, e.g. [40, 300], or false to fix it. Overrides samples_ramp in _steward.yaml and STEWARD_SAMPLES_RAMP. None
--stuck-after value Quiet time before a running sample is reported stuck, with a unit, e.g. 5h. Overrides stuck_after in _steward.yaml and STEWARD_STUCK_AFTER. None
--preauthorized value Rulings granted in advance: class patterns to dispositions, e.g. {'error:ReadTimeout@*': rerun}, or false to decline every standing grant for this turn. Overrides preauthorized in _steward.yaml and STEWARD_PREAUTHORIZED. None
--sync value Where to mirror this workspace’s own files. Defaults to the run’s log directory, so results and what explains them sit together. Overrides sync in _steward.yaml and STEWARD_SYNC. None
--no-sync boolean Leave the workspace on this machine, whatever this project configured. False
--no-break-claim boolean Refuse if another tend is wedged, rather than killing it and taking the claim. False
--json boolean Output the turn as JSON. False
--help boolean Show this message and exit. False

steward timer

Arm, disarm, and inspect the timer that tends this run.

Usage

steward timer [OPTIONS] COMMAND [ARGS]...

Subcommands

arm Install a timer that tends this workspace on a schedule.
disarm Remove this workspace’s timer.
status Say what is armed, and check that it is really there.

steward timer arm

Install a timer that tends this workspace on a schedule.

Idempotent: an existing timer is removed first, so re-arming at a new interval or under a different scheduler leaves exactly one.

Usage

steward timer arm [OPTIONS]

Options

Name Type Description Default
--tend-interval value How often a scheduled tend runs, with a unit, e.g. 10m. Overrides tend_interval in _steward.yaml and STEWARD_TEND_INTERVAL. None
--scheduler choice (launchd | systemd | cron) Which scheduler to use. Detected when not given, preferring one that survives a reboot. None
--help boolean Show this message and exit. False

steward timer disarm

Remove this workspace’s timer.

Nothing else stops: workers in flight finish, and steward tend still works by hand. What ends is anything happening without somebody typing it, which every later status then reports.

Usage

steward timer disarm [OPTIONS]

Options

Name Type Description Default
--help boolean Show this message and exit. False

steward timer status

Say what is armed, and check that it is really there.

The one command that asks the scheduler rather than the journal. Every other reader — a tend, a status, the item projection — goes on what arming recorded, because they run every few minutes and this costs a subprocess.

Usage

steward timer status [OPTIONS]

Options

Name Type Description Default
--json boolean Output the timer’s state as JSON. False
--help boolean Show this message and exit. False