[{"data":1,"prerenderedAt":916},["ShallowReactive",2],{"navigation_docs":3,"-get-started-why-kraft":520,"-get-started-why-kraft-surround":911},[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":13,"body":522,"description":904,"extension":905,"links":906,"meta":907,"navigation":908,"path":14,"seo":909,"stem":15,"__hash__":910},"docs\u002F1.get-started\u002F0.why-kraft.md",{"type":523,"value":524,"toc":888},"minimark",[525,529,532,544,549,671,675,685,716,724,728,733,736,740,751,755,758,784,787,790,795,799,802,806,849,852,856],[526,527,528],"p",{},"Kraft is not a coding agent, and it doesn't replace yours. It runs the agent\nyou already use (Claude Code, Codex and others) and adds what a single agent\nsession can't give you.",[526,530,531],{},"Use Kraft when you want agent work to run while you are not watching, and to\nstop only where a person should decide. Use an interactive session for\neverything else.",[526,533,534,535,539,540,543],{},"In German, ",[536,537,538],"em",{},"Kraft"," means force; in English, its cousin ",[536,541,542],{},"craft"," means skill. A\ncoding agent has the skill. Kraft adds the force: a process that moves the work\nforward, step by step, and stops only when a decision is yours.",[545,546,548],"h2",{"id":547},"what-your-agent-cant-do-on-its-own","What your agent can't do on its own",[550,551,552,566,577,597,605,613,629,641,653],"ul",{},[553,554,555,559,560,565],"li",{},[556,557,558],"strong",{},"A process written once."," A ",[561,562,564],"a",{"href":563},"\u002Fconcepts\u002Fvocabulary#chain","chain"," is a file\nyou can read and diff: spec, plan, implementation, verification, review, merge\nrequest, merge. The agent does not decide the workflow fresh each time.",[553,567,568,571,572,576],{},[556,569,570],{},"Gates where you decide."," You approve a spec, a plan, or a merge\nrequest. A rejection carries your note back to the node that wrote it, and\nthat node tries again. See ",[561,573,575],{"href":574},"\u002Fconcepts\u002Fvocabulary#gate","Gate",".",[553,578,579,582,583,587,588,592,593,596],{},[556,580,581],{},"Checks the agent doesn't grade itself on."," An agent that says \"all tests\npass\" is reporting on its own work. Kraft runs your tests in a node of its\nown, waits for your CI itself, and has a separate reviewer or judge decide\nwhether a fix is done. A sandboxed ",[561,584,586],{"href":585},"\u002Fconcepts\u002Fvocabulary#worker","worker"," under a ",[589,590,591],"code",{},"network:"," policy can't approve its own gate.\nWithout that sandbox, Kraft's refusal is a consistency check, not a boundary:\n",[561,594,493],{"href":595},"\u002Fproject\u002Fsecurity#agents-and-gates"," has the limits.",[553,598,599,602,603,576],{},[556,600,601],{},"Bounded retries and spend."," Time, token, and dollar caps apply per work\nitem, node, step, and task. A defect the agent cannot fix stops the item and\nshows you the full trace. See ",[561,604,40],{"href":41},[553,606,607,610,611,576],{},[556,608,609],{},"Answers to permission prompts."," A worker runs with nobody to click \"allow\".\nKraft answers from a policy you set and records each allow and deny on the\nitem's timeline. See ",[561,612,44],{"href":45},[553,614,615,618,619,623,624,628],{},[556,616,617],{},"Isolation."," Every ",[561,620,622],{"href":621},"\u002Fconcepts\u002Fvocabulary#work-item","work item"," edits its own git ",[561,625,627],{"href":626},"\u002Fconcepts\u002Fvocabulary#worktree","worktree"," on its own branch,\nso your checkout stays as you left it and items run in parallel.",[553,630,631,634,635,638,639,576],{},[556,632,633],{},"One board."," All your repos in one view, grouped by what needs you, what is\nrunning, and what is done. Search and ",[561,636,637],{"href":265},"analytics"," (lead time, cost by node) come\nfrom the same events. You can reach the board from a phone through a tunnel;\nsee ",[561,640,144],{"href":145},[553,642,643,646,647,650,651,576],{},[556,644,645],{},"Several agents and models in one work item."," Seven agents run as\n",[561,648,649],{"href":411},"harnesses",", and each agent task picks its own harness\nand model, so one agent can write the code and another review it. The shipped\nchains run every agent task on Claude Code; to mix them, see\n",[561,652,123],{"href":124},[553,654,655,658,659,663,664,668,669,576],{},[556,656,657],{},"Several ways in."," File work from the UI, the CLI, an agent over MCP, or a\n",[561,660,662],{"href":661},"\u002Fconcepts\u002Fvocabulary#trigger","trigger"," on a schedule or a webhook. It lands\npaused and spends nothing until you start it. Only\n",[561,665,667],{"href":666},"\u002Fconcepts\u002Fvocabulary#auto-intake","auto-intake",", which is off by default,\nstarts work on its own. See ",[561,670,68],{"href":69},[545,672,674],{"id":673},"what-a-run-looks-like","What a run looks like",[526,676,677,678,681,682,684],{},"Here is one work item on the shipped ",[589,679,680],{},"default"," chain, from filing to merge.\n",[561,683,36],{"href":37}," has each stage in full.",[686,687,688,691,694,697,704],"ol",{},[553,689,690],{},"You file it with a title and, if you have them, a spec and a plan. It lands paused.",[553,692,693],{},"You start it. An agent drafts a spec and a plan, and the item stops at a gate\nafter each for you to approve or reject with a note. A third gate, for changes\nto the rest of the chain, usually passes without asking you.",[553,695,696],{},"An agent implements the plan, and Kraft runs the repo's tests itself.",[553,698,699,700,703],{},"The item stops at ",[589,701,702],{},"local_review"," with a diff to read. When you approve, Kraft\nopens a draft merge request and runs CI and automated review on it.",[553,705,706,707,710,711,715],{},"You approve ",[589,708,709],{},"final_review",". Kraft marks the request ready, waits for its\napproval on your ",[561,712,714],{"href":713},"\u002Fconcepts\u002Fvocabulary#forge","forge",", merges, and waits for CI on the merged commit.",[526,717,718,720,721,723],{},[561,719,21],{"href":22}," does this on your own repo.\nSetup is ",[561,722,17],{"href":18},", then connecting the repo.",[545,725,727],{"id":726},"how-it-compares","How it compares",[729,730,732],"h3",{"id":731},"an-interactive-session","An interactive session",[526,734,735],{},"In a session you are the scheduler, the reviewer, the test runner, and the\nmemory. Close the terminal and the work stops. Kraft takes over those jobs: items\nrun unattended, several at once, and the board tells you which ones need you.",[729,737,739],{"id":738},"a-loop","A loop",[526,741,742,743,746,747,750],{},"A loop runs an agent again and again until the agent decides it is done: a\n",[589,744,745],{},"while"," loop around an agent, a Ralph-style run that feeds it the same prompt\neach time, or ",[589,748,749],{},"\u002Floop",". Nothing bounds that decision. A loop spends tokens on a\ndefect it cannot fix and has no way to ask a person. Kraft's retry\nloops stop at an attempt limit, a wall-clock limit, or a token or dollar budget,\nand then escalate to you.",[729,752,754],{"id":753},"skills-and-plugins-alone","Skills and plugins alone",[526,756,757],{},"A skill tells an agent how to do one step well, and the agent still decides\nwhether to run it, in what order, and when to stop. That has two costs:",[550,759,760,766],{},[553,761,762,765],{},[556,763,764],{},"It is inconsistent."," The process lives in the agent's judgment, so the same\nrequest can skip a review one day and run it the next. Nothing stops at your\napproval unless the agent chooses to, and nothing resumes after a crashed\nsession. In a chain the order, the gates, and the retries are fixed by the\nfile, not decided at run time.",[553,767,768,771,772,775,776,778,779,783],{},[556,769,770],{},"It is expensive."," Every step, tool call, and result stays in one growing\ncontext that is paid for again on each turn. In Kraft the chain, not the\nagent, does the sequencing and bookkeeping. Kraft runs the repo's tests, the\nrebase, and the merge-request steps itself (",[589,773,774],{},"builtin"," and ",[589,777,714],{}," tasks, see\n",[561,780,782],{"href":781},"\u002Fconcepts\u002Fvocabulary#task","Task","), and each agent task is its own headless\nsession, not another turn in one long conversation.",[526,785,786],{},"Kraft runs your skills as tasks inside a chain.",[729,788,188],{"id":789},"kraft-lite",[526,791,792,794],{},[561,793,188],{"href":189}," runs the same chain inside one agent session\nwhen you do not want a service. It keeps the fixed order and gates, but not the\nfresh-session saving, because it runs in the one session.",[729,796,798],{"id":797},"ci","CI",[526,800,801],{},"CI runs a fixed script on a fresh runner. Kraft runs an agent on your machine\nthat you can pause, steer, or reject with a note. Kraft does not replace CI. It\nwatches your merge request's pipeline and fixes what fails.",[545,803,805],{"id":804},"when-not-to-use-kraft","When not to use Kraft",[550,807,808,814,820,826,832],{},[553,809,810,813],{},[556,811,812],{},"A quick fix."," Open a session. A chain is overhead you won't earn back.",[553,815,816,819],{},[556,817,818],{},"Exploration."," If you don't yet know what you want, you need a conversation,\nnot a pipeline. Explore first, then hand off a spec.",[553,821,822,825],{},[556,823,824],{},"Work you want to steer every few minutes."," That is what a session is for.",[553,827,828,831],{},[556,829,830],{},"A shared team service."," Kraft runs on one machine and binds loopback by\ndefault. It is not a hosted service.",[553,833,834,837,838,841,842,845,846,848],{},[556,835,836],{},"A repo that isn't set up for it."," Kraft stops a repo's first item rather\nthan guess its ",[589,839,840],{},"test_command"," or ",[589,843,844],{},"setup_command",". See\n",[561,847,199],{"href":200}," for the\nfirst-run stops.",[526,850,851],{},"The usual pattern uses both: think in a session, settle a spec and a plan, hand\nthem to Kraft, and take the next thing.",[545,853,855],{"id":854},"related","Related",[550,857,858,863,868,873,878,883],{},[553,859,860,862],{},[561,861,17],{"href":18},": the first step if you decide to try it.",[553,864,865,867],{},[561,866,21],{"href":22},": take one to a merge-ready diff on your own repo.",[553,869,870,872],{},[561,871,48],{"href":49},": the terms used here, defined.",[553,874,875,877],{},[561,876,25],{"href":26},": short answers on forges, harnesses, cost and platforms.",[553,879,880,882],{},[561,881,493],{"href":494},": what Kraft does on your machine, and where its limits are.",[553,884,885,887],{},[561,886,497],{"href":498},": what leaves your machine.",{"title":889,"searchDepth":890,"depth":890,"links":891},"",2,[892,893,894,902,903],{"id":547,"depth":890,"text":548},{"id":673,"depth":890,"text":674},{"id":726,"depth":890,"text":727,"children":895},[896,898,899,900,901],{"id":731,"depth":897,"text":732},3,{"id":738,"depth":897,"text":739},{"id":753,"depth":897,"text":754},{"id":789,"depth":897,"text":188},{"id":797,"depth":897,"text":798},{"id":804,"depth":890,"text":805},{"id":854,"depth":890,"text":855},"What Kraft does that an interactive session, a loop, or a skill does not, and when it is the wrong tool.","md",null,{},true,{"title":13,"description":904},"kdZts2kg6Wee-M_M2VgdGeLab5Rw1ZgL18z_9W7jmtk",[912,914],{"title":10,"path":6,"stem":11,"description":913,"children":-1},"Decide whether Kraft fits, install it, and run your first work item.",{"title":17,"path":18,"stem":19,"description":915,"children":-1},"Install Kraft with uv, Homebrew, the install script, or from source, start the server, register it with Claude Code, and check that it works.",1791801165913]