Advanced Guides
Configuration Guide
Curator config controls task discovery and task generation. This is where users choose repository collection scope, PR filters, LLM endpoints, and per-language generation limits.
Common edits
| Field | When to edit |
|---|---|
runtime_info.input.pr_collection.* | Change collection scale, languages, output directory, or repository/PR filters. |
runtime_info.input.llm_api.* | Point Curator at the right model endpoint and Claude Code proxy mode. |
runtime_info.input.languages.<lang> | Enable languages and tune timeout, concurrency, and task caps. |
runtime_info.input.github_token | Usually leave empty and supply tokens through env or token files. |
Complete config.yaml
blocks/curator/config.yaml
meta_info: name: curator label: "Curator" description: Converts GitHub PRs into verified SWE-Bench tasks across 8 programming languages (Python, JavaScript, TypeScript, Go, C, C++, Java, Rust). parent: legoflow blocks: {} dependencies: from: {} # task source block; no upstream to: merged_tasks_dir: to: tracer.input.task_source.dataset_name when: {tracer.input.task_source.provider: local} repos: legoflow-curator: name: legoflow-curator commit_id: 3ba57a1d07ac277d72546d705bf2de6f82ca373e role: core pipeline - CLI, task generation, validation, scoring environment: venv_name: legoflow-curator-env venv_path: artifacts/envs/legoflow-curator-env requirements: repos/legoflow-curator/pyproject.toml python_version: "3.12+" description: Virtual environment for legoflow-curator CLI and dependencies resources: ip: local # CPU-only; runs on any node with Docker available # user / pwd / directory apply only when ip is a remote IP (SSH target). # They are ignored for local execution — the block runs from its own dir. user: null pwd: null directory: null description: CPU node with Docker; runs locally by default. public_storage: nullruntime_info: input: pr_collection: enabled: true languages: [c, cpp, go, java, javascript, typescript, python, rust] repo_num: 100 # repos WITH qualifying PRs per language max_prs_per_repo: 50 output_dir: artifacts/collected_prs token_limit: 32 # first N combined file + env tokens (0 = all) filters: min_stars: 30 min_merged_prs: 5 min_language_percentage: 0.4 max_days_since_push: 1095 min_issue_body_length: 10 min_files_changed: 1 max_files_changed: 25 max_lines_changed: 1500 # Private values are read from environment variables when possible: # OPENAI_API_KEY / ANTHROPIC_API_KEY / CLAUDE_CODE_OAUTH_TOKEN # OPENAI_API_BASE_URL / ANTHROPIC_BASE_URL # Keep tracked config.yaml free of real keys and private endpoints. llm_api: api_key: human # never commit a real key; prefer env/.env api_base_url: human # OpenAI-compatible endpoint (PR eval + instruction gen) pr_model: Qwen3.6-35B-A3B # model for PR filtering/instruction generation task_model: claude-sonnet-4-6 # Claude Code-visible alias for task creation cc_provider_mode: openai_proxy # native | openai_proxy anthropic_base_url: http://127.0.0.1:4010 cc_proxy_port: 4010 github_token: "" # supplied via GITHUB_TOKENS/GITHUB_TOKEN or gh_token.txt; never commit a token # max_verified_tasks: N = stop after N verified tasks; "all" = no cap, consume all collected PRs. languages: py: { enabled: true, params: { timeout: 3200, cc_timeout: 2400, n_concurrent: 24, max_verified_tasks: 256 } } js: { enabled: true, params: { timeout: 3200, cc_timeout: 2400, n_concurrent: 16, max_verified_tasks: 128 } } ts: { enabled: true, params: { timeout: 3600, cc_timeout: 3000, n_concurrent: 16, max_verified_tasks: 128 } } go: { enabled: true, params: { timeout: 3200, cc_timeout: 2400, n_concurrent: 16, max_verified_tasks: 128 } } c: { enabled: true, params: { timeout: 3200, cc_timeout: 2400, n_concurrent: 16, max_verified_tasks: 128 } } cpp: { enabled: true, params: { timeout: 3200, cc_timeout: 2400, n_concurrent: 16, max_verified_tasks: 128 } } java: { enabled: true, params: { timeout: 3200, cc_timeout: 2400, n_concurrent: 16, max_verified_tasks: 128 } } rust: { enabled: true, params: { timeout: 3600, cc_timeout: 3000, n_concurrent: 16, max_verified_tasks: 128 } } output: swe_tasks_dir: path: artifacts/swe_tasks description: Per-language task directories ({lang}-cc/), each with verifiable_tasks.txt listing verified task IDs structure: "artifacts/swe_tasks/{lang}-cc/{task_id}/ with instruction.md, environment/, solution/, tests/" merged_tasks_dir: path: artifacts/merged_swe_tasks description: Optional flattened directory containing all verified tasks from all languages (populated by scripts/extract_verified_tasks.py) structure: "artifacts/merged_swe_tasks/{task_id}/ with instruction.md, environment/, solution/, tests/" extract_command: python scripts/extract_verified_tasks.py logs: path: artifacts/logs/legoflow-curator-create description: "Per-language create logs: cc_<lang>_March.txt"Field guide
| Field | Meaning | User action | Examples |
|---|---|---|---|
meta_info.name, label, description, parent | Curator identity and parent block. | Do not edit for normal runs. | Default block identity. |
meta_info.dependencies.from | Curator has no upstream task source. | Do not edit. | Keep default unless changing handoffs. |
meta_info.dependencies.to.merged_tasks_dir | Wires curated tasks to Tracer when Tracer uses a local task source. | Do not edit unless rewiring pipeline outputs. | Keep default unless changing handoffs. |
meta_info.repos.legoflow-curator | Pinned task-generation repository. | Do not edit unless intentionally updating implementation code. | Pinned commits in repos/. |
meta_info.environment.* | Python environment and dependency metadata for legoflow-curator. | Read during setup; normally do not edit. | artifacts/env/..., Python 3.12 / 3.13. |
meta_info.resources.* | Host where Curator runs. | Keep local unless moving work to a remote node. | local; remote IP only for SSH runs. |
runtime_info.input.pr_collection.enabled | Whether PR collection is active. | Disable only if using already collected inputs. | true, false. |
runtime_info.input.pr_collection.languages | Languages to collect from GitHub. | Edit to narrow or expand task sources. | [python, rust], [c, cpp, go, java]. |
runtime_info.input.pr_collection.repo_num | Target number of qualifying repositories per language. | Lower for smoke runs, raise for data production. | 10 smoke, 100 production. |
runtime_info.input.pr_collection.max_prs_per_repo | Maximum candidate PRs per repository. | Tune for scale and cost. | 10, 50. |
runtime_info.input.pr_collection.output_dir | Where collected PR metadata is written. | Usually keep default. | artifacts/... paths written by runs. |
runtime_info.input.pr_collection.token_limit | First N combined file/env tokens used during collection. | Tune only when collection is too broad or too expensive. | 0 all, 32 first tokens. |
runtime_info.input.pr_collection.filters.* | Repository and PR quality filters. | Tune to control difficulty, recency, size, and quality. | min_stars: 30, max_files_changed: 25. |
runtime_info.input.llm_api.api_key | LLM API key marker. | Replace via setup/env; do not commit real keys. | ""; use env/private local config. |
runtime_info.input.llm_api.api_base_url | LLM API endpoint marker. | Fill with the endpoint used for Curator models. | ""; private OpenAI-compatible endpoint. |
runtime_info.input.llm_api.pr_model | Model for PR analysis. | Change when using a different PR filtering model. | Qwen3.6-35B-A3B, claude-opus-4-6. |
runtime_info.input.llm_api.task_model | Model for task generation. | Change when using a different task-writing model. | claude-sonnet-4-6, proxy alias. |
runtime_info.input.llm_api.cc_provider_mode | Claude Code provider mode. | Keep aligned with your proxy/native setup. | openai_proxy, native. |
runtime_info.input.llm_api.anthropic_base_url | Anthropic-compatible proxy endpoint. | Edit when your local proxy port changes. | http://127.0.0.1:4010, provider Anthropic URL. |
runtime_info.input.llm_api.cc_proxy_port | Local Claude Code proxy port. | Edit only when the proxy uses another port. | 4010, 4011. |
runtime_info.input.github_token | Fallback GitHub token field. | Prefer env variables or gh_token.txt; keep tracked config empty. | ""; GITHUB_TOKENS or gh_token.txt. |
runtime_info.input.languages.<lang>.enabled | Whether to generate tasks for a language. | Toggle per run. | true, false. |
runtime_info.input.languages.<lang>.params.timeout | End-to-end generation timeout. | Raise for slow ecosystems. | 2400, 3200, 3600 seconds. |
runtime_info.input.languages.<lang>.params.cc_timeout | Claude Code task-generation timeout. | Raise when generation times out. | 2400, 3200, 3600 seconds. |
runtime_info.input.languages.<lang>.params.n_concurrent | Per-language concurrency. | Tune for machine capacity and API limits. | 4, 8, 16, 24. |
runtime_info.input.languages.<lang>.params.max_verified_tasks | Verified task cap per language. | Use small values for smoke runs. | 10 smoke, 128, 256, all. |
runtime_info.output.swe_tasks_dir | Per-language verified task output. | Read downstream; usually do not edit. | artifacts/... paths written by runs. |
runtime_info.output.merged_tasks_dir | Flattened verified task output for Tracer. | Usually keep default. | artifacts/... paths written by runs. |
runtime_info.output.logs | Per-language generation logs. | Use for debugging. | artifacts/... paths written by runs. |