Documentation
project.yml schema
The Zod-derived schema for .vibestrate/project.yml. Defaults are the values Vibestrate fills in when the key is missing.
Every field on this page is derived from the runtime Zod schemas that validate project.yml on every load. When you edit the YAML by hand, Vibestrate runs these schemas against it; broken configs fail at load time, not mid-run.
To edit safely, use vibe config get and vibe config set - both go through the same schema.
project
object
project.name
string
project.type
string (optional)
default:
"generic" git
object (optional)
default:
{"mainBranch":"main","branchPrefix":"vibestrate/","worktreeDir":"../.vibestrate-worktrees","requireCleanMain":false,"allowAutoMerge":false,"allowAutoPush":false} git.mainBranch
string (optional)
default:
"main" git.branchPrefix
string (optional)
default:
"vibestrate/" git.worktreeDir
string (optional)
default:
"../.vibestrate-worktrees" git.requireCleanMain
boolean (optional)
default:
false git.allowAutoMerge
boolean (optional)
default:
false git.allowAutoPush
boolean (optional)
default:
false workflow
object (optional)
default:
{"id":"default-plan-build-review","maxReviewLoops":2,"requireHumanMerge":true} workflow.id
string (optional)
default:
"default-plan-build-review" workflow.maxReviewLoops
number (optional)
default:
2 workflow.requireHumanMerge
boolean (optional)
default:
true execution
object (optional)
default:
{"backend":"local-worktree"} execution.backend
enum (optional)
values:
local-worktree | docker | remote-sandbox | cloud-runner
default:
"local-worktree" providers
record<string, object | object>
profiles
record<string, object> (optional)
default:
{} crews
record<string, object> (optional)
default:
{} defaultCrew
string (optional)
default:
"default" budget
object (optional)
default:
{"spendCapDailyUsd":null,"capAction":"stop","warnThresholdPct":0.8} budget.spendCapDailyUsd
number | null (optional)
default:
null budget.capAction
enum (optional)
values:
stop | downgrade-model | reduce-effort
default:
"stop" budget.warnThresholdPct
number (optional)
default:
0.8 budget.fallbackProfile
string (optional)
commands
object (optional)
default:
{"validate":[]} commands.validate
array<string> (optional)
default:
[] commands.validationProfiles
record<string, object> (optional)
default:
{} permissions
object (optional)
default:
{"profiles":{}} permissions.profiles
record<string, object> (optional)
default:
{} policies
object (optional)
default:
{"forbidMainBranchWrites":true,"forbidSecretsAccess":true,"forbidAutoPush":true,"forbidAutoMerge":true,"preserveArtifacts":true,"requireApprovalAtStages":[],"allowInteractiveTerminal":false} policies.forbidMainBranchWrites
boolean (optional)
default:
true policies.forbidSecretsAccess
boolean (optional)
default:
true policies.forbidAutoPush
boolean (optional)
default:
true policies.forbidAutoMerge
boolean (optional)
default:
true policies.preserveArtifacts
boolean (optional)
default:
true policies.requireApprovalAtStages
array<enum> (optional)
default:
[] policies.allowInteractiveTerminal
boolean (optional)
default:
false policies.strictApplyOnly
boolean (optional)
default:
false scheduler
object (optional)
default:
{"maxConcurrentRuns":1,"maxConcurrentWriteRoles":1,"conflictPolicy":"warn","queuePolicy":"fifo","sourceQuotas":{}} scheduler.maxConcurrentRuns
number (optional)
default:
1 scheduler.maxConcurrentWriteRoles
number (optional)
default:
1 scheduler.conflictPolicy
enum (optional)
values:
warn | block
default:
"warn" scheduler.queuePolicy
enum (optional)
values:
fifo | priority | fair
default:
"fifo" scheduler.sourceQuotas
record<string, number> (optional)
default:
{} scheduler.defaultSourceConcurrency
number (optional)
editor
object (optional)
default:
{"enabled":false,"command":"code","args":["--goto","{file}:{line}:{column}"]} editor.enabled
boolean (optional)
default:
false editor.command
string (optional)
default:
"code" editor.args
array<string> (optional)
default:
["--goto","{file}:{line}:{column}"]