BenchFlow

CLI and Python

Each flag of bench eval run, bench eval branch, bench eval metrics, bench eval compare, bench eval regrade, bench train convert, bench train stream, and the Python that does the same. sdk is a name in the public benchflow package, module a function or field in one of its modules, and cli a flag with no Python equivalent, for the reason given. bench run takes the flags of bench eval run, some under shorter names: Commands has both, and Python API every public name. A command or flag new since 0.9.2 has (0.10) after it when 0.10.0rc3 has it, or (unreleased) when no release has it yet.

bench eval run

FlagKindPythonNote
--configsdkbenchflow.Evaluation.from_yamlalso Evaluation.from_dict(); to_yaml()/to_dict() write it
--tasks-dirsdkbenchflow.Evaluation.__init__(tasks_dir)
--source-reposdkbenchflow.resolve_source(repo)pass the returned path as tasks_dir
--source-pathsdkbenchflow.resolve_source(path)
--source-refsdkbenchflow.resolve_source(ref)
--source-envmodulebenchflow.hosted_env.HostedEnvRunConfig.source_envrun with benchflow.hosted_env.run_hosted_env()
--source-env-versionmodulebenchflow.hosted_env.HostedEnvRef.version
--source-env-argmodulebenchflow.hosted_env.HostedEnvRunConfig.env_args
--source-env-num-examplesmodulebenchflow.hosted_env.HostedEnvRunConfig.num_examples
--source-env-rollouts-per-examplemodulebenchflow.hosted_env.HostedEnvRunConfig.rollouts_per_example
--source-env-max-tokensmodulebenchflow.hosted_env.HostedEnvRunConfig.max_tokens
--source-env-temperaturemodulebenchflow.hosted_env.HostedEnvRunConfig.temperature
--source-env-sampling-argmodulebenchflow.hosted_env.HostedEnvRunConfig.sampling_args
--source-env-verifiers-versionmodulebenchflow.hosted_env.HostedEnvRunConfig.verifiers_version
--source-env-base-urlmodulebenchflow.hosted_env.HostedEnvRunConfig.api_base_url
--source-env-api-key-varmodulebenchflow.hosted_env.HostedEnvRunConfig.api_key_var
--agentsdkbenchflow.EvaluationConfig.agent
--modelsdkbenchflow.EvaluationConfig.model
--reasoning-effortsdkbenchflow.EvaluationConfig.reasoning_effort
--harnesssdkbenchflow.EvaluationConfig.harnessacp (default) or native
--sandboxsdkbenchflow.EvaluationConfig.environment
--usage-trackingsdkbenchflow.EvaluationConfig.usage_tracking
--environment-manifestsdkbenchflow.EvaluationConfig.environment_manifestbf.load_manifest(path or name@version)
--statemodulebenchflow._utils.env_registry.resolve_state(value)its manifest goes in EvaluationConfig.environment_manifest
--promptsdkbenchflow.EvaluationConfig.prompts
--config-overridesdkbenchflow.EvaluationConfig.config_override
--concurrencysdkbenchflow.EvaluationConfig.concurrency
--build-concurrencysdkbenchflow.EvaluationConfig.build_concurrency
--warm-poolsdkbenchflow.EvaluationConfig.warm_pool
--worker-concurrencymodulebenchflow.eval_sharding.run_sharded_evaluation(worker_concurrency)
--worker-retriesmodulebenchflow.eval_sharding.run_sharded_evaluation(worker_retries)
--worker-start-stagger-secmodulebenchflow.eval_sharding.run_sharded_evaluation(worker_start_stagger_sec)
--agent-idle-timeoutsdkbenchflow.EvaluationConfig.agent_idle_timeout
--checkpointssdkbenchflow.EvaluationConfig.checkpoints
--checkpoint-keepsdkbenchflow.EvaluationConfig.checkpoint_keep
--freeze-workspacesdkbenchflow.EvaluationConfig.freeze_workspace
--keep-sandbox (0.10)sdkbenchflow.EvaluationConfig.keep_sandbox
--accept-deviations (0.10)sdkbenchflow.EvaluationConfig.accept_deviations
--fresh-installsdkbenchflow.EvaluationConfig.fresh_install
--allow-cloud-metadatasdkbenchflow.EvaluationConfig.allow_cloud_metadata
--integritysdkbenchflow.EvaluationConfig.integrity
--verifier-sandboxsdkbenchflow.EvaluationConfig.verifier_sandbox
--quietcliconsole output only; Python reports through the logging module
--jobs-dirsdkbenchflow.Evaluation.__init__(jobs_dir)
--freshsdkbenchflow.Evaluation.__init__(job_name)pass a new job_name
--job-namesdkbenchflow.Evaluation.__init__(job_name)
--restart-changed (0.10)sdkbenchflow.Evaluation.__init__(restart_changed)also Evaluation.resume(restart_changed=)
--fail-undersdkbenchflow.EvaluationResult.score_of_plancompare it to your threshold
--fail-onsdkbenchflow.EvaluationResult.resultscount results by error_category / errored / verifier_errored
--summary-outmodulebenchflow.job_export.run_summary_export(result)the benchflow.run-summary document of an EvaluationResult
--codex-apps-policysdkbenchflow.EvaluationConfig.codex_apps_policy
--sandbox-usersdkbenchflow.EvaluationConfig.sandbox_user
--sandbox-setup-timeoutsdkbenchflow.EvaluationConfig.sandbox_setup_timeout
--context-rootsdkbenchflow.EvaluationConfig.context_root
--base-image-overridesdkbenchflow.EvaluationConfig.base_image_override
--separate-verifiersdkbenchflow.EvaluationConfig.separate_verifier
--separate-verifier-includesdkbenchflow.EvaluationConfig.separate_verifier_include
--skills-dirsdkbenchflow.EvaluationConfig.skills_dir
--skill-modesdkbenchflow.EvaluationConfig.skill_mode
--skill-creator-dirsdkbenchflow.EvaluationConfig.skill_creator_dir
--self-gen-no-internetsdkbenchflow.EvaluationConfig.self_gen_no_internet
--loop-strategysdkbenchflow.EvaluationConfig.loop_strategy
--reviewer-agentsdkbenchflow.ReviewerConfig.agentEvaluationConfig.reviewer
--reviewer-modelsdkbenchflow.ReviewerConfig.model
--reviewer-reasoning-effortsdkbenchflow.ReviewerConfig.reasoning_effort
--reviewer-sandboxsdkbenchflow.ReviewerConfig.environment
--reviewer-timeout-secsdkbenchflow.ReviewerConfig.timeout_sec
--reviewer-idle-timeoutsdkbenchflow.ReviewerConfig.idle_timeout_sec
--reviewer-storage-mb (0.10)sdkbenchflow.ReviewerConfig.storage_mb
--reviewer-memory-mb (0.10)sdkbenchflow.ReviewerConfig.memory_mb
--reviewer-setup-timeout (0.10)sdkbenchflow.ReviewerConfig.setup_timeout_sec
--reviewer-evidence-timeout (0.10)sdkbenchflow.ReviewerConfig.evidence_timeout_sec
--reviewer-concurrencysdkbenchflow.ReviewerConfig.concurrency
--reviewer-imagesdkbenchflow.ReviewerConfig.image
--reviewer-agent-envsdkbenchflow.ReviewerConfig.agent_env
--reviewer-open-networksdkbenchflow.ReviewerConfig.open_network
--agent-envsdkbenchflow.EvaluationConfig.agent_env
--allow-task-envmodulebenchflow.task.env.allow_task_env(names)or BENCHFLOW_ALLOW_TASK_ENV=NAME,NAME in the environment
--includesdkbenchflow.EvaluationConfig.include_tasks
--excludesdkbenchflow.EvaluationConfig.exclude_tasks
--datasetmodulebenchflow._utils.dataset_registry.resolve_dataset(spec)pass its tasks dir as tasks_dir and its name/version/digests as EvaluationConfig.dataset_*
--registrymodulebenchflow._utils.dataset_registry.resolve_dataset(registry)
--ignore-bench-versionclithe CLI's bench-version gate for --dataset; resolve_dataset() does not check the bench version
--task-manifest-outmodulebenchflow.eval_artifacts.write_task_manifest(path)
--run-config-outsdkbenchflow.Evaluation.to_dictthe CLI's run-config JSON also records the retry flags
--health-summary-outmodulebenchflow.eval_artifacts.write_health_summary(job_dir)
--expected-tasksmodulebenchflow.eval_artifacts.write_canonical_selection(expected_tasks)
--canonicalizemodulebenchflow.eval_artifacts.write_canonical_selection(policy)
--canonical-selection-outmodulebenchflow.eval_artifacts.write_canonical_selection(path)
--canonical-jobs-dirmodulebenchflow.eval_artifacts.materialize_canonical_job(output_dir)
--retry-from-checkpointsdkbenchflow.EvaluationConfig.retry_from_checkpointneeds checkpoints
--retry-promptsdkbenchflow.EvaluationConfig.retry_prompt
--retry-resume-sessionsdkbenchflow.EvaluationConfig.retry_resume_session
--max-cost-usdsdkbenchflow.Budget.max_cost_usdEvaluation(budget=Budget(...))
--max-sandbox-secondssdkbenchflow.Budget.max_sandbox_seconds
--max-tokenssdkbenchflow.Budget.max_tokens
--max-rolloutssdkbenchflow.Budget.max_rollouts
--token-budget (0.10)sdkbenchflow.TrialBudget.tokensEvaluationConfig(trial_budget=TrialBudget(...)); a task's agent.token_budget
--turn-budget (0.10)sdkbenchflow.TrialBudget.turnsas --token-budget; a task's agent.turn_budget
--retry-policyclireserved: only recorded in the --run-config-out file
--retry-attemptssdkbenchflow.RetryConfig.max_retriesEvaluationConfig.retry
--retry-concurrencyclireserved: only recorded in the --run-config-out file
--publish-hfmodulebenchflow.publish.huggingface.publish_folder_to_hf(repo_id)
--hf-prefixmodulebenchflow.publish.huggingface.publish_folder_to_hf(path_in_repo)
--hf-public-read-checkmodulebenchflow.publish.huggingface.publish_folder_to_hf(public_read_check)
--publish-bucketmodulebenchflow.publish.huggingface.publish_folder_to_bucket(bucket_id)
--eval-results-modelmodulebenchflow.publish.huggingface.open_eval_results_pr(model_repo)
--eval-results-datasetmodulebenchflow.publish.huggingface.open_eval_results_pr(dataset_id)
--eval-results-taskmodulebenchflow.publish.huggingface.open_eval_results_pr(task_id)
--matrixsdkbenchflow.Evaluation.__init__(config)one Evaluation per model entry, each with its own jobs_dir
--trialssdkbenchflow.Evaluation.__init__(job_name)run the Evaluation once per trial with a distinct job_name
--n-taskssdkbenchflow.EvaluationConfig.n_tasks
--sample-seedsdkbenchflow.EvaluationConfig.sample_seed
--timeout-multipliersdkbenchflow.EvaluationConfig.timeout_multiplier
--extra-instructionsdkbenchflow.EvaluationConfig.extra_instruction
--dry-runcliprints the resolved plan and task selection; nothing runs
--seedssdkbenchflow.EvaluationConfig.seedsa list of ints; benchflow.embodied.rollouts.parse_seeds reads the CLI form

bench eval branch

FlagKindPythonNote
--tasks-dirsdkbenchflow.branch(task_path)bf.branch runs one task per call
--agentsdkbenchflow.branch(agent)
--modelsdkbenchflow.branch(model)
--reasoning-effortsdkbenchflow.branch(reasoning_effort)
--harnesssdkbenchflow.branch(harness)
--sandboxsdkbenchflow.branch(sandbox)
--promptsdkbenchflow.branch(prompts)
--checkpoint-after-promptsdkbenchflow.branch(checkpoint_after)
--childsdkbenchflow.branch(children)a label -> prompt mapping or ChildSpec items
--snapshot-layerssdkbenchflow.branch(snapshot_layers)
--parentsdkbenchflow.branch(parent)
--retain-snapshotssdkbenchflow.branch(retain_snapshots)
--from-checkpointsdkbenchflow.branch(from_checkpoint)
--forksdkbenchflow.branch(fork)
--checkpointssdkbenchflow.branch(checkpoints)a CheckpointPolicy: benchflow.checkpoints.parse_checkpoint_policy()
--checkpoint-keepmodulebenchflow.checkpoints.parse_checkpoint_policy(keep)
--resume-sessionsdkbenchflow.branch(resume_session)
--child-retriessdkbenchflow.branch(child_retries)
--stop-on-child-failuresdkbenchflow.branch(continue_after_child_failure)
--concurrencysdkbenchflow.branch(concurrency)
--isolate-childrensdkbenchflow.branch(isolate_children)
--agent-envsdkbenchflow.branch(agent_env)
--includesdkbenchflow.branch(task_path)call bf.branch once per selected task
--jobs-dirsdkbenchflow.branch(jobs_dir)
--job-namesdkbenchflow.branch(job_name)

bench eval metrics

FlagKindPythonNote
--benchmarkmodulebenchflow.metrics.collect_metrics(benchmark)
--agentmodulebenchflow.metrics.collect_metrics(agent)
--modelmodulebenchflow.metrics.collect_metrics(model)
--jsonsdkbenchflow.Job.solve_ratescollect_metrics(...).summary() plus bf.load_job(dir).solve_rates().to_dict()
--ksdkbenchflow.Job.solve_rates(ks)
--solve-thresholdsdkbenchflow.Job.solve_rates(solve_threshold)
--include-controlssdkbenchflow.Job.solve_rates(include_controls)

bench eval compare

FlagKindPythonNote
--jsonsdkbenchflow.Comparison.to_json
--labelssdkbenchflow.compare(labels)
--varysdkbenchflow.compare(vary)
--on-mismatchsdkbenchflow.compare(on_mismatch)
--include-controlssdkbenchflow.compare(include_controls)
--attemptssdkbenchflow.load_job(attempts)load each side, then compare
--outsdkbenchflow.Comparison.to_json(path)
--bysdkbenchflow.compare(by)comma-separated on the CLI, a tuple in Python
--ksdkbenchflow.compare(ks)
--solve-thresholdsdkbenchflow.compare(solve_threshold)

bench eval regrade

FlagKindPythonNote
--tasks-dirsdkbenchflow.regrade(tasks_dir)
--sandboxsdkbenchflow.regrade(sandbox)
--concurrencysdkbenchflow.regrade(concurrency)
--reasonsdkbenchflow.regrade(reason)
--jsonsdkbenchflow.RegradeSummary.to_dictalso written to regrade-summary.json
--review (0.10)sdkbenchflow.regrade(review)
--reviewer-agent (0.10)sdkbenchflow.ReviewerConfig.agentbenchflow.regrade(reviewer); set fields replace the trial's recorded ones
--reviewer-model (0.10)sdkbenchflow.ReviewerConfig.model
--reviewer-reasoning-effort (0.10)sdkbenchflow.ReviewerConfig.reasoning_effort
--reviewer-sandbox (0.10)sdkbenchflow.ReviewerConfig.environment
--reviewer-timeout-sec (0.10)sdkbenchflow.ReviewerConfig.timeout_sec
--reviewer-idle-timeout (0.10)sdkbenchflow.ReviewerConfig.idle_timeout_sec
--reviewer-storage-mb (0.10)sdkbenchflow.ReviewerConfig.storage_mb
--reviewer-memory-mb (0.10)sdkbenchflow.ReviewerConfig.memory_mb
--reviewer-setup-timeout (0.10)sdkbenchflow.ReviewerConfig.setup_timeout_sec
--reviewer-evidence-timeout (0.10)sdkbenchflow.ReviewerConfig.evidence_timeout_sec
--reviewer-concurrency (0.10)sdkbenchflow.ReviewerConfig.concurrency
--reviewer-image (0.10)sdkbenchflow.ReviewerConfig.image
--reviewer-agent-env (0.10)sdkbenchflow.ReviewerConfig.agent_env
--reviewer-open-network (0.10)sdkbenchflow.ReviewerConfig.open_network

bench train convert

FlagKindPythonNote
--outmodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(out)same parameter on the TRL and branch-tree exporters
--formatmodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonlone function per format: prime-sft benchflow.trajectories.export_prime_sft.export_prime_sft_jsonl, trl-sft benchflow.trajectories.export_trl_sft.export_trl_sft_jsonl, branch-tree benchflow.trajectories.export_branch.export_branch_jsonl
--pairsmodulebenchflow.trajectories.export_branch.export_branch_jsonl(pairs_out)
--pairs-any-requestmodulebenchflow.trajectories.export_branch.export_branch_jsonl(any_request_pairs)
--include-oraclemodulebenchflow.trajectories.export_branch.export_branch_jsonl(include_oracle)
--min-rewardmodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(min_reward)
--row-modemodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(row_mode)
--manifestmodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(manifest)
--expected-rowsmodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(expected_rows)
--canonical-selectionmodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(canonical_selection)
--redactmodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(redact)
--context-policymodulebenchflow.trajectories.export_trl_sft.export_trl_sft_jsonl(context_policy)
--tokenizermodulebenchflow.trajectories.export_trl_sft.export_trl_sft_jsonl(tokenizer_id)
--tokenizer-revisionmodulebenchflow.trajectories.export_trl_sft.export_trl_sft_jsonl(tokenizer_revision)
--max-lengthmodulebenchflow.trajectories.export_trl_sft.export_trl_sft_jsonl(max_length)
--subagent-rowsmodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(subagent_rows)
--reward-vectormodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(reward_vector)same on the TRL exporter; benchflow.trajectories.training_signal.rollout_training_signals() reads the vectors without converting
--group-advantagemodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(group_advantage)same on the TRL exporter
--group-bymodulebenchflow.trajectories.export_prime_sft.export_prime_sft_jsonl(group_by)comma-separated on the CLI, a tuple in Python

bench train stream

FlagKindPythonNote
--formatsdkbenchflow.StreamedRollout.to_jsonjsonl is the only format; Python yields StreamedRollout objects
--followsdkbenchflow.stream_rollouts(follow)--no-follow is follow=False
--poll-intervalsdkbenchflow.stream_rollouts(poll_interval)
--timeoutsdkbenchflow.stream_rollouts(timeout)raises StreamTimeout (CLI exit 3)
--group-sizesdkbenchflow.stream_rollouts(group_size)
--group-bysdkbenchflow.stream_rollouts(group_by)comma-separated on the CLI, a tuple in Python
--withheld (0.10)sdkbenchflow.stream_rollouts(on_withheld)the CLI writes each withheld group's records to a file; Python gets the list
View as Markdown