[{"data":1,"prerenderedAt":2666},["ShallowReactive",2],{"navigation_docs":3,"-reference-cli-admin":520,"-reference-cli-admin-surround":2661},[4,28,51,191,222,485],{"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},"FAQ","\u002Fget-started\u002Ffaq","1.get-started\u002F3.faq",{"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},"How a work item runs","\u002Fconcepts\u002Fhow-a-work-item-runs","2.concepts\u002F1.how-a-work-item-runs",{"title":40,"path":41,"stem":42},"Caps and budgets","\u002Fconcepts\u002Fcaps-and-budgets","2.concepts\u002F2.caps-and-budgets",{"title":44,"path":45,"stem":46},"Why a permission gate","\u002Fconcepts\u002Fpermission-gate","2.concepts\u002F3.permission-gate",{"title":48,"path":49,"stem":50},"Vocabulary","\u002Fconcepts\u002Fvocabulary","2.concepts\u002F4.vocabulary",{"title":52,"path":53,"stem":54,"children":55},"Guides","\u002Fguides","3.guides",[56,58,96,117,138,187],{"title":10,"path":53,"stem":57},"3.guides\u002Findex",{"title":59,"path":60,"stem":61,"children":62,"page":95},"Day to day","\u002Fguides\u002Fday-to-day","3.guides\u002F1.day-to-day",[63,67,71,75,79,83,87,91],{"title":64,"path":65,"stem":66},"The setup wizard on first start","\u002Fguides\u002Fday-to-day\u002Ffirst-run","3.guides\u002F1.day-to-day\u002F2.first-run",{"title":68,"path":69,"stem":70},"File a work item","\u002Fguides\u002Fday-to-day\u002Ffile-a-work-item","3.guides\u002F1.day-to-day\u002F3.file-a-work-item",{"title":72,"path":73,"stem":74},"Use Kraft from your agent","\u002Fguides\u002Fday-to-day\u002Fagent-integration","3.guides\u002F1.day-to-day\u002F4.agent-integration",{"title":76,"path":77,"stem":78},"Reviewing a change","\u002Fguides\u002Fday-to-day\u002Freview-a-change","3.guides\u002F1.day-to-day\u002F5.review-a-change",{"title":80,"path":81,"stem":82},"Raise a cap on a stopped item","\u002Fguides\u002Fday-to-day\u002Fraise-a-cap","3.guides\u002F1.day-to-day\u002F6.raise-a-cap",{"title":84,"path":85,"stem":86},"Kraft for VS Code","\u002Fguides\u002Fday-to-day\u002Fvscode","3.guides\u002F1.day-to-day\u002F7.vscode",{"title":88,"path":89,"stem":90},"Kraft on a phone","\u002Fguides\u002Fday-to-day\u002Fkraft-on-a-phone","3.guides\u002F1.day-to-day\u002F8.kraft-on-a-phone",{"title":92,"path":93,"stem":94},"Get notified when an item needs you","\u002Fguides\u002Fday-to-day\u002Fnotifications","3.guides\u002F1.day-to-day\u002F9.notifications",false,{"title":97,"path":98,"stem":99,"children":100,"page":95},"Customize and automate","\u002Fguides\u002Fcustomize","3.guides\u002F2.customize",[101,105,109,113],{"title":102,"path":103,"stem":104},"Write your own chain","\u002Fguides\u002Fcustomize\u002Fwrite-your-own-chain","3.guides\u002F2.customize\u002F1.write-your-own-chain",{"title":106,"path":107,"stem":108},"Add a security review or a gate reviewer","\u002Fguides\u002Fcustomize\u002Fadd-review-agents","3.guides\u002F2.customize\u002F2.add-review-agents",{"title":110,"path":111,"stem":112},"Schedule or webhook work","\u002Fguides\u002Fcustomize\u002Fschedule-and-webhook-work","3.guides\u002F2.customize\u002F3.schedule-and-webhook-work",{"title":114,"path":115,"stem":116},"Share chains with add-ons","\u002Fguides\u002Fcustomize\u002Fshare-chains-with-addons","3.guides\u002F2.customize\u002F4.share-chains-with-addons",{"title":118,"path":119,"stem":120,"children":121,"page":95},"Agents and harnesses","\u002Fguides\u002Fharnesses","3.guides\u002F3.harnesses",[122,126,130,134],{"title":123,"path":124,"stem":125},"Switch a task to another harness","\u002Fguides\u002Fharnesses\u002Fswitch-harness","3.guides\u002F3.harnesses\u002F1.switch-harness",{"title":127,"path":128,"stem":129},"Add or override a harness","\u002Fguides\u002Fharnesses\u002Fadding-a-harness","3.guides\u002F3.harnesses\u002F2.adding-a-harness",{"title":131,"path":132,"stem":133},"Build a worker Kit","\u002Fguides\u002Fharnesses\u002Fworker-kit","3.guides\u002F3.harnesses\u002F3.worker-kit",{"title":135,"path":136,"stem":137},"Give a worker its login","\u002Fguides\u002Fharnesses\u002Fgive-a-worker-its-login","3.guides\u002F3.harnesses\u002F4.give-a-worker-its-login",{"title":139,"path":140,"stem":141,"children":142,"page":95},"Run the server","\u002Fguides\u002Frun","3.guides\u002F4.run",[143,147,151,155,159,163,167,171,175,179,183],{"title":144,"path":145,"stem":146},"Remote access","\u002Fguides\u002Frun\u002Fremote-access","3.guides\u002F4.run\u002F01.remote-access",{"title":148,"path":149,"stem":150},"Put a proxy in front of Kraft","\u002Fguides\u002Frun\u002Fput-a-proxy-in-front-of-kraft","3.guides\u002F4.run\u002F02.put-a-proxy-in-front-of-kraft",{"title":152,"path":153,"stem":154},"Restart Kraft without ending running agents","\u002Fguides\u002Frun\u002Frestart-kraft","3.guides\u002F4.run\u002F03.restart-kraft",{"title":156,"path":157,"stem":158},"Back up and restore the database","\u002Fguides\u002Frun\u002Fback-up-and-restore","3.guides\u002F4.run\u002F04.back-up-and-restore",{"title":160,"path":161,"stem":162},"Logs and disk space","\u002Fguides\u002Frun\u002Flogs-and-disk-space","3.guides\u002F4.run\u002F05.logs-and-disk-space",{"title":164,"path":165,"stem":166},"Run Kraft as a service","\u002Fguides\u002Frun\u002Frun-as-a-service","3.guides\u002F4.run\u002F06.run-as-a-service",{"title":168,"path":169,"stem":170},"Upgrade Kraft","\u002Fguides\u002Frun\u002Fupgrade-kraft","3.guides\u002F4.run\u002F07.upgrade-kraft",{"title":172,"path":173,"stem":174},"Upgrade your configuration","\u002Fguides\u002Frun\u002Fupgrade-your-configuration","3.guides\u002F4.run\u002F08.upgrade-your-configuration",{"title":176,"path":177,"stem":178},"Upgrade from 1.4","\u002Fguides\u002Frun\u002Fupgrade-from-1-4","3.guides\u002F4.run\u002F09.upgrade-from-1-4",{"title":180,"path":181,"stem":182},"Upgrade from 0.x or a release candidate","\u002Fguides\u002Frun\u002Fupgrade-from-0-x-or-a-release-candidate","3.guides\u002F4.run\u002F10.upgrade-from-0-x-or-a-release-candidate",{"title":184,"path":185,"stem":186},"Roll back to 1.4","\u002Fguides\u002Frun\u002Froll-back","3.guides\u002F4.run\u002F11.roll-back",{"title":188,"path":189,"stem":190},"Kraft Lite","\u002Fguides\u002Fkraft-lite","3.guides\u002F5.kraft-lite",{"title":192,"path":193,"stem":194,"children":195},"Troubleshooting","\u002Ftroubleshooting","4.troubleshooting",[196,198,202,206,210,214,218],{"title":10,"path":193,"stem":197},"4.troubleshooting\u002Findex",{"title":199,"path":200,"stem":201},"Why did my item stop?","\u002Ftroubleshooting\u002Fwhy-did-my-item-stop","4.troubleshooting\u002F1.why-did-my-item-stop",{"title":203,"path":204,"stem":205},"Stop reasons in detail","\u002Ftroubleshooting\u002Fstop-reasons-in-detail","4.troubleshooting\u002F2.stop-reasons-in-detail",{"title":207,"path":208,"stem":209},"Starting and reaching Kraft","\u002Ftroubleshooting\u002Fstarting-and-reaching-kraft","4.troubleshooting\u002F3.starting-and-reaching-kraft",{"title":211,"path":212,"stem":213},"Doctor failures","\u002Ftroubleshooting\u002Fdoctor-failures","4.troubleshooting\u002F4.doctor-failures",{"title":215,"path":216,"stem":217},"Sandbox and Kit stops","\u002Ftroubleshooting\u002Fsandbox-and-kit-stops","4.troubleshooting\u002F5.sandbox-and-kit-stops",{"title":219,"path":220,"stem":221},"Add-on problems","\u002Ftroubleshooting\u002Faddon-problems","4.troubleshooting\u002F6.addon-problems",{"title":223,"path":224,"stem":225,"children":226},"Reference","\u002Freference","5.reference",[227,229,267,289,293,391,409,435,439,443,477,481],{"title":10,"path":224,"stem":228},"5.reference\u002Findex",{"title":230,"path":231,"stem":232,"children":233},"Web UI","\u002Freference\u002Fweb-ui","5.reference\u002F00.web-ui\u002Findex",[234,235,239,243,247,251,255,259,263],{"title":10,"path":231,"stem":232},{"title":236,"path":237,"stem":238},"Sidebar, search, and keyboard","\u002Freference\u002Fweb-ui\u002Fsidebar-search-and-keyboard","5.reference\u002F00.web-ui\u002F0.sidebar-search-and-keyboard",{"title":240,"path":241,"stem":242},"The board","\u002Freference\u002Fweb-ui\u002Fboard","5.reference\u002F00.web-ui\u002F1.board",{"title":244,"path":245,"stem":246},"An item's page","\u002Freference\u002Fweb-ui\u002Fitem-page","5.reference\u002F00.web-ui\u002F2.item-page",{"title":248,"path":249,"stem":250},"Fix loops and test scopes","\u002Freference\u002Fweb-ui\u002Ffix-loops-and-test-scopes","5.reference\u002F00.web-ui\u002F3.fix-loops-and-test-scopes",{"title":252,"path":253,"stem":254},"Config before an item starts","\u002Freference\u002Fweb-ui\u002Fconfig-before-start","5.reference\u002F00.web-ui\u002F4.config-before-start",{"title":256,"path":257,"stem":258},"The review page","\u002Freference\u002Fweb-ui\u002Freview-page","5.reference\u002F00.web-ui\u002F5.review-page",{"title":260,"path":261,"stem":262},"Templates and Settings","\u002Freference\u002Fweb-ui\u002Ftemplates-and-settings","5.reference\u002F00.web-ui\u002F6.templates-and-settings",{"title":264,"path":265,"stem":266},"Analytics","\u002Freference\u002Fweb-ui\u002Fanalytics","5.reference\u002F00.web-ui\u002F7.analytics",{"title":268,"path":269,"stem":270,"children":271},"CLI","\u002Freference\u002Fcli","5.reference\u002F01.cli\u002Findex",[272,273,277,281,285],{"title":10,"path":269,"stem":270},{"title":274,"path":275,"stem":276},"Item verbs","\u002Freference\u002Fcli\u002Fitem","5.reference\u002F01.cli\u002F2.item",{"title":278,"path":279,"stem":280},"View verbs","\u002Freference\u002Fcli\u002Fview","5.reference\u002F01.cli\u002F3.view",{"title":282,"path":283,"stem":284},"Repo verbs","\u002Freference\u002Fcli\u002Frepo","5.reference\u002F01.cli\u002F4.repo",{"title":286,"path":287,"stem":288},"Admin verbs","\u002Freference\u002Fcli\u002Fadmin","5.reference\u002F01.cli\u002F5.admin",{"title":290,"path":291,"stem":292},"Work item statuses","\u002Freference\u002Fstatuses","5.reference\u002F02.statuses",{"title":294,"path":295,"stem":296,"children":297},"Configuration","\u002Freference\u002Fconfiguration","5.reference\u002F03.configuration\u002Findex",[298,299,317,321,325,329,333,337,341,345,379,383,387],{"title":10,"path":295,"stem":296},{"title":300,"path":301,"stem":302,"children":303},"repos.yaml","\u002Freference\u002Fconfiguration\u002Frepos","5.reference\u002F03.configuration\u002F02.repos\u002Findex",[304,305,309,313],{"title":10,"path":301,"stem":302},{"title":306,"path":307,"stem":308},"How connect proposes commands","\u002Freference\u002Fconfiguration\u002Frepos\u002Fconnect-proposals","5.reference\u002F03.configuration\u002F02.repos\u002F1.connect-proposals",{"title":310,"path":311,"stem":312},"detectors.yaml","\u002Freference\u002Fconfiguration\u002Frepos\u002Fdetectors","5.reference\u002F03.configuration\u002F02.repos\u002F2.detectors",{"title":314,"path":315,"stem":316},"Workspaces","\u002Freference\u002Fconfiguration\u002Frepos\u002Fworkspaces","5.reference\u002F03.configuration\u002F02.repos\u002F3.workspaces",{"title":318,"path":319,"stem":320},"policy.yaml","\u002Freference\u002Fconfiguration\u002Fpolicy","5.reference\u002F03.configuration\u002F03.policy",{"title":322,"path":323,"stem":324},"Library and chains","\u002Freference\u002Fconfiguration\u002Flibrary-and-chains","5.reference\u002F03.configuration\u002F04.library-and-chains",{"title":326,"path":327,"stem":328},"harnesses.yaml","\u002Freference\u002Fconfiguration\u002Fharnesses-file","5.reference\u002F03.configuration\u002F05.harnesses-file",{"title":330,"path":331,"stem":332},"access.yaml","\u002Freference\u002Fconfiguration\u002Faccess","5.reference\u002F03.configuration\u002F06.access",{"title":334,"path":335,"stem":336},"intake.yaml","\u002Freference\u002Fconfiguration\u002Fintake","5.reference\u002F03.configuration\u002F07.intake",{"title":338,"path":339,"stem":340},"notify.yaml","\u002Freference\u002Fconfiguration\u002Fnotify","5.reference\u002F03.configuration\u002F08.notify",{"title":342,"path":343,"stem":344},"theme.yaml","\u002Freference\u002Fconfiguration\u002Ftheme","5.reference\u002F03.configuration\u002F09.theme",{"title":346,"path":347,"stem":348,"children":349},"Sandboxed workers","\u002Freference\u002Fconfiguration\u002Fsandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002Findex",[350,351,355,359,363,367,371,375],{"title":10,"path":347,"stem":348},{"title":352,"path":353,"stem":354},"Resource limits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fresource-limits","5.reference\u002F03.configuration\u002F10.sandbox\u002F1.resource-limits",{"title":356,"path":357,"stem":358},"Callbacks from a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcallbacks","5.reference\u002F03.configuration\u002F10.sandbox\u002F2.callbacks",{"title":360,"path":361,"stem":362},"Network policy","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fnetwork-policy","5.reference\u002F03.configuration\u002F10.sandbox\u002F3.network-policy",{"title":364,"path":365,"stem":366},"Credentials","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fcredentials","5.reference\u002F03.configuration\u002F10.sandbox\u002F4.credentials",{"title":368,"path":369,"stem":370},"Kits","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fkits","5.reference\u002F03.configuration\u002F10.sandbox\u002F5.kits",{"title":372,"path":373,"stem":374},"sandbox.yaml","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fsandbox-yaml","5.reference\u002F03.configuration\u002F10.sandbox\u002F6.sandbox-yaml",{"title":376,"path":377,"stem":378},"Git in a sandbox","\u002Freference\u002Fconfiguration\u002Fsandbox\u002Fgit-in-a-sandbox","5.reference\u002F03.configuration\u002F10.sandbox\u002F7.git-in-a-sandbox",{"title":380,"path":381,"stem":382},"Environment variables","\u002Freference\u002Fconfiguration\u002Fenvironment-variables","5.reference\u002F03.configuration\u002F11.environment-variables",{"title":384,"path":385,"stem":386},"Add-ons and collections","\u002Freference\u002Fconfiguration\u002Faddons","5.reference\u002F03.configuration\u002F12.addons",{"title":388,"path":389,"stem":390},"Repo libraries","\u002Freference\u002Fconfiguration\u002Frepo-libraries","5.reference\u002F03.configuration\u002F13.repo-libraries",{"title":392,"path":393,"stem":394,"children":395},"Chain file keys","\u002Freference\u002Fchain-nodes","5.reference\u002F04.chain-nodes\u002Findex",[396,397,401,405],{"title":10,"path":393,"stem":394},{"title":398,"path":399,"stem":400},"Subprocess tasks","\u002Freference\u002Fchain-nodes\u002Fsubprocess-tasks","5.reference\u002F04.chain-nodes\u002F2.subprocess-tasks",{"title":402,"path":403,"stem":404},"Fix loop and judge","\u002Freference\u002Fchain-nodes\u002Ffix-loop","5.reference\u002F04.chain-nodes\u002F3.fix-loop",{"title":406,"path":407,"stem":408},"Result file","\u002Freference\u002Fchain-nodes\u002Fresult-file","5.reference\u002F04.chain-nodes\u002F4.result-file",{"title":410,"path":411,"stem":412,"children":413},"Agent harnesses","\u002Freference\u002Fharnesses","5.reference\u002F05.harnesses\u002Findex",[414,415,419,423,427,431],{"title":10,"path":411,"stem":412},{"title":416,"path":417,"stem":418},"Unattended runs","\u002Freference\u002Fharnesses\u002Funattended-runs","5.reference\u002F05.harnesses\u002F2.unattended-runs",{"title":420,"path":421,"stem":422},"Agent profiles","\u002Freference\u002Fharnesses\u002Fagent-profiles","5.reference\u002F05.harnesses\u002F3.agent-profiles",{"title":424,"path":425,"stem":426},"Harness definition files","\u002Freference\u002Fharnesses\u002Fharness-files","5.reference\u002F05.harnesses\u002F4.harness-files",{"title":428,"path":429,"stem":430},"Fallback and escalation","\u002Freference\u002Fharnesses\u002Ffallback-and-escalation","5.reference\u002F05.harnesses\u002F5.fallback-and-escalation",{"title":432,"path":433,"stem":434},"Cost reporting","\u002Freference\u002Fharnesses\u002Fcost-reporting","5.reference\u002F05.harnesses\u002F6.cost-reporting",{"title":436,"path":437,"stem":438},"Permission gate","\u002Freference\u002Fpermissions","5.reference\u002F06.permissions",{"title":440,"path":441,"stem":442},"Inbound triggers","\u002Freference\u002Ftriggers","5.reference\u002F07.triggers",{"title":444,"path":445,"stem":446,"children":447},"HTTP API","\u002Freference\u002Fhttp-api","5.reference\u002F08.http-api\u002Findex",[448,449,453,457,461,465,469,473],{"title":10,"path":445,"stem":446},{"title":450,"path":451,"stem":452},"Filing, reading and changing work items","\u002Freference\u002Fhttp-api\u002Fwork-items","5.reference\u002F08.http-api\u002F2.work-items",{"title":454,"path":455,"stem":456},"Gates, run control, ending and retry","\u002Freference\u002Fhttp-api\u002Fgates-run-control-and-ending","5.reference\u002F08.http-api\u002F3.gates-run-control-and-ending",{"title":458,"path":459,"stem":460},"The work item object","\u002Freference\u002Fhttp-api\u002Fwork-item-object","5.reference\u002F08.http-api\u002F4.work-item-object",{"title":462,"path":463,"stem":464},"Budget, events, diff and documents","\u002Freference\u002Fhttp-api\u002Fbudget-and-events","5.reference\u002F08.http-api\u002F5.budget-and-events",{"title":466,"path":467,"stem":468},"Repos, chains, harnesses and the server","\u002Freference\u002Fhttp-api\u002Frepos-chains-harnesses-and-server","5.reference\u002F08.http-api\u002F6.repos-chains-harnesses-and-server",{"title":470,"path":471,"stem":472},"Drafts","\u002Freference\u002Fhttp-api\u002Fdrafts","5.reference\u002F08.http-api\u002F7.drafts",{"title":474,"path":475,"stem":476},"Ops for each draft area","\u002Freference\u002Fhttp-api\u002Fdraft-ops","5.reference\u002F08.http-api\u002F8.draft-ops",{"title":478,"path":479,"stem":480},"MCP tools","\u002Freference\u002Fmcp-tools","5.reference\u002F09.mcp-tools",{"title":482,"path":483,"stem":484},"Events","\u002Freference\u002Fevents","5.reference\u002F10.events",{"title":486,"path":487,"stem":488,"children":489},"Security and project","\u002Fproject","6.project",[490,492,496,500,504,508,512,516],{"title":10,"path":487,"stem":491},"6.project\u002Findex",{"title":493,"path":494,"stem":495},"Security","\u002Fproject\u002Fsecurity","6.project\u002F1.security",{"title":497,"path":498,"stem":499},"Data and privacy","\u002Fproject\u002Fdata-and-privacy","6.project\u002F2.data-and-privacy",{"title":501,"path":502,"stem":503},"What's new in 2.0","\u002Fproject\u002Fwhats-new","6.project\u002F3.whats-new",{"title":505,"path":506,"stem":507},"Status and support","\u002Fproject\u002Fstatus-and-support","6.project\u002F4.status-and-support",{"title":509,"path":510,"stem":511},"Architecture","\u002Fproject\u002Farchitecture","6.project\u002F5.architecture",{"title":513,"path":514,"stem":515},"Source map","\u002Fproject\u002Fsource-map","6.project\u002F6.source-map",{"title":517,"path":518,"stem":519},"Contributing","\u002Fproject\u002Fcontributing","6.project\u002F7.contributing",{"id":521,"title":286,"body":522,"description":2655,"extension":2656,"links":2657,"meta":2658,"navigation":2280,"path":287,"seo":2659,"stem":288,"__hash__":2660},"docs\u002F5.reference\u002F01.cli\u002F5.admin.md",{"type":523,"value":524,"toc":2624},"minimark",[525,541,1086,1522,1526,1530,1579,1582,1592,1599,1634,1650,1653,1671,1686,1689,1695,1708,1751,1755,1758,1772,1782,1798,1864,1881,1885,1891,1946,1952,2002,2005,2008,2024,2038,2041,2067,2125,2161,2173,2176,2188,2223,2286,2308,2314,2318,2321,2337,2346,2349,2361,2371,2374,2378,2404,2413,2417,2435,2440,2469,2473,2491,2497,2500,2504,2520,2523,2540,2543,2566,2570,2620],[526,527,528,532,533,536,537,540],"p",{},[529,530,531],"code",{},"kraft admin"," runs this machine's Kraft server. Bare ",[529,534,535],{},"kraft"," is the same as ",[529,538,539],{},"kraft admin start",".",[542,543,548],"pre",{"className":544,"code":545,"language":546,"meta":547,"style":547},"language-bash shiki shiki-themes github-light-high-contrast github-light-high-contrast github-dark-high-contrast","kraft admin start --port 9000\nkraft admin start --detach\nkraft admin stop\nkraft admin restart -y\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 addon validate PATH\nkraft admin addon collection add SOURCE [--ref REF] [--auto-update]\nkraft admin addon collection list\nkraft admin addon collection update [NAME]\nkraft admin addon collection auto-update NAME on|off\nkraft admin addon collection remove NAME\nkraft admin addon install ADDON@COLLECTION [--as ALIAS] [--auto-update] [--re-install] [-y]\nkraft admin addon update [ADDON@COLLECTION ...] [-y | --check]\nkraft admin addon auto-update ADDON@COLLECTION on|off\nkraft admin addon enable ADDON@COLLECTION\nkraft admin addon disable ADDON@COLLECTION\nkraft admin addon uninstall ADDON@COLLECTION\nkraft admin addon list\nkraft admin init --repo\nkraft admin mcp\nkraft admin permission-hook cursor --fail-closed\n","bash","",[529,549,550,572,584,594,607,617,627,654,664,679,689,699,712,730,745,762,774,788,798,810,825,852,866,882,908,925,949,974,993,1008,1022,1036,1047,1060,1070],{"__ignoreMap":547},[551,552,555,558,562,565,569],"span",{"class":553,"line":554},"line",1,[551,556,535],{"class":557},"szw1H",[551,559,561],{"class":560},"semJd"," admin",[551,563,564],{"class":560}," start",[551,566,568],{"class":567},"ssYy9"," --port",[551,570,571],{"class":567}," 9000\n",[551,573,575,577,579,581],{"class":553,"line":574},2,[551,576,535],{"class":557},[551,578,561],{"class":560},[551,580,564],{"class":560},[551,582,583],{"class":567}," --detach\n",[551,585,587,589,591],{"class":553,"line":586},3,[551,588,535],{"class":557},[551,590,561],{"class":560},[551,592,593],{"class":560}," stop\n",[551,595,597,599,601,604],{"class":553,"line":596},4,[551,598,535],{"class":557},[551,600,561],{"class":560},[551,602,603],{"class":560}," restart",[551,605,606],{"class":567}," -y\n",[551,608,610,612,614],{"class":553,"line":609},5,[551,611,535],{"class":557},[551,613,561],{"class":560},[551,615,616],{"class":560}," health\n",[551,618,620,622,624],{"class":553,"line":619},6,[551,621,535],{"class":557},[551,623,561],{"class":560},[551,625,626],{"class":560}," doctor\n",[551,628,630,632,634,637,640,644,647,651],{"class":553,"line":629},7,[551,631,535],{"class":557},[551,633,561],{"class":560},[551,635,636],{"class":560}," reindex",[551,638,639],{"class":567}," --repo",[551,641,643],{"class":642},"sklAV"," \u003C",[551,645,646],{"class":560},"pat",[551,648,650],{"class":649},"s7iLA","h",[551,652,653],{"class":642},">\n",[551,655,657,659,661],{"class":553,"line":656},8,[551,658,535],{"class":557},[551,660,561],{"class":560},[551,662,663],{"class":560}," reload\n",[551,665,667,669,671,674,677],{"class":553,"line":666},9,[551,668,535],{"class":557},[551,670,561],{"class":560},[551,672,673],{"class":560}," update",[551,675,676],{"class":567}," --restart",[551,678,606],{"class":567},[551,680,682,684,686],{"class":553,"line":681},10,[551,683,535],{"class":557},[551,685,561],{"class":560},[551,687,688],{"class":560}," install-service\n",[551,690,692,694,696],{"class":553,"line":691},11,[551,693,535],{"class":557},[551,695,561],{"class":560},[551,697,698],{"class":560}," uninstall-service\n",[551,700,702,704,706,709],{"class":553,"line":701},12,[551,703,535],{"class":557},[551,705,561],{"class":560},[551,707,708],{"class":560}," templates",[551,710,711],{"class":560}," lint\n",[551,713,715,717,719,721,724,727],{"class":553,"line":714},13,[551,716,535],{"class":557},[551,718,561],{"class":560},[551,720,708],{"class":560},[551,722,723],{"class":560}," lint",[551,725,726],{"class":567}," --dir",[551,728,729],{"class":560}," PATH\n",[551,731,733,735,737,739,742],{"class":553,"line":732},14,[551,734,535],{"class":557},[551,736,561],{"class":560},[551,738,708],{"class":560},[551,740,741],{"class":560}," show",[551,743,744],{"class":560}," ID\n",[551,746,748,750,752,754,756,759],{"class":553,"line":747},15,[551,749,535],{"class":557},[551,751,561],{"class":560},[551,753,708],{"class":560},[551,755,741],{"class":560},[551,757,758],{"class":560}," ID",[551,760,761],{"class":567}," --resolved\n",[551,763,765,767,769,771],{"class":553,"line":764},16,[551,766,535],{"class":557},[551,768,561],{"class":560},[551,770,708],{"class":560},[551,772,773],{"class":560}," library\n",[551,775,777,779,781,783,786],{"class":553,"line":776},17,[551,778,535],{"class":557},[551,780,561],{"class":560},[551,782,708],{"class":560},[551,784,785],{"class":560}," library",[551,787,744],{"class":560},[551,789,791,793,795],{"class":553,"line":790},18,[551,792,535],{"class":557},[551,794,561],{"class":560},[551,796,797],{"class":560}," harnesses\n",[551,799,801,803,805,808],{"class":553,"line":800},19,[551,802,535],{"class":557},[551,804,561],{"class":560},[551,806,807],{"class":560}," harnesses",[551,809,744],{"class":560},[551,811,813,815,817,820,823],{"class":553,"line":812},20,[551,814,535],{"class":557},[551,816,561],{"class":560},[551,818,819],{"class":560}," addon",[551,821,822],{"class":560}," validate",[551,824,729],{"class":560},[551,826,828,830,832,834,837,840,843,846,849],{"class":553,"line":827},21,[551,829,535],{"class":557},[551,831,561],{"class":560},[551,833,819],{"class":560},[551,835,836],{"class":560}," collection",[551,838,839],{"class":560}," add",[551,841,842],{"class":560}," SOURCE",[551,844,845],{"class":649}," [--ref ",[551,847,848],{"class":560},"REF]",[551,850,851],{"class":649}," [--auto-update]\n",[551,853,855,857,859,861,863],{"class":553,"line":854},22,[551,856,535],{"class":557},[551,858,561],{"class":560},[551,860,819],{"class":560},[551,862,836],{"class":560},[551,864,865],{"class":560}," list\n",[551,867,869,871,873,875,877,879],{"class":553,"line":868},23,[551,870,535],{"class":557},[551,872,561],{"class":560},[551,874,819],{"class":560},[551,876,836],{"class":560},[551,878,673],{"class":560},[551,880,881],{"class":649}," [NAME]\n",[551,883,885,887,889,891,893,896,899,902,905],{"class":553,"line":884},24,[551,886,535],{"class":557},[551,888,561],{"class":560},[551,890,819],{"class":560},[551,892,836],{"class":560},[551,894,895],{"class":560}," auto-update",[551,897,898],{"class":560}," NAME",[551,900,901],{"class":560}," on",[551,903,904],{"class":642},"|",[551,906,907],{"class":557},"off\n",[551,909,911,913,915,917,919,922],{"class":553,"line":910},25,[551,912,535],{"class":557},[551,914,561],{"class":560},[551,916,819],{"class":560},[551,918,836],{"class":560},[551,920,921],{"class":560}," remove",[551,923,924],{"class":560}," NAME\n",[551,926,928,930,932,934,937,940,943,946],{"class":553,"line":927},26,[551,929,535],{"class":557},[551,931,561],{"class":560},[551,933,819],{"class":560},[551,935,936],{"class":560}," install",[551,938,939],{"class":560}," ADDON@COLLECTION",[551,941,942],{"class":649}," [--as ",[551,944,945],{"class":560},"ALIAS]",[551,947,948],{"class":649}," [--auto-update] [--re-install] [-y]\n",[551,950,952,954,956,958,960,963,966,969,971],{"class":553,"line":951},27,[551,953,535],{"class":557},[551,955,561],{"class":560},[551,957,819],{"class":560},[551,959,673],{"class":560},[551,961,962],{"class":649}," [ADDON@COLLECTION ",[551,964,965],{"class":560},"...]",[551,967,968],{"class":649}," [-y ",[551,970,904],{"class":642},[551,972,973],{"class":557}," --check]\n",[551,975,977,979,981,983,985,987,989,991],{"class":553,"line":976},28,[551,978,535],{"class":557},[551,980,561],{"class":560},[551,982,819],{"class":560},[551,984,895],{"class":560},[551,986,939],{"class":560},[551,988,901],{"class":560},[551,990,904],{"class":642},[551,992,907],{"class":557},[551,994,996,998,1000,1002,1005],{"class":553,"line":995},29,[551,997,535],{"class":557},[551,999,561],{"class":560},[551,1001,819],{"class":560},[551,1003,1004],{"class":560}," enable",[551,1006,1007],{"class":560}," ADDON@COLLECTION\n",[551,1009,1011,1013,1015,1017,1020],{"class":553,"line":1010},30,[551,1012,535],{"class":557},[551,1014,561],{"class":560},[551,1016,819],{"class":560},[551,1018,1019],{"class":560}," disable",[551,1021,1007],{"class":560},[551,1023,1025,1027,1029,1031,1034],{"class":553,"line":1024},31,[551,1026,535],{"class":557},[551,1028,561],{"class":560},[551,1030,819],{"class":560},[551,1032,1033],{"class":560}," uninstall",[551,1035,1007],{"class":560},[551,1037,1039,1041,1043,1045],{"class":553,"line":1038},32,[551,1040,535],{"class":557},[551,1042,561],{"class":560},[551,1044,819],{"class":560},[551,1046,865],{"class":560},[551,1048,1050,1052,1054,1057],{"class":553,"line":1049},33,[551,1051,535],{"class":557},[551,1053,561],{"class":560},[551,1055,1056],{"class":560}," init",[551,1058,1059],{"class":567}," --repo\n",[551,1061,1063,1065,1067],{"class":553,"line":1062},34,[551,1064,535],{"class":557},[551,1066,561],{"class":560},[551,1068,1069],{"class":560}," mcp\n",[551,1071,1073,1075,1077,1080,1083],{"class":553,"line":1072},35,[551,1074,535],{"class":557},[551,1076,561],{"class":560},[551,1078,1079],{"class":560}," permission-hook",[551,1081,1082],{"class":560}," cursor",[551,1084,1085],{"class":567}," --fail-closed\n",[1087,1088,1089,1102],"table",{},[1090,1091,1092],"thead",{},[1093,1094,1095,1099],"tr",{},[1096,1097,1098],"th",{},"Command",[1096,1100,1101],{},"Effect",[1103,1104,1105,1124,1138,1152,1166,1180,1194,1224,1238,1251,1265,1283,1295,1332,1346,1364,1374,1384,1394,1404,1418,1432,1442,1452,1462,1476,1491,1501],"tbody",{},[1093,1106,1107,1113],{},[1108,1109,1110],"td",{},[529,1111,1112],{},"admin start",[1108,1114,1115,1116,1118,1119,540],{},"Runs the server in the foreground; the same as bare ",[529,1117,535],{},". See ",[1120,1121,1123],"a",{"href":1122},"#start-the-server","Start the server",[1093,1125,1126,1131],{},[1108,1127,1128],{},[529,1129,1130],{},"admin stop",[1108,1132,1133,1134,540],{},"Sends SIGTERM to the server. See ",[1120,1135,1137],{"href":1136},"#stop-the-server","Stop the server",[1093,1139,1140,1145],{},[1108,1141,1142],{},[529,1143,1144],{},"admin restart",[1108,1146,1147,1148,540],{},"Stops, then starts again the same way it was running. See ",[1120,1149,1151],{"href":1150},"#restart-the-server","Restart the server",[1093,1153,1154,1159],{},[1108,1155,1156],{},[529,1157,1158],{},"admin health",[1108,1160,1161,1162,540],{},"Prints the server's state and exits 1 when it is degraded, with the reasons on stdout. See ",[1120,1163,1165],{"href":1164},"#what-health-prints","What health prints",[1093,1167,1168,1173],{},[1108,1169,1170],{},[529,1171,1172],{},"admin doctor",[1108,1174,1175,1176,540],{},"Runs every check in one pass. Exits 1 if any fails. See ",[1120,1177,1179],{"href":1178},"#what-doctor-checks","What doctor checks",[1093,1181,1182,1187],{},[1108,1183,1184],{},[529,1185,1186],{},"admin reindex",[1108,1188,1189,1190,1193],{},"Rescans documents into the search index. ",[529,1191,1192],{},"--repo"," limits it to one repo.",[1093,1195,1196,1201],{},[1108,1197,1198],{},[529,1199,1200],{},"admin reload",[1108,1202,1203,1204,1208,1209,1213,1214,1216,1217,1219,1220,540],{},"Rereads the ",[1120,1205,1207],{"href":1206},"\u002Fconcepts\u002Fvocabulary#library","library",", the ",[1120,1210,1212],{"href":1211},"\u002Fconcepts\u002Fvocabulary#chain","chains",", ",[529,1215,318],{}," and ",[529,1218,334],{}," from disk, with no restart. See ",[1120,1221,1223],{"href":1222},"#reload-the-configuration","Reload the configuration",[1093,1225,1226,1231],{},[1108,1227,1228],{},[529,1229,1230],{},"admin update",[1108,1232,1233,1234,540],{},"Installs the newest release. See ",[1120,1235,1237],{"href":1236},"#update-kraft","Update Kraft",[1093,1239,1240,1248],{},[1108,1241,1242,1213,1245],{},[529,1243,1244],{},"admin install-service",[529,1246,1247],{},"admin uninstall-service",[1108,1249,1250],{},"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.",[1093,1252,1253,1258],{},[1108,1254,1255],{},[529,1256,1257],{},"admin templates lint",[1108,1259,1260,1261,540],{},"Checks every chain in the library and exits 1 on any error. See ",[1120,1262,1264],{"href":1263},"#lint-the-templates","Lint the templates",[1093,1266,1267,1272],{},[1108,1268,1269],{},[529,1270,1271],{},"admin templates show ID",[1108,1273,1274,1275,1278,1279,540],{},"One chain as written. ",[529,1276,1277],{},"--resolved"," expands its library components. See ",[1120,1280,1282],{"href":1281},"#show-a-chain","Show a chain",[1093,1284,1285,1290],{},[1108,1286,1287],{},[529,1288,1289],{},"admin templates library [ID]",[1108,1291,1292,1293,540],{},"Every library component, its kind and the chains using it. With an ID, one component. See ",[1120,1294,1282],{"href":1281},[1093,1296,1297,1302],{},[1108,1298,1299],{},[529,1300,1301],{},"admin harnesses [ID]",[1108,1303,1304,1305,1309,1310,1312,1313,1317,1318,1321,1322,1326,1327,1331],{},"Every ",[1120,1306,1308],{"href":1307},"\u002Fconcepts\u002Fvocabulary#harness-profile","harness profile"," in ",[529,1311,326],{},", its ",[1120,1314,1316],{"href":1315},"\u002Fconcepts\u002Fvocabulary#provider","provider",", and the library tasks and chains selecting it (a chain's own ",[529,1319,1320],{},"harness:"," on a task included), then the ",[1120,1323,1325],{"href":1324},"\u002Fconcepts\u002Fvocabulary#agent-profile","agent profiles",". With an ID, one ",[1120,1328,1330],{"href":1329},"\u002Fconcepts\u002Fvocabulary#harness","harness"," profile in detail.",[1093,1333,1334,1339],{},[1108,1335,1336],{},[529,1337,1338],{},"admin addon validate PATH",[1108,1340,1341,1342,540],{},"Checks a collection or a single add-on directory and installs nothing. Exits 1 on any problem. See ",[1120,1343,1345],{"href":1344},"#check-an-add-on","Check an add-on",[1093,1347,1348,1353],{},[1108,1349,1350],{},[529,1351,1352],{},"admin addon collection add SOURCE",[1108,1354,1355,1356,1359,1360,540],{},"Adds a collection from ",[529,1357,1358],{},"owner\u002Frepo"," (GitHub), a git URL or a directory. Installs nothing. See ",[1120,1361,1363],{"href":1362},"#install-and-update-add-ons","Install and update add-ons",[1093,1365,1366,1371],{},[1108,1367,1368],{},[529,1369,1370],{},"admin addon collection list",[1108,1372,1373],{},"Each collection, its source and the add-ons it published when last fetched. No network.",[1093,1375,1376,1381],{},[1108,1377,1378],{},[529,1379,1380],{},"admin addon collection update [NAME]",[1108,1382,1383],{},"Fetches the newest catalogue. Installed add-ons do not change.",[1093,1385,1386,1391],{},[1108,1387,1388],{},[529,1389,1390],{},"admin addon collection auto-update NAME on|off",[1108,1392,1393],{},"Sets whether every add-on installed from the collection updates itself.",[1093,1395,1396,1401],{},[1108,1397,1398],{},[529,1399,1400],{},"admin addon collection remove NAME",[1108,1402,1403],{},"Forgets a collection. Refused while one of its add-ons is installed.",[1093,1405,1406,1411],{},[1108,1407,1408],{},[529,1409,1410],{},"admin addon install ADDON@COLLECTION",[1108,1412,1413,1414,1417],{},"Installs an add-on after showing its review. ",[529,1415,1416],{},"--re-install"," takes the newest commit of an installed one.",[1093,1419,1420,1425],{},[1108,1421,1422],{},[529,1423,1424],{},"admin addon update [ADDON@COLLECTION ...]",[1108,1426,1427,1428,1431],{},"Updates the named add-ons, or all of them, each after its review. ",[529,1429,1430],{},"--check"," changes nothing.",[1093,1433,1434,1439],{},[1108,1435,1436],{},[529,1437,1438],{},"admin addon auto-update ADDON@COLLECTION on|off",[1108,1440,1441],{},"Sets one add-on's auto-update. Refused when its collection already auto-updates.",[1093,1443,1444,1449],{},[1108,1445,1446],{},[529,1447,1448],{},"admin addon enable|disable ADDON@COLLECTION",[1108,1450,1451],{},"Loads an installed add-on, or keeps it installed and not loaded.",[1093,1453,1454,1459],{},[1108,1455,1456],{},[529,1457,1458],{},"admin addon uninstall ADDON@COLLECTION",[1108,1460,1461],{},"Removes an add-on. Refused while your own config still references its namespace.",[1093,1463,1464,1469],{},[1108,1465,1466],{},[529,1467,1468],{},"admin addon list",[1108,1470,1471,1472,1475],{},"Every installed add-on: namespace, version and commit, with its auto-update setting, why it is not loaded, and a pending alias, ",[529,1473,1474],{},"ref"," or collection URL change.",[1093,1477,1478,1483],{},[1108,1479,1480],{},[529,1481,1482],{},"admin init [--repo]",[1108,1484,1485,1486,1488,1489,540],{},"Registers the MCP server and skills with an agent. ",[529,1487,1192],{}," installs into this repo, not your user config. See ",[1120,1490,72],{"href":73},[1093,1492,1493,1498],{},[1108,1494,1495],{},[529,1496,1497],{},"admin mcp",[1108,1499,1500],{},"Serves the MCP tools over stdio.",[1093,1502,1503,1508],{},[1108,1504,1505],{},[529,1506,1507],{},"admin permission-hook HARNESS",[1108,1509,1510,1511,1515,1516,1519,1520,540],{},"What a Cursor or Codex ",[1120,1512,1514],{"href":1513},"\u002Fconcepts\u002Fvocabulary#worker","worker","'s pre-tool hook runs. You do not run it by hand. ",[529,1517,1518],{},"--fail-closed"," denies rather than giving no opinion when Kraft cannot answer. See ",[1120,1521,436],{"href":437},[1523,1524,139],"h2",{"id":1525},"run-the-server",[1527,1528,1123],"h3",{"id":1529},"start-the-server",[1087,1531,1532,1542],{},[1090,1533,1534],{},[1093,1535,1536,1539],{},[1096,1537,1538],{},"Flag",[1096,1540,1541],{},"What it does",[1103,1543,1544,1566],{},[1093,1545,1546,1554],{},[1108,1547,1548,1213,1551],{},[529,1549,1550],{},"--host",[529,1552,1553],{},"--port",[1108,1555,1556,1557,1216,1560,1563,1564,540],{},"Override ",[529,1558,1559],{},"KRAFT_HOST",[529,1561,1562],{},"KRAFT_PORT",", which override ",[529,1565,330],{},[1093,1567,1568,1576],{},[1108,1569,1570,1213,1573],{},[529,1571,1572],{},"--detach",[529,1574,1575],{},"-d",[1108,1577,1578],{},"Forks the server into its own session and returns once it is up.",[526,1580,1581],{},"Kraft refuses to start when:",[1583,1584,1585,1589],"ul",{},[1586,1587,1588],"li",{},"the address is not loopback and no password is set;",[1586,1590,1591],{},"a server is already running against the same run directory.",[526,1593,1594,1595,1598],{},"The foreground server stops on Ctrl-C. Use ",[529,1596,1597],{},"kraft admin stop"," for one you started elsewhere.",[526,1600,1601,1602,1216,1604,1606,1607,1609,1610,1612,1613,1615,1616,1619,1620,1612,1623,1626,1627,1629,1630,1633],{},"The flags are not saved: other commands still dial the host and port in ",[529,1603,1559],{},[529,1605,1562],{},", or in ",[529,1608,330],{},". When ",[529,1611,1550],{}," or ",[529,1614,1553],{}," differs from that value, ",[529,1617,1618],{},"start"," prints the ",[529,1621,1622],{},"KRAFT_HOST=H",[529,1624,1625],{},"KRAFT_PORT=N"," line they need. A wildcard ",[529,1628,1550],{}," such as ",[529,1631,1632],{},"0.0.0.0"," needs none.",[526,1635,1636,1637,1639,1640,1642,1643,1646,1647,540],{},"With ",[529,1638,1572],{},", if the server exits instead, ",[529,1641,1618],{}," prints the error (such as ",[529,1644,1645],{},"RuntimeError: database schema vN is newer than code vM","), the end of that start's output, and the path of ",[529,1648,1649],{},"server.log",[1527,1651,1137],{"id":1652},"stop-the-server",[526,1654,1655,1657,1658,1661,1662,1665,1666,1670],{},[529,1656,1597],{}," sends SIGTERM to the process in ",[529,1659,1660],{},"run\u002Fkraft.pid",", once it has checked that the process is this Kraft server. Stopping ends every running agent. When Kraft starts again, each of those items stops with a ",[529,1663,1664],{},"reattach:"," failure and shows as failed; it does not resume by itself. Pause running items first (see ",[1120,1667,1669],{"href":1668},"\u002Fguides\u002Frun\u002Frestart-kraft#a-restart-ends-running-agents","A restart ends running agents",").",[1583,1672,1673,1680,1683],{},[1586,1674,1675,1676,1679],{},"A pidfile naming any other process is stale: ",[529,1677,1678],{},"stop"," removes it, says so, and signals nothing.",[1586,1681,1682],{},"It lists the active items first, without asking. A server that does not list them within 2 seconds is stopped anyway.",[1586,1684,1685],{},"A repo's setup command that is running is ended too, with everything it started, so it never runs beside the next server's own run of it. A server that is killed (SIGKILL) cannot end it.",[1527,1687,1151],{"id":1688},"restart-the-server",[526,1690,1691,1694],{},[529,1692,1693],{},"kraft admin restart"," stops the server, then starts it again the way it was running: through the service manager if one is installed, back into the background if it was detached.",[526,1696,1697,1698,1213,1700,1703,1704,1707],{},"Like ",[529,1699,1678],{},[529,1701,1702],{},"restart"," ends any running agent: pause running items first, and retry any item it stopped. It lists the active items first and, in a terminal, asks before going on. ",[529,1705,1706],{},"-y"," skips the question.",[1087,1709,1710,1720],{},[1090,1711,1712],{},[1093,1713,1714,1717],{},[1096,1715,1716],{},"When",[1096,1718,1719],{},"Then",[1103,1721,1722,1733,1741],{},[1093,1723,1724,1727],{},[1108,1725,1726],{},"The server runs attached to a terminal",[1108,1728,1729,1730,1732],{},"It is stopped, with a note that only that terminal can bring it back, and ",[529,1731,1702],{}," exits 1, since no server is running after it.",[1093,1734,1735,1738],{},[1108,1736,1737],{},"You answer no",[1108,1739,1740],{},"It exits 1 and says nothing was restarted.",[1093,1742,1743,1746],{},[1108,1744,1745],{},"No server is running",[1108,1747,1748,1749,540],{},"It starts nothing: it says so and exits 1. Start one with ",[529,1750,539],{},[1523,1752,1754],{"id":1753},"update-and-reload","Update and reload",[1527,1756,1237],{"id":1757},"update-kraft",[526,1759,1760,1763,1764,1767,1768,1771],{},[529,1761,1762],{},"kraft admin update"," installs the newest release with uv, keeping the ",[529,1765,1766],{},"vector"," extra and the Python it runs on, or runs ",[529,1769,1770],{},"brew upgrade"," if you installed with Homebrew. On a pipx or pip install, or a source checkout, it installs nothing and prints the command that updates that install.",[526,1773,1774,1775,1777,1778,1781],{},"It warns when another install of ",[529,1776,535],{}," sits ahead of this one on ",[529,1779,1780],{},"PATH",", since MCP servers and hooks run the first one.",[526,1783,1784,1785,1789,1790,1793,1794,1797],{},"Before it installs a release of another major version, it lists each loaded ",[1120,1786,1788],{"href":1787},"\u002Fconcepts\u002Fvocabulary#add-on","Kraft add-on"," whose ",[529,1791,1792],{},"requires.kraft"," that release does not meet, and asks ",[529,1795,1796],{},"Install it anyway? [y\u002FN]",". Those add-ons stop loading until each publishes a version for the new major. Answering no, or running with no terminal, installs nothing and exits 1.",[1087,1799,1800,1808],{},[1090,1801,1802],{},[1093,1803,1804,1806],{},[1096,1805,1538],{},[1096,1807,1541],{},[1103,1809,1810,1820,1833,1847],{},[1093,1811,1812,1817],{},[1108,1813,1814],{},[529,1815,1816],{},"--force",[1108,1818,1819],{},"Installs even when current.",[1093,1821,1822,1827],{},[1108,1823,1824],{},[529,1825,1826],{},"--restart",[1108,1828,1829,1830,1832],{},"Also restarts a running server, which ends any running agent, as ",[529,1831,1702],{}," does. It lists the active items and asks before installing anything; answering no exits 1.",[1093,1834,1835,1840],{},[1108,1836,1837],{},[529,1838,1839],{},"--channel CHANNEL",[1108,1841,1842,1843,540],{},"Takes releases from that channel. See ",[1120,1844,1846],{"href":1845},"#channels","Channels",[1093,1848,1849,1853],{},[1108,1850,1851],{},[529,1852,1706],{},[1108,1854,1855,1856,1860,1861,1863],{},"Accepts the ",[1120,1857,1859],{"href":1858},"\u002Fguides\u002Frun\u002Fupgrade-from-0-x-or-a-release-candidate#migrating-a-home-from-0x","template migration"," without asking, skips ",[529,1862,1826],{},"'s question, and installs a major release that leaves add-ons out.",[526,1865,1866,1867,1870,1871,1874,1875,1118,1877,1880],{},"A Kraft home from 0.x holds a ",[529,1868,1869],{},"registry.yaml"," and no ",[529,1872,1873],{},"library.yaml",": the server starts degraded and refuses new work until you run ",[529,1876,1762],{},[1120,1878,1879],{"href":1858},"Migrating a home from 0.x"," for what the update changes.",[1882,1883,1846],"h4",{"id":1884},"channels",[526,1886,1887,1890],{},[529,1888,1889],{},"--channel"," takes one of four values:",[1087,1892,1893,1904],{},[1090,1894,1895],{},[1093,1896,1897,1901],{},[1096,1898,1899],{},[529,1900,1889],{},[1096,1902,1903],{},"Takes",[1103,1905,1906,1916,1926,1936],{},[1093,1907,1908,1913],{},[1108,1909,1910],{},[529,1911,1912],{},"stable",[1108,1914,1915],{},"Final releases only. It is how an rc or beta install goes back to finals.",[1093,1917,1918,1923],{},[1108,1919,1920],{},[529,1921,1922],{},"rc",[1108,1924,1925],{},"Release candidates and finals.",[1093,1927,1928,1933],{},[1108,1929,1930],{},[529,1931,1932],{},"beta",[1108,1934,1935],{},"Betas, release candidates and finals.",[1093,1937,1938,1943],{},[1108,1939,1940],{},[529,1941,1942],{},"alpha",[1108,1944,1945],{},"Anything.",[526,1947,1948,1949,1951],{},"Without ",[529,1950,1889],{},", the install follows the channel of the release it is:",[1087,1953,1954,1963],{},[1090,1955,1956],{},[1093,1957,1958,1960],{},[1096,1959,17],{},[1096,1961,1962],{},"Follows",[1103,1964,1965,1974,1983,1992],{},[1093,1966,1967,1970],{},[1108,1968,1969],{},"A release candidate",[1108,1971,1972],{},[529,1973,1922],{},[1093,1975,1976,1979],{},[1108,1977,1978],{},"A beta",[1108,1980,1981],{},[529,1982,1932],{},[1093,1984,1985,1988],{},[1108,1986,1987],{},"An alpha",[1108,1989,1990],{},[529,1991,1942],{},[1093,1993,1994,1997],{},[1108,1995,1996],{},"A final release",[1108,1998,1999,2001],{},[529,2000,1912],{},", which never takes a pre-release",[526,2003,2004],{},"Homebrew installs only track stable.",[1527,2006,1223],{"id":2007},"reload-the-configuration",[526,2009,2010,2013,2014,1216,2016,2018,2019,1612,2021,2023],{},[529,2011,2012],{},"kraft admin reload"," rereads the library, the chains, ",[529,2015,318],{},[529,2017,334],{},". A ",[529,2020,318],{},[529,2022,334],{}," that does not load is refused and the running one is kept. Reload names it and exits 1, as it does for a chain that does not resolve.",[526,2025,2026,2027,1216,2030,2033,2034,540],{},"It also rereads ",[529,2028,2029],{},"addons.yaml",[529,2031,2032],{},"addons.lock",", and restores in the background any add-on store the lock names and this machine lacks. An add-on file that does not read is refused, and the server keeps the add-ons it has. See ",[1120,2035,2037],{"href":2036},"\u002Freference\u002Fconfiguration\u002Faddons#what-loads","What loads",[1523,2039,1165],{"id":2040},"what-health-prints",[526,2042,2043,2046,2047,2050,2051,2054,2055,2058,2059,2062,2063,2066],{},[529,2044,2045],{},"kraft admin health"," prints the server's state as ",[529,2048,2049],{},"key  value"," lines, and exits 1 unless ",[529,2052,2053],{},"status"," is ",[529,2056,2057],{},"ok",". The line after ",[529,2060,2061],{},"version"," and the lines after ",[529,2064,2065],{},"embeddings"," appear only when they apply:",[1583,2068,2069,2079,2091,2113],{},[1586,2070,2071,2074,2075,2078],{},[529,2072,2073],{},"installed"," names the installed version with ",[529,2076,2077],{},"restart pending",", after an update the server has not restarted for. It is not degraded.",[1586,2080,2081,1213,2084,1216,2087,2090],{},[529,2082,2083],{},"invalid template",[529,2085,2086],{},"invalid policy",[529,2088,2089],{},"invalid intake"," name each file that does not load, with the reason.",[1586,2092,2093,2096,2097,2100,2101,2104,2105,2108,2109,2112],{},[529,2094,2095],{},"storage"," shows worktree usage against ",[529,2098,2099],{},"storage.worktrees.limit",", and appears only when a limit is set. ",[529,2102,2103],{},"held"," makes the status ",[529,2106,2107],{},"degraded",", so the command exits 1. With ",[529,2110,2111],{},"auto_cleanup"," set, the line also says how many finished items ended too recently to clean up.",[1586,2114,2115,1213,2118,1216,2121,2124],{},[529,2116,2117],{},"index error",[529,2119,2120],{},"reattached",[529,2122,2123],{},"orphaned sessions"," report the search index and the agent sessions found at startup.",[542,2126,2131],{"className":2127,"code":2129,"language":2130,"meta":547},[2128],"language-text","status         ok\nversion        2.0.0\nbind           127.0.0.1\ndocuments      214\nrepos scanned  3\nlast scan      4m ago\nembeddings     available\n","text",[529,2132,2133,2137,2141,2145,2149,2153,2157],{"__ignoreMap":547},[551,2134,2136],{"className":2135},[553],"status         ok\n",[551,2138,2140],{"className":2139},[553],"version        2.0.0\n",[551,2142,2144],{"className":2143},[553],"bind           127.0.0.1\n",[551,2146,2148],{"className":2147},[553],"documents      214\n",[551,2150,2152],{"className":2151},[553],"repos scanned  3\n",[551,2154,2156],{"className":2155},[553],"last scan      4m ago\n",[551,2158,2160],{"className":2159},[553],"embeddings     available\n",[526,2162,2163,1619,2166,2172],{},[529,2164,2165],{},"--json",[1120,2167,2169],{"href":2168},"\u002Freference\u002Fhttp-api#get-apihealth",[529,2170,2171],{},"GET \u002Fapi\u002Fhealth"," answer.",[1523,2174,1179],{"id":2175},"what-doctor-checks",[526,2177,2178,2181,2182,2184,2185,2187],{},[529,2179,2180],{},"kraft admin doctor"," runs every check in one pass, one line per check, and exits 1 if any fails. ",[529,2183,2165],{}," prints the rows. ",[529,2186,2045],{}," checks only the server.",[526,2189,2190,2191,1213,2193,1213,2196,1612,2199,2202,2203,2205,2206,2208,2209,2211,2212,2214,2215,2218,2219,2222],{},"Each line starts with ",[529,2192,2057],{},[529,2194,2195],{},"warn",[529,2197,2198],{},"FAIL",[529,2200,2201],{},"skip",", then the check's name and what it found. With ",[529,2204,2099],{}," set, a ",[529,2207,2095],{}," row says how much the worktrees use of the limit: ",[529,2210,2057],{}," under the quota, ",[529,2213,2195],{}," over it, and over the limit a failing ",[529,2216,2217],{},"health"," row. A row about one repository carries its name, such as ",[529,2220,2221],{},"setup my-repo",". The last line counts them.",[542,2224,2227],{"className":2225,"code":2226,"language":2130,"meta":547},[2128],"ok    server            http:\u002F\u002F127.0.0.1:8765\nok    health            ok\n...\nok    restart           the server (pid 4242) runs the installed version (2.0.0)\nok    config            \u002FUsers\u002Fyou\u002F.kraft\u002Fconfig\nok    access.yaml       parses\n...\nok    spa bundle        \u002Fusr\u002Flib\u002Fkraft\u002F_bundled\u002Fweb\n...\nok    repo app          \u002FUsers\u002Fyou\u002Fcode\u002Fapp\nok    forge app         github · gh\nok    worktrees         \u002FUsers\u002Fyou\u002F.kraft\u002Frun\u002Fworktrees\n\nall 25 checks passed\n",[529,2228,2229,2233,2237,2241,2245,2249,2253,2256,2260,2263,2267,2271,2275,2282],{"__ignoreMap":547},[551,2230,2232],{"className":2231},[553],"ok    server            http:\u002F\u002F127.0.0.1:8765\n",[551,2234,2236],{"className":2235},[553],"ok    health            ok\n",[551,2238,2240],{"className":2239},[553],"...\n",[551,2242,2244],{"className":2243},[553],"ok    restart           the server (pid 4242) runs the installed version (2.0.0)\n",[551,2246,2248],{"className":2247},[553],"ok    config            \u002FUsers\u002Fyou\u002F.kraft\u002Fconfig\n",[551,2250,2252],{"className":2251},[553],"ok    access.yaml       parses\n",[551,2254,2240],{"className":2255},[553],[551,2257,2259],{"className":2258},[553],"ok    spa bundle        \u002Fusr\u002Flib\u002Fkraft\u002F_bundled\u002Fweb\n",[551,2261,2240],{"className":2262},[553],[551,2264,2266],{"className":2265},[553],"ok    repo app          \u002FUsers\u002Fyou\u002Fcode\u002Fapp\n",[551,2268,2270],{"className":2269},[553],"ok    forge app         github · gh\n",[551,2272,2274],{"className":2273},[553],"ok    worktrees         \u002FUsers\u002Fyou\u002F.kraft\u002Frun\u002Fworktrees\n",[551,2276,2278],{"className":2277},[553],[551,2279,2281],{"emptyLinePlaceholder":2280},true,"\n",[551,2283,2285],{"className":2284},[553],"all 25 checks passed\n",[526,2287,2288,2289,2292,2293,2296,2297,2299,2300,2303,2304,2307],{},"The excerpt cuts the rows marked ",[529,2290,2291],{},"...",". The count is for a running server, the shipped chains with ",[529,2294,2295],{},"claude"," on ",[529,2298,1780],{},", and one connected repo, ",[529,2301,2302],{},"app",", with its commands declared. It grows with each connected repo and each harness profile the chains select. With no repo connected, a ",[529,2305,2306],{},"repos  none connected"," row stands in for the repo rows.",[526,2309,2310,2313],{},[1120,2311,211],{"href":2312},"\u002Ftroubleshooting\u002Fdoctor-failures#doctor-rows"," lists every row with its fix.",[1523,2315,2317],{"id":2316},"inspect-templates-and-harnesses","Inspect templates and harnesses",[1527,2319,1264],{"id":2320},"lint-the-templates",[526,2322,2323,2326,2327,2329,2330,2333,2334,540],{},[529,2324,2325],{},"kraft admin templates lint"," checks every chain in the library, including that ",[529,2328,326],{}," can launch each agent task (a task's ",[529,2331,2332],{},"profile:"," naming an agent profile with no model for its harness's provider is an error). It exits 1 on any error, printing each as ",[529,2335,2336],{},"file:line:column: message",[526,2338,2339,2342,2343,540],{},[529,2340,2341],{},"--dir PATH"," checks that directory in-process, with no server and no ",[529,2344,2345],{},"$KRAFT_HOME",[1527,2347,1282],{"id":2348},"show-a-chain",[526,2350,2351,2354,2355,2357,2358,2360],{},[529,2352,2353],{},"kraft admin templates show ID"," asks the running server. A chain file you just added shows only after ",[529,2356,1200],{},", and ",[529,2359,1277],{}," expands the version the server last loaded.",[526,2362,2363,2366,2367,2370],{},[529,2364,2365],{},"kraft admin templates library ID"," takes a component id such as ",[529,2368,2369],{},"tasks.implementer",", or a unique bare name. A bare name two sections share is refused with each full id. It prints the component's definition, its users and its lint issues.",[1523,2372,1363],{"id":2373},"install-and-update-add-ons",[1527,2375,2377],{"id":2376},"add-a-collection-and-install-from-it","Add a collection and install from it",[526,2379,2380,2383,2384,2386,2387,2390,2391,2393,2394,2397,2398,2400,2401,2403],{},[529,2381,2382],{},"kraft admin addon collection add SOURCE"," records a collection in ",[529,2385,2029],{}," under the name its ",[529,2388,2389],{},"collection.json"," declares. ",[529,2392,1358],{}," is written as its full GitHub URL. ",[529,2395,2396],{},"kraft admin addon install ADDON@COLLECTION"," then fetches the add-on, checks it against this instance, and prints a review: what can change how far a run reaches first, then the rest. Nothing is installed until you accept it. ",[529,2399,1706],{}," accepts without asking; with no terminal and no ",[529,2402,1706],{}," the install is declined.",[526,2405,2406,2409,2410,2412],{},[529,2407,2408],{},"--as ALIAS"," installs the add-on under another namespace. ",[529,2411,1416],{}," takes the commit the collection's ref names now, even when the add-on's version has not changed.",[1527,2414,2416],{"id":2415},"update-add-ons","Update add-ons",[526,2418,2419,2422,2423,2425,2426,1309,2429,2431,2432,2434],{},[529,2420,2421],{},"kraft admin addon update"," reviews every installed add-on that has an update, one at a time: its version changed (its files, for a directory collection), or you changed its alias, ",[529,2424,1474],{}," or collection URL by hand. An add-on that fails a check is reported and the others go on. A change that would break one of your own chains, a ",[529,2427,2428],{},"default_chain",[529,2430,300],{}," or an ",[529,2433,334],{}," schedule is refused and names the reference.",[526,2436,2437,2439],{},[529,2438,1430],{}," prints the reviews and changes nothing. It exits 0 when every add-on is current, 1 when an update is waiting, 2 when an update would be refused and 3 when it could not check, so a scheduled job can tell them apart.",[526,2441,2442,2443,2446,2447,1612,2450,2453,2454,2457,2458,2460,2461,1118,2465,540],{},"An add-on set to auto-update is checked after each server start and once a day while the server runs. ",[529,2444,2445],{},"kraft admin addon list"," marks it ",[529,2448,2449],{},"auto-update (collection)",[529,2451,2452],{},"auto-update (addon)","; its last outcome is on the ",[529,2455,2456],{},"add-on updates"," row of ",[529,2459,2180],{}," and in ",[1120,2462,2463],{"href":2168},[529,2464,2171],{},[1120,2466,2468],{"href":2467},"\u002Freference\u002Fconfiguration\u002Faddons#auto-update","Auto-update",[1527,2470,2472],{"id":2471},"remove-an-add-on","Remove an add-on",[526,2474,2475,1216,2478,2481,2482,1213,2484,1213,2486,1612,2488,2490],{},[529,2476,2477],{},"kraft admin addon uninstall",[529,2479,2480],{},"disable"," are refused while your library, a chain, ",[529,2483,300],{},[529,2485,334],{},[529,2487,318],{},[529,2489,326],{}," still names the add-on's namespace. The refusal lists each reference.",[526,2492,2493,2494,2496],{},"A ",[1120,2495,1514],{"href":1513}," cannot run the verbs that change add-ons.",[1523,2498,1345],{"id":2499},"check-an-add-on",[1527,2501,2503],{"id":2502},"validate-a-collection-or-an-add-on","Validate a collection or an add-on",[526,2505,2506,2509,2510,2512,2513,2516,2517,540],{},[529,2507,2508],{},"kraft admin addon validate PATH"," checks a collection or a single add-on directory and installs nothing. ",[529,2511,1780],{}," is a directory holding ",[529,2514,2515],{},".kraft\u002Fcollection.json",", or one holding ",[529,2518,2519],{},".kraft\u002Faddon.json",[526,2521,2522],{},"It checks each add-on's files against the size and content limits, both manifests, the Kraft version the add-on requires, and that every chain the add-on ships resolves.",[526,2524,2525,2526,2528,2529,1216,2532,2535,2536,2539],{},"When the config directory holds a ",[529,2527,1873],{},", it also checks the add-on as an install into that instance: its ",[529,2530,2531],{},"requires.harnesses",[529,2533,2534],{},"requires.profiles",", its namespace, and your own chains. With none, it prints a ",[529,2537,2538],{},"skipped:"," line naming those checks.",[526,2541,2542],{},"It prints one line per add-on with its version and digest, then each problem with its file, then warnings: a manifest key Kraft does not read, and a file that looks like part of the add-on layout and is not.",[526,2544,2545,2546,2550,2551,2553,2554,1213,2557,1213,2560,1216,2563,540],{},"It exits 0 when every add-on passes and 1 otherwise, so a collection's CI can run it on every push; ",[1120,2547,2549],{"href":2548},"\u002Fguides\u002Fcustomize\u002Fshare-chains-with-addons#run-validate-in-ci","Run validate in CI"," shows a job. ",[529,2552,2165],{}," prints the report as an object with ",[529,2555,2556],{},"addons",[529,2558,2559],{},"problems",[529,2561,2562],{},"warnings",[529,2564,2565],{},"skipped",[1523,2567,2569],{"id":2568},"related","Related",[1583,2571,2572,2580,2589,2599,2607,2612],{},[1586,2573,2574,2576,2577,2579],{},[1120,2575,211],{"href":212},": the fix for each row ",[529,2578,1172],{}," can print.",[1586,2581,2582,2584,2585,2588],{},[1120,2583,164],{"href":165},": ",[529,2586,2587],{},"install-service",", and keeping the server up across restarts.",[1586,2590,2591,2593,2594,1216,2596,2598],{},[1120,2592,152],{"href":153},": what ",[529,2595,1678],{},[529,2597,1702],{}," do to a running agent, and how to avoid it.",[1586,2600,2601,2603,2604,2606],{},[1120,2602,168],{"href":169},": when to run ",[529,2605,1230],{},", and how to pin a version.",[1586,2608,2609,2611],{},[1120,2610,114],{"href":115},": publish a collection and install an add-on from it.",[1586,2613,2614,2616,2617,2619],{},[1120,2615,384],{"href":385},": the manifests, ",[529,2618,2029],{},", the lock, and when an add-on loads or updates.",[2621,2622,2623],"style",{},"html pre.shiki code .szw1H, html code.shiki .szw1H{--shiki-light:#702C00;--shiki-default:#702C00;--shiki-dark:#FFB757}html pre.shiki code .semJd, html code.shiki .semJd{--shiki-light:#032563;--shiki-default:#032563;--shiki-dark:#ADDCFF}html pre.shiki code .ssYy9, html code.shiki .ssYy9{--shiki-light:#023B95;--shiki-default:#023B95;--shiki-dark:#91CBFF}html pre.shiki code .sklAV, html code.shiki .sklAV{--shiki-light:#A0111F;--shiki-default:#A0111F;--shiki-dark:#FF9492}html pre.shiki code .s7iLA, html code.shiki .s7iLA{--shiki-light:#0E1116;--shiki-default:#0E1116;--shiki-dark:#F0F3F6}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":547,"searchDepth":574,"depth":574,"links":2625},[2626,2631,2635,2636,2637,2641,2649,2654],{"id":1525,"depth":574,"text":139,"children":2627},[2628,2629,2630],{"id":1529,"depth":586,"text":1123},{"id":1652,"depth":586,"text":1137},{"id":1688,"depth":586,"text":1151},{"id":1753,"depth":574,"text":1754,"children":2632},[2633,2634],{"id":1757,"depth":586,"text":1237},{"id":2007,"depth":586,"text":1223},{"id":2040,"depth":574,"text":1165},{"id":2175,"depth":574,"text":1179},{"id":2316,"depth":574,"text":2317,"children":2638},[2639,2640],{"id":2320,"depth":586,"text":1264},{"id":2348,"depth":586,"text":1282},{"id":2373,"depth":574,"text":2642,"children":2643},"Install and update add-​ons",[2644,2645,2647],{"id":2376,"depth":586,"text":2377},{"id":2415,"depth":586,"text":2646},"Update add-​ons",{"id":2471,"depth":586,"text":2648},"Remove an add-​on",{"id":2499,"depth":574,"text":2650,"children":2651},"Check an add-​on",[2652],{"id":2502,"depth":586,"text":2653},"Validate a collection or an add-​on",{"id":2568,"depth":574,"text":2569},"The kraft admin verbs: start, stop, check, update, and configure this machine's server.","md",null,{},{"title":286,"description":2655},"zGb_Qpw7k74BQstPwGsP_tXUXRWHVUMPaqPKO8c7I6s",[2662,2664],{"title":282,"path":283,"stem":284,"description":2663,"children":-1},"The kraft repo verbs: list, connect, and disconnect repositories, review and take a repo's library, and reach their worktrees.",{"title":290,"path":291,"stem":292,"description":2665,"children":-1},"The nine statuses a work item can hold, what moves it between them, and the status the board shows for each.",1791801173721]