[{"data":1,"prerenderedAt":1140},["ShallowReactive",2],{"navigation_docs":3,"-reference-cli-admin":270,"-reference-cli-admin-surround":1135},[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":136,"body":272,"description":1128,"extension":1129,"links":1130,"meta":1131,"navigation":1132,"path":137,"seo":1133,"stem":138,"__hash__":1134},"docs\u002F4.reference\u002F1.cli\u002F5.admin.md",{"type":273,"value":274,"toc":1125},"minimark",[275,291,597,939,946,1027,1032,1061,1116,1121],[276,277,278,282,283,286,287,290],"p",{},[279,280,281],"code",{},"kraft admin"," runs this machine's Kraft server. Bare ",[279,284,285],{},"kraft"," is the same as ",[279,288,289],{},"kraft admin start",".",[292,293,298],"pre",{"className":294,"code":295,"language":296,"meta":297,"style":297},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","kraft admin start --port 9000\nkraft admin start --detach\nkraft admin stop\nkraft admin restart\nkraft admin health\nkraft admin doctor\nkraft admin reindex --repo \u003Cpath>\nkraft admin reload\nkraft admin update --restart -y\nkraft admin install-service\nkraft admin uninstall-service\nkraft admin templates lint\nkraft admin templates lint --dir PATH\nkraft admin templates show ID\nkraft admin templates show ID --resolved\nkraft admin templates library\nkraft admin templates library ID\nkraft admin harnesses\nkraft admin harnesses ID\nkraft admin init --repo\nkraft admin mcp\nkraft admin permission-hook cursor --fail-closed\n","bash","",[279,299,300,322,334,344,354,364,374,401,411,427,437,447,460,478,493,510,522,536,546,558,571,581],{"__ignoreMap":297},[301,302,305,308,312,315,318],"span",{"class":303,"line":304},"line",1,[301,306,285],{"class":307},"sBMFI",[301,309,311],{"class":310},"sfazB"," admin",[301,313,314],{"class":310}," start",[301,316,317],{"class":310}," --port",[301,319,321],{"class":320},"sbssI"," 9000\n",[301,323,325,327,329,331],{"class":303,"line":324},2,[301,326,285],{"class":307},[301,328,311],{"class":310},[301,330,314],{"class":310},[301,332,333],{"class":310}," --detach\n",[301,335,337,339,341],{"class":303,"line":336},3,[301,338,285],{"class":307},[301,340,311],{"class":310},[301,342,343],{"class":310}," stop\n",[301,345,347,349,351],{"class":303,"line":346},4,[301,348,285],{"class":307},[301,350,311],{"class":310},[301,352,353],{"class":310}," restart\n",[301,355,357,359,361],{"class":303,"line":356},5,[301,358,285],{"class":307},[301,360,311],{"class":310},[301,362,363],{"class":310}," health\n",[301,365,367,369,371],{"class":303,"line":366},6,[301,368,285],{"class":307},[301,370,311],{"class":310},[301,372,373],{"class":310}," doctor\n",[301,375,377,379,381,384,387,391,394,398],{"class":303,"line":376},7,[301,378,285],{"class":307},[301,380,311],{"class":310},[301,382,383],{"class":310}," reindex",[301,385,386],{"class":310}," --repo",[301,388,390],{"class":389},"sMK4o"," \u003C",[301,392,393],{"class":310},"pat",[301,395,397],{"class":396},"sTEyZ","h",[301,399,400],{"class":389},">\n",[301,402,404,406,408],{"class":303,"line":403},8,[301,405,285],{"class":307},[301,407,311],{"class":310},[301,409,410],{"class":310}," reload\n",[301,412,414,416,418,421,424],{"class":303,"line":413},9,[301,415,285],{"class":307},[301,417,311],{"class":310},[301,419,420],{"class":310}," update",[301,422,423],{"class":310}," --restart",[301,425,426],{"class":310}," -y\n",[301,428,430,432,434],{"class":303,"line":429},10,[301,431,285],{"class":307},[301,433,311],{"class":310},[301,435,436],{"class":310}," install-service\n",[301,438,440,442,444],{"class":303,"line":439},11,[301,441,285],{"class":307},[301,443,311],{"class":310},[301,445,446],{"class":310}," uninstall-service\n",[301,448,450,452,454,457],{"class":303,"line":449},12,[301,451,285],{"class":307},[301,453,311],{"class":310},[301,455,456],{"class":310}," templates",[301,458,459],{"class":310}," lint\n",[301,461,463,465,467,469,472,475],{"class":303,"line":462},13,[301,464,285],{"class":307},[301,466,311],{"class":310},[301,468,456],{"class":310},[301,470,471],{"class":310}," lint",[301,473,474],{"class":310}," --dir",[301,476,477],{"class":310}," PATH\n",[301,479,481,483,485,487,490],{"class":303,"line":480},14,[301,482,285],{"class":307},[301,484,311],{"class":310},[301,486,456],{"class":310},[301,488,489],{"class":310}," show",[301,491,492],{"class":310}," ID\n",[301,494,496,498,500,502,504,507],{"class":303,"line":495},15,[301,497,285],{"class":307},[301,499,311],{"class":310},[301,501,456],{"class":310},[301,503,489],{"class":310},[301,505,506],{"class":310}," ID",[301,508,509],{"class":310}," --resolved\n",[301,511,513,515,517,519],{"class":303,"line":512},16,[301,514,285],{"class":307},[301,516,311],{"class":310},[301,518,456],{"class":310},[301,520,521],{"class":310}," library\n",[301,523,525,527,529,531,534],{"class":303,"line":524},17,[301,526,285],{"class":307},[301,528,311],{"class":310},[301,530,456],{"class":310},[301,532,533],{"class":310}," library",[301,535,492],{"class":310},[301,537,539,541,543],{"class":303,"line":538},18,[301,540,285],{"class":307},[301,542,311],{"class":310},[301,544,545],{"class":310}," harnesses\n",[301,547,549,551,553,556],{"class":303,"line":548},19,[301,550,285],{"class":307},[301,552,311],{"class":310},[301,554,555],{"class":310}," harnesses",[301,557,492],{"class":310},[301,559,561,563,565,568],{"class":303,"line":560},20,[301,562,285],{"class":307},[301,564,311],{"class":310},[301,566,567],{"class":310}," init",[301,569,570],{"class":310}," --repo\n",[301,572,574,576,578],{"class":303,"line":573},21,[301,575,285],{"class":307},[301,577,311],{"class":310},[301,579,580],{"class":310}," mcp\n",[301,582,584,586,588,591,594],{"class":303,"line":583},22,[301,585,285],{"class":307},[301,587,311],{"class":310},[301,589,590],{"class":310}," permission-hook",[301,592,593],{"class":310}," cursor",[301,595,596],{"class":310}," --fail-closed\n",[598,599,600,613],"table",{},[601,602,603],"thead",{},[604,605,606,610],"tr",{},[607,608,609],"th",{},"Command",[607,611,612],{},"Effect",[614,615,616,687,700,710,720,730,744,758,810,824,852,866,880,897,913,923],"tbody",{},[604,617,618,624],{},[619,620,621],"td",{},[279,622,623],{},"start",[619,625,626,627,629,630,633,634,637,638,633,641,644,645,648,649,651,652,654,655,657,658,660,661,654,664,667,668,654,670,672,673,675,676,679,680,651,683,686],{},"Runs the server in the foreground; the same as bare ",[279,628,285],{},". ",[279,631,632],{},"--host"," and ",[279,635,636],{},"--port"," override ",[279,639,640],{},"KRAFT_HOST",[279,642,643],{},"KRAFT_PORT",", which override ",[279,646,647],{},"access.yaml",". The flags are not saved: other commands still dial the host and port in ",[279,650,640],{},"\u002F",[279,653,643],{}," or ",[279,656,647],{},", so ",[279,659,623],{}," prints the ",[279,662,663],{},"KRAFT_HOST=H",[279,665,666],{},"KRAFT_PORT=N"," they need when ",[279,669,632],{},[279,671,636],{}," differs (a wildcard ",[279,674,632],{}," such as ",[279,677,678],{},"0.0.0.0"," needs none). ",[279,681,682],{},"--detach",[279,684,685],{},"-d"," forks it into its own session and returns once it is up.",[604,688,689,694],{},[619,690,691],{},[279,692,693],{},"stop",[619,695,696,697,290],{},"Sends SIGTERM to the process in ",[279,698,699],{},"run\u002Fkraft.pid",[604,701,702,707],{},[619,703,704],{},[279,705,706],{},"restart",[619,708,709],{},"Stops, then starts again the same way it was running: through the service manager if one is installed, back into the background if it was detached. A server running attached to a terminal is stopped, with a note that only that terminal can bring it back.",[604,711,712,717],{},[619,713,714],{},[279,715,716],{},"health",[619,718,719],{},"Exits 1 when the server is degraded, with the reasons on stdout.",[604,721,722,727],{},[619,723,724],{},[279,725,726],{},"doctor",[619,728,729],{},"Runs every check in one pass. Exits 1 if any fails.",[604,731,732,737],{},[619,733,734],{},[279,735,736],{},"reindex",[619,738,739,740,743],{},"Rescans documents into the search index. ",[279,741,742],{},"--repo"," limits it to one repo.",[604,745,746,751],{},[619,747,748],{},[279,749,750],{},"reload",[619,752,753,754,757],{},"Rereads the template library and ",[279,755,756],{},"policy.yaml"," from disk, with no restart.",[604,759,760,765],{},[619,761,762],{},[279,763,764],{},"update",[619,766,767,768,771,772,775,776,779,780,783,784,787,788,791,792,795,796,799,800,803,804,809],{},"Installs the newest release, or runs ",[279,769,770],{},"brew upgrade"," if you installed with Homebrew. ",[279,773,774],{},"--force"," installs even when current. ",[279,777,778],{},"--restart"," also restarts a running server. ",[279,781,782],{},"--channel rc|beta|alpha"," takes pre-releases (",[279,785,786],{},"rc"," only release candidates and finals, ",[279,789,790],{},"beta"," adds betas, ",[279,793,794],{},"alpha"," takes anything); the default, ",[279,797,798],{},"stable",", never does, and Homebrew installs only track stable. ",[279,801,802],{},"-y"," accepts the ",[805,806,808],"a",{"href":807},"#migrating-a-pre-v1-template-configuration","template migration"," without asking.",[604,811,812,821],{},[619,813,814,817,818],{},[279,815,816],{},"install-service",", ",[279,819,820],{},"uninstall-service",[619,822,823],{},"Register or remove Kraft as an OS service (a launchd agent on macOS, a systemd user unit on Linux) that restarts if it exits. Stop a running server first.",[604,825,826,831],{},[619,827,828],{},[279,829,830],{},"templates lint",[619,832,833,834,837,838,841,842,629,845,848,849,290],{},"Checks every chain in the library, including that ",[279,835,836],{},"harnesses.yaml"," can launch each agent task (a ",[279,839,840],{},"profile:"," with no model for its harness's provider is an error), and exits 1 on any error, printing each as ",[279,843,844],{},"file:line:column: message",[279,846,847],{},"--dir PATH"," checks that directory in-process, with no server and no ",[279,850,851],{},"$KRAFT_HOME",[604,853,854,859],{},[619,855,856],{},[279,857,858],{},"templates show ID",[619,860,861,862,865],{},"One chain as written. ",[279,863,864],{},"--resolved"," expands its library components.",[604,867,868,873],{},[619,869,870],{},[279,871,872],{},"templates library [ID]",[619,874,875,876,879],{},"Every library component, its kind and the chains using it. With an ID, one component's definition, users and lint issues (",[279,877,878],{},"tasks.implementer",", or a unique bare name).",[604,881,882,887],{},[619,883,884],{},[279,885,886],{},"harnesses [ID]",[619,888,889,890,892,893,896],{},"Every ",[279,891,836],{}," profile, its provider, and the library tasks and chains selecting it (a chain's own ",[279,894,895],{},"harness:"," on a task included). With an ID, one profile in detail.",[604,898,899,904],{},[619,900,901],{},[279,902,903],{},"init [--repo]",[619,905,906,907,909,910,290],{},"Registers the MCP server and skills with an agent. ",[279,908,742],{}," installs into this repo, not your user config. See ",[805,911,912],{"href":60},"Agent integration",[604,914,915,920],{},[619,916,917],{},[279,918,919],{},"mcp",[619,921,922],{},"Serves the MCP tools over stdio.",[604,924,925,930],{},[619,926,927],{},[279,928,929],{},"permission-hook HARNESS",[619,931,932,933,936,937,290],{},"What a Cursor or Codex worker's pre-tool hook runs. You do not run it by hand. ",[279,934,935],{},"--fail-closed"," denies rather than giving no opinion when Kraft cannot answer. See ",[805,938,202],{"href":203},[276,940,941,942,945],{},"Kraft refuses to start on a non-loopback address without a password. It also\nrefuses a second start against the same run directory while the first is\nalive. The foreground server stops on Ctrl-C. Use ",[279,943,944],{},"kraft admin stop"," for one\nyou started elsewhere.",[276,947,948,951,952,955,956,958,959,962,963,966,967,970,971,975,976,979,980,983,984,987,988,992,993,995,996,999,1000,1003,1004,1007,1008,1012,1013,1015,1016,1019,1020,1023,1024,1026],{},[279,949,950],{},"kraft admin doctor"," fails its ",[279,953,954],{},"kraft on PATH"," row when an older ",[279,957,285],{}," sits\nahead of this one on ",[279,960,961],{},"PATH",", and ",[279,964,965],{},"kraft admin update"," warns about it. Its\n",[279,968,969],{},"embeddings"," row fails when an installed embedder's model will not load. See\n",[805,972,974],{"href":973},"\u002Fget-started\u002Finstall#enable-vector-search","Enable vector search",".\nA sandboxed repository's ",[279,977,978],{},"sandbox"," row names the runtime it found (Docker or\nPodman, rootless or not) and the resource limits it can enforce, and fails\nwhen that runtime does not answer, when SELinux enforces and\n",[805,981,982],{"href":177},"sandbox.yaml"," does not say how to get past\nit, when ",[279,985,986],{},"ca_bundle"," cannot be used, when the sandbox sets a\n",[805,989,991],{"href":990},"\u002Freference\u002Fconfiguration\u002Frepos#resource-limits","limit"," the runtime cannot\nenforce, or when the sandbox image is not pulled. It reads ",[279,994,982],{},"\nafresh each run. A ",[279,997,998],{},"proxy"," row warns when a proxy variable points at this\nmachine's loopback, which a container cannot reach, and a ",[279,1001,1002],{},"ca"," row when\n",[279,1005,1006],{},"SSL_CERT_FILE"," is set but cannot be used, so sandboxes ignore it. Those two\nread doctor's own environment, not the daemon's.\nFor a repository whose sandbox is a ",[805,1009,1011],{"href":1010},"\u002Freference\u002Fconfiguration\u002Frepos#kits","Kit",",\ndoctor fetches and lowers the Kit first: the ",[279,1014,978],{}," row fails naming the Kit\nand why when it cannot, and otherwise it and the egress, proxy and credentials\nrows check the sandbox the Kit lowers to. A ",[279,1017,1018],{},"kit hosts"," row warns about each\nhost a harness requires that the Kit does not allow, and a ",[279,1021,1022],{},"kit credentials","\nrow about each credential service with no binding in ",[279,1025,982],{},". Doctor\nfetches each Kit it has not cached; under Podman a single-manifest Kit is\npulled, which can take up to 10 minutes per repository the first time.",[1028,1029,1031],"h2",{"id":1030},"migrating-a-pre-v1-template-configuration","Migrating a pre-V1 template configuration",[276,1033,1034,1035,1038,1039,1042,1043,1046,1047,1049,1050,1052,1053,1056,1057,1060],{},"\"V1\" is the current template format: a ",[279,1036,1037],{},"library.yaml"," plus ",[279,1040,1041],{},"chains\u002F*.yaml",". The\nolder format had a ",[279,1044,1045],{},"registry.yaml"," and no ",[279,1048,1037],{},". A Kraft home that still\nholds it is not converted or overwritten. The\nserver starts degraded and refuses new work until you run\n",[279,1051,965],{},". That command says what will change, asks, and then moves\nthe whole ",[279,1054,1055],{},"templates\u002F"," directory to a ",[279,1058,1059],{},"templates.pre-v1-\u003Ctime>"," backup beside\nit and installs the V1 configuration.",[1062,1063,1064,1073,1108,1113],"ul",{},[1065,1066,1067,1069,1070,1072],"li",{},[279,1068,802],{}," accepts without the question. With no terminal and no ",[279,1071,802],{},", it changes\nnothing.",[1065,1074,1075,817,1077,817,1080,817,1083,817,1086,1089,1090,633,1093,1096,1097,1100,1101,1103,1104,290],{},[279,1076,647],{},[279,1078,1079],{},"notify.yaml",[279,1081,1082],{},"theme.yaml",[279,1084,1085],{},"repos.yaml",[279,1087,1088],{},"intake.yaml",",\n",[279,1091,1092],{},"steering\u002F",[279,1094,1095],{},"harnesses\u002F"," carry across. The next start folds\n",[279,1098,1099],{},"steering\u002F*.md"," into ",[279,1102,1037],{}," as\n",[805,1105,1107],{"href":1106},"\u002Freference\u002Fconfiguration\u002Frepos#repository-steering","steering profiles",[1065,1109,1110,1112],{},[279,1111,756],{}," starts from the V1 default and keeps your value for every key\nV1 still has. Kraft prints each key it drops, with its old value.",[1065,1114,1115],{},"Your old chains and registry stay only in the backup. There is no migration\nhelper.",[276,1117,1118,1119,290],{},"An update interrupted mid-swap is finished by the next start or the next\n",[279,1120,965],{},[1122,1123,1124],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":297,"searchDepth":324,"depth":324,"links":1126},[1127],{"id":1030,"depth":324,"text":1031},"The kraft admin verbs: start, stop, check, update, and configure this machine's server.","md",null,{},true,{"title":136,"description":1128},"b6XG7wCcPWaLGpqAtuc4rO4uh7r3-g4lH1oz8pzCMDo",[1136,1138],{"title":132,"path":133,"stem":134,"description":1137,"children":-1},"The kraft repo verbs: list, connect, and disconnect repositories, and reach their worktrees.",{"title":10,"path":141,"stem":142,"description":1139,"children":-1},"Where Kraft's configuration files live and which file controls what.",1790824509136]