[{"data":1,"prerenderedAt":779},["ShallowReactive",2],{"navigation_docs":3,"-reference-configuration":270,"-reference-configuration-surround":774},[4,28,51,110,243],{"title":5,"path":6,"stem":7,"children":8},"Get started","\u002Fget-started","1.get-started",[9,12,16,20,24],{"title":10,"path":6,"stem":11},"Overview","1.get-started\u002Findex",{"title":13,"path":14,"stem":15},"Why Kraft","\u002Fget-started\u002Fwhy-kraft","1.get-started\u002F0.why-kraft",{"title":17,"path":18,"stem":19},"Install","\u002Fget-started\u002Finstall","1.get-started\u002F1.install",{"title":21,"path":22,"stem":23},"Your first work item","\u002Fget-started\u002Ffirst-work-item","1.get-started\u002F2.first-work-item",{"title":25,"path":26,"stem":27},"Troubleshooting and FAQ","\u002Fget-started\u002Ftroubleshooting","1.get-started\u002F3.troubleshooting",{"title":29,"path":30,"stem":31,"children":32},"Concepts","\u002Fconcepts","2.concepts",[33,35,39,43,47],{"title":10,"path":30,"stem":34},"2.concepts\u002Findex",{"title":36,"path":37,"stem":38},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F1.vocabulary",{"title":40,"path":41,"stem":42},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F2.how-a-work-item-runs",{"title":44,"path":45,"stem":46},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F3.caps-and-budgets",{"title":48,"path":49,"stem":50},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F4.permission-gate",{"title":52,"path":53,"stem":54,"children":55},"Guides","\u002Fguides","3.guides",[56,58,62,66,70,74,78,82,86,90,94,98,102,106],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61},"Use Kraft from your agent","\u002Fguides\u002Fagent-integration","3.guides\u002F01.agent-integration",{"title":63,"path":64,"stem":65},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F02.kraft-lite",{"title":67,"path":68,"stem":69},"Remote access","\u002Fguides\u002Fremote-access","3.guides\u002F03.remote-access",{"title":71,"path":72,"stem":73},"Add or override a harness","\u002Fguides\u002Fadding-a-harness","3.guides\u002F04.adding-a-harness",{"title":75,"path":76,"stem":77},"Schedule or webhook work","\u002Fguides\u002Fschedule-and-webhook-work","3.guides\u002F05.schedule-and-webhook-work",{"title":79,"path":80,"stem":81},"Add a security review or a gate reviewer","\u002Fguides\u002Fadd-review-agents","3.guides\u002F06.add-review-agents",{"title":83,"path":84,"stem":85},"Kraft for VS Code","\u002Fguides\u002Fvscode","3.guides\u002F07.vscode",{"title":87,"path":88,"stem":89},"Reviewing a change","\u002Fguides\u002Freview-a-change","3.guides\u002F08.review-a-change",{"title":91,"path":92,"stem":93},"Write your own chain","\u002Fguides\u002Fwrite-your-own-chain","3.guides\u002F09.write-your-own-chain",{"title":95,"path":96,"stem":97},"Switch a harness","\u002Fguides\u002Fswitch-harness","3.guides\u002F10.switch-harness",{"title":99,"path":100,"stem":101},"Upgrade your templates","\u002Fguides\u002Fupgrading-templates","3.guides\u002F11.upgrading-templates",{"title":103,"path":104,"stem":105},"Operations","\u002Fguides\u002Foperations","3.guides\u002F12.operations",{"title":107,"path":108,"stem":109},"Worker Kit","\u002Fguides\u002Fworker-kit","3.guides\u002F13.worker-kit",{"title":111,"path":112,"stem":113,"children":114},"Reference","\u002Freference","4.reference",[115,117,139,183,201,205,227,231,235,239],{"title":10,"path":112,"stem":116},"4.reference\u002Findex",{"title":118,"path":119,"stem":120,"children":121},"CLI","\u002Freference\u002Fcli","4.reference\u002F1.cli\u002Findex",[122,123,127,131,135],{"title":10,"path":119,"stem":120},{"title":124,"path":125,"stem":126},"Item verbs","\u002Freference\u002Fcli\u002Fitem","4.reference\u002F1.cli\u002F2.item",{"title":128,"path":129,"stem":130},"View verbs","\u002Freference\u002Fcli\u002Fview","4.reference\u002F1.cli\u002F3.view",{"title":132,"path":133,"stem":134},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","4.reference\u002F1.cli\u002F4.repo",{"title":136,"path":137,"stem":138},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","4.reference\u002F1.cli\u002F5.admin",{"title":140,"path":141,"stem":142,"children":143},"Configuration","\u002Freference\u002Fconfiguration","4.reference\u002F2.configuration\u002Findex",[144,145,155,159,163,167,171,175,179],{"title":10,"path":141,"stem":142},{"title":146,"path":147,"stem":148,"children":149},"Repos","\u002Freference\u002Fconfiguration\u002Frepos","4.reference\u002F2.configuration\u002F2.repos\u002Findex",[150,151],{"title":10,"path":147,"stem":148},{"title":152,"path":153,"stem":154},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","4.reference\u002F2.configuration\u002F2.repos\u002F3.workspaces",{"title":156,"path":157,"stem":158},"Policy","\u002Freference\u002Fconfiguration\u002Fpolicy","4.reference\u002F2.configuration\u002F3.policy",{"title":160,"path":161,"stem":162},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","4.reference\u002F2.configuration\u002F4.library-and-chains",{"title":164,"path":165,"stem":166},"Harnesses file","\u002Freference\u002Fconfiguration\u002Fharnesses-file","4.reference\u002F2.configuration\u002F5.harnesses-file",{"title":168,"path":169,"stem":170},"Access","\u002Freference\u002Fconfiguration\u002Faccess","4.reference\u002F2.configuration\u002F6.access",{"title":172,"path":173,"stem":174},"Intake","\u002Freference\u002Fconfiguration\u002Fintake","4.reference\u002F2.configuration\u002F7.intake",{"title":176,"path":177,"stem":178},"Sandbox host","\u002Freference\u002Fconfiguration\u002Fsandbox","4.reference\u002F2.configuration\u002F8.sandbox",{"title":180,"path":181,"stem":182},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","4.reference\u002F2.configuration\u002F9.environment-variables",{"title":184,"path":185,"stem":186,"children":187},"Chain nodes","\u002Freference\u002Fchain-nodes","4.reference\u002F3.chain-nodes\u002Findex",[188,189,193,197],{"title":10,"path":185,"stem":186},{"title":190,"path":191,"stem":192},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","4.reference\u002F3.chain-nodes\u002F2.subprocess-tasks",{"title":194,"path":195,"stem":196},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","4.reference\u002F3.chain-nodes\u002F3.fix-loop",{"title":198,"path":199,"stem":200},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","4.reference\u002F3.chain-nodes\u002F4.result-file",{"title":202,"path":203,"stem":204},"Permission gate","\u002Freference\u002Fpermissions","4.reference\u002F4.permissions",{"title":206,"path":207,"stem":208,"children":209},"Agent harnesses","\u002Freference\u002Fharnesses","4.reference\u002F5.harnesses\u002Findex",[210,211,215,219,223],{"title":10,"path":207,"stem":208},{"title":212,"path":213,"stem":214},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","4.reference\u002F5.harnesses\u002F2.unattended-runs",{"title":216,"path":217,"stem":218},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","4.reference\u002F5.harnesses\u002F3.agent-profiles",{"title":220,"path":221,"stem":222},"Harness files","\u002Freference\u002Fharnesses\u002Fharness-files","4.reference\u002F5.harnesses\u002F4.harness-files",{"title":224,"path":225,"stem":226},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","4.reference\u002F5.harnesses\u002F5.fallback-and-escalation",{"title":228,"path":229,"stem":230},"Inbound triggers","\u002Freference\u002Ftriggers","4.reference\u002F6.triggers",{"title":232,"path":233,"stem":234},"HTTP API","\u002Freference\u002Fhttp-api","4.reference\u002F7.http-api",{"title":236,"path":237,"stem":238},"MCP tools","\u002Freference\u002Fmcp-tools","4.reference\u002F8.mcp-tools",{"title":240,"path":241,"stem":242},"Events","\u002Freference\u002Fevents","4.reference\u002F9.events",{"title":244,"path":245,"stem":246,"children":247},"Project","\u002Fproject","5.project",[248,250,254,258,262,266],{"title":10,"path":245,"stem":249},"5.project\u002Findex",{"title":251,"path":252,"stem":253},"Architecture","\u002Fproject\u002Farchitecture","5.project\u002F1.architecture",{"title":255,"path":256,"stem":257},"Contributing","\u002Fproject\u002Fcontributing","5.project\u002F2.contributing",{"title":259,"path":260,"stem":261},"Security","\u002Fproject\u002Fsecurity","5.project\u002F3.security",{"title":263,"path":264,"stem":265},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","5.project\u002F4.data-and-privacy",{"title":267,"path":268,"stem":269},"Status and support","\u002Fproject\u002Fstatus-and-support","5.project\u002F5.status-and-support",{"id":271,"title":140,"body":272,"description":767,"extension":768,"links":769,"meta":770,"navigation":771,"path":141,"seo":772,"stem":142,"__hash__":773},"docs\u002F4.reference\u002F2.configuration\u002Findex.md",{"type":273,"value":274,"toc":761},"minimark",[275,288,291,313,327,338,357,362,506,509,519],[276,277,278,279,283,284,287],"p",{},"Kraft's configuration is a set of YAML files under ",[280,281,282],"code",{},"$KRAFT_HOME\u002Ftemplates\u002F"," (default ",[280,285,286],{},"~\u002F.kraft\u002Ftemplates\u002F","); this page maps each file to its reference page.",[276,289,290],{},"Kraft seeds the directory from the packaged defaults on first run and never\noverwrites it afterwards, so an upgrade cannot clobber an edited policy. The\nSettings screens in the UI edit these same files, and editing them by hand is\nequally supported.",[292,293,294,301,307],"ul",{},[295,296,297,300],"li",{},[280,298,299],{},"kraft admin doctor"," reports anything that does not parse.",[295,302,303,306],{},[280,304,305],{},"kraft admin reload"," picks up an on-disk edit without a restart.",[295,308,309,312],{},[280,310,311],{},"kraft admin templates lint"," checks the whole library and every chain at\nonce, and writes nothing.",[276,314,315,318,319,322,323,326],{},[280,316,317],{},"KRAFT_HOME"," and ",[280,320,321],{},"KRAFT_TEMPLATES_DIR"," move this directory. See\n",[324,325,180],"a",{"href":181}," for\nthose and every other variable Kraft reads.",[276,328,329,330,333,334,337],{},"Kraft validates each file when it loads it, and reports a file that fails with\nthe offending key named. A chain component may only ",[280,331,332],{},"extends"," a library\ncomponent of its own kind, and a ",[280,335,336],{},"reject_to"," may only name a node before the\ngate that declares it.",[276,339,340,343,344,347,348,351,352,356],{},[280,341,342],{},"registry.yaml",", hook names and ",[280,345,346],{},"gate_after"," do not exist in the current\ntemplate format (V1). Kraft refuses a home that still holds them until you run\n",[280,349,350],{},"kraft admin update",". See\n",[324,353,355],{"href":354},"\u002Freference\u002Fcli\u002Fadmin#migrating-a-pre-v1-template-configuration","Migrating a pre-V1 template configuration",".",[358,359,361],"h2",{"id":360},"files","Files",[363,364,365,381],"table",{},[366,367,368],"thead",{},[369,370,371,375,378],"tr",{},[372,373,374],"th",{},"File",[372,376,377],{},"What it configures",[372,379,380],{},"Page",[382,383,384,399,413,430,444,458,472,486],"tbody",{},[369,385,386,392,395],{},[387,388,389],"td",{},[280,390,391],{},"repos.yaml",[387,393,394],{},"Connected repos: setup command, env, steering, workspaces.",[387,396,397],{},[324,398,146],{"href":147},[369,400,401,406,409],{},[387,402,403],{},[280,404,405],{},"policy.yaml",[387,407,408],{},"Caps, budget, archiving, defaults and maxima, triggers.",[387,410,411],{},[324,412,156],{"href":157},[369,414,415,423,426],{},[387,416,417,318,420],{},[280,418,419],{},"library.yaml",[280,421,422],{},"chains\u002F*.yaml",[387,424,425],{},"Reusable components and the chain templates built from them.",[387,427,428],{},[324,429,160],{"href":161},[369,431,432,437,440],{},[387,433,434],{},[280,435,436],{},"harnesses.yaml",[387,438,439],{},"Harness profiles and agent profiles.",[387,441,442],{},[324,443,164],{"href":165},[369,445,446,451,454],{},[387,447,448],{},[280,449,450],{},"access.yaml",[387,452,453],{},"Bind address, password, remote access.",[387,455,456],{},[324,457,168],{"href":169},[369,459,460,465,468],{},[387,461,462],{},[280,463,464],{},"intake.yaml",[387,466,467],{},"Autonomous pickup of issues.",[387,469,470],{},[324,471,172],{"href":173},[369,473,474,479,482],{},[387,475,476],{},[280,477,478],{},"sandbox.yaml",[387,480,481],{},"Which container CLI runs sandboxed tasks, SELinux, and an extra CA.",[387,483,484],{},[324,485,176],{"href":177},[369,487,488,497,500],{},[387,489,490,493,494],{},[280,491,492],{},"notify.yaml",", ",[280,495,496],{},"theme.yaml",[387,498,499],{},"Notification webhook and UI appearance.",[387,501,502],{},[324,503,505],{"href":504},"#settings-only-files","Settings-only files",[358,507,505],{"id":508},"settings-only-files",[276,510,511,318,513,515,516,518],{},[280,512,492],{},[280,514,496],{}," are written by the Settings screens, and Kraft rereads ",[280,517,492],{}," after each save. You can edit\nthem by hand, but nothing else in this section depends on them.",[363,520,521,530],{},[366,522,523],{},[369,524,525,527],{},[372,526,374],{},[372,528,529],{},"Fields",[382,531,532,561],{},[369,533,534,538],{},[387,535,536],{},[280,537,492],{},[387,539,540,543,544,547,548,551,552,555,556,560],{},[280,541,542],{},"enabled","; ",[280,545,546],{},"url",", the webhook Kraft posts to, which is a secret and is never shown back; ",[280,549,550],{},"base_url",", the address links in a notification use; and ",[280,553,554],{},"events",", the event types that send one. See ",[324,557,559],{"href":558},"\u002Freference\u002Fevents#notifications","Notifications"," for the payload and every event type.",[369,562,563,567],{},[387,564,565],{},[280,566,496],{},[387,568,569,572,573,493,576,493,579,493,582,585,586,589,590,592,593,572,596,493,599,585,602,589,605,592,607,572,610,585,613,589,616,618,619,622,623,572,626,493,629,585,632,635,636,283,639,642,643,572,646,585,649,652,653,572,656,493,659,493,661,493,664,585,667,635,670,572,673,493,676,493,679,493,682,493,685,585,687,642,689,572,692,493,695,585,698,543,700,702,703,706,707,709,710,572,713,715,716,493,719,585,721,543,724,715,726,493,728,493,730,493,733,585,736,642,739,572,742,493,745,493,748,493,751,493,754,493,757,760],{},[280,570,571],{},"palette"," (",[280,574,575],{},"nocturne",[280,577,578],{},"rose",[280,580,581],{},"forest",[280,583,584],{},"amber"," or ",[280,587,588],{},"slate","; default ",[280,591,575],{},"); ",[280,594,595],{},"mode",[280,597,598],{},"light",[280,600,601],{},"dark",[280,603,604],{},"system",[280,606,601],{},[280,608,609],{},"density",[280,611,612],{},"compact",[280,614,615],{},"comfortable",[280,617,612],{},"); and ",[280,620,621],{},"board"," with ",[280,624,625],{},"group_by",[280,627,628],{},"status",[280,630,631],{},"repo",[280,633,634],{},"template","), ",[280,637,638],{},"show_done",[280,640,641],{},"5",") and ",[280,644,645],{},"open_in",[280,647,648],{},"peek",[280,650,651],{},"full","). The new interface also reads ",[280,654,655],{},"surface",[280,657,658],{},"graphite",[280,660,588],{},[280,662,663],{},"ink",[280,665,666],{},"sand",[280,668,669],{},"moss",[280,671,672],{},"accent",[280,674,675],{},"none",[280,677,678],{},"blue",[280,680,681],{},"violet",[280,683,684],{},"green",[280,686,584],{},[280,688,578],{},[280,690,691],{},"colour_amount",[280,693,694],{},"mono",[280,696,697],{},"subtle",[280,699,651],{},[280,701,694],{}," takes only ",[280,704,705],{},"accent: none","); left unset, they follow ",[280,708,571],{},". ",[280,711,712],{},"code_scheme",[280,714,598],{},": ",[280,717,718],{},"auto",[280,720,675],{},[280,722,723],{},"solarized-light",[280,725,601],{},[280,727,718],{},[280,729,675],{},[280,731,732],{},"solarized-dark",[280,734,735],{},"monokai",[280,737,738],{},"dracula",[280,740,741],{},"diff",[280,743,744],{},"layout",[280,746,747],{},"colours",[280,749,750],{},"show_whitespace",[280,752,753],{},"word_highlight",[280,755,756],{},"wrap_lines",[280,758,759],{},"one_file_at_a_time",") are accepted but not used yet. A save changes only the keys it sends.",{"title":762,"searchDepth":763,"depth":763,"links":764},"",2,[765,766],{"id":360,"depth":763,"text":361},{"id":508,"depth":763,"text":505},"Where Kraft's configuration files live and which file controls what.","md",null,{},{"title":10},{"title":140,"description":767},"N-6z0DSBz36NbXcV_KKWGx6YSJZBeRDsmmNCK6dKhFo",[775,777],{"title":136,"path":137,"stem":138,"description":776,"children":-1},"The kraft admin verbs: start, stop, check, update, and configure this machine's server.",{"title":10,"path":147,"stem":148,"description":778,"children":-1},"Every field in repos.yaml, and how kraft repo connect fills it in.",1790824543321]