Written to .sapling/config.toml by sapling init (or automatically on first run in a new project). Every field:
[project] repo_root = "." [eval] # dev_split = "configs/eval_dev.yaml" # held_out_split = "configs/eval_heldout.yaml" # max_dev_heldout_gap = 0.15 # refuse promotion above this dev-held_out gap (overfitting guard) [tracker] type = "wandb" # "wandb" | "mlflow" # project = "my-team/my-project" [paper_search] # optional - no key needed to search OpenAlex; sent only as a "mailto" # courtesy param for its faster response pool # contact_email = "you@example.com" [model] # /model opens a menu to log in to Sapling, pick an already-registered # provider/model, or register a new one - these are just the starting point. provider_id = "anthropic" model_id = "claude-sonnet-4-5" # effort = "high" # reasoning effort, if the model supports one # context_limit = 1048576 # manual fallback - only needed for a custom # # provider OpenCode has no context-size data for [pair_mode] cadence = "checked-in" # "tight" | "checked-in" | "loose" | "autonomous" [permissions] local_check_bash_allowlist = ["pytest -k *", "python -c *", "*--dry-run*"] experiment_run_min_seconds = 30 destructive_edit_line_threshold = 200 [research_log] path = ".sapling/research_log.jsonl" [memory] # off by default - a fresh project starts genuinely blank. Turn on to let # this project's agent search *other* Sapling projects' Research Logs too. cross_project_search = false