nextv2.0.0

Configuration

Which file in Kraft's config directory controls what, and how Kraft creates, edits, validates and rereads the directory.

Kraft's configuration is a set of YAML files under $KRAFT_HOME/config/ (default ~/.kraft/config/). This page maps each file to its reference page and says how the directory is created and edited.

Files

FileWhat it configuresCreatedPage
repos.yamlConnected repos: setup command, env, steering, workspaces, and the sandbox field (Sandboxed workers).Seeded, emptyrepos.yaml
policy.yamlCaps, budget, concurrency, archiving, defaults and maxima.Seededpolicy.yaml
library.yaml and chains/*.yamlThe templates: reusable components and the chains built from them, copied onto each work item at intake.Seeded: the default and quick-task chainsLibrary and chains
harnesses.yamlHarness profiles and agent profiles.Seededharnesses.yaml
access.yamlBind address, password, remote access.The first save in Settingsaccess.yaml
intake.yamlAutonomous pickup of issues, and schedules.Seededintake.yaml
notify.yamlThe notification webhook.The first save in Settingsnotify.yaml
theme.yamlUI appearance.The first save in Settingstheme.yaml
sandbox.yamlWhich container CLI runs sandboxed tasks, SELinux, and an extra CA.Yousandbox.yaml
detectors.yamlYour own conventions for the setup and test commands kraft repo connect proposes, layered on the shipped table.Youdetectors.yaml
harnesses/*.yamlYour own harness definitions, which add a harness or override a shipped one.YouHarness definition files
addons.yamlThe collections this instance knows and the Kraft add-ons installed from them.kraft admin addon, or youAdd-ons and collections
addons.lockThe commit, digest and version each installed add-on is pinned to. Not edited by hand.kraft admin addonAdd-ons and collections
repo-libraries.lockThe commit and digest each connected repository's repo library was accepted at. Not edited by hand.kraft repo libraryRepo libraries

How Kraft treats the directory

  • Seeding. Kraft copies the shipped defaults into config/ on first run and never overwrites it afterwards, so an upgrade cannot clobber an edited policy. Upgrade your configuration takes what a new release ships in library.yaml and chains/. The files marked "You", "kraft admin addon" or "The first save in Settings" are never seeded.
  • Editing. The Templates screens edit library.yaml and chains/. Settings edits the rest, except sandbox.yaml, detectors.yaml, harnesses/ and the add-on files and locks, which no screen edits. Editing any file by hand is equally supported.
  • Moving it. KRAFT_HOME and KRAFT_CONFIG_DIR move the directory; see Environment variables.
  • Validation. Kraft validates each file when it loads it, and reports a file that fails with the offending key named. Chain rules such as extends and reject_to are in Chain file keys.
  • An old directory. Before 2.0, the directory was templates/; see Upgrade from 1.4. A home still in the 0.x template format (a registry.yaml, hook names or gate_after) is refused until you run kraft admin update; see Migrating a home from 0.x.

Three commands check and reload the files:

  • kraft admin doctor reports anything that does not parse.
  • kraft admin reload rereads policy.yaml, library.yaml with its chains, intake.yaml, and addons.yaml with addons.lock, without a restart. A change to access.yaml's bind or port needs a restart, and a hand edit of notify.yaml takes effect at the next save in Settings or a restart.
  • kraft admin templates lint checks the whole library and every chain at once, and writes nothing.

In this section

  • repos.yaml: every field in repos.yaml, and the pages for how connect proposes commands, detectors.yaml and workspaces.
  • policy.yaml: every field in policy.yaml: caps, budget, concurrency, archiving, defaults and maxima.
  • Library and chains: the sections of library.yaml, and how chains/*.yaml files compose them into chains.
  • harnesses.yaml: every field in harnesses.yaml, for harness profiles and agent profiles.
  • access.yaml: every field in access.yaml: bind address, port, password, session expiry and allowed hosts.
  • intake.yaml: every field in intake.yaml: autonomous pickup from beads, and cron schedules.
  • notify.yaml: every field in notify.yaml: the notification webhook and the events that post to it.
  • theme.yaml: every field in theme.yaml: colors, density, the diff and the board.
  • Sandboxed workers: the sandbox key of repos.yaml, and the pages for the container's resource limits, callbacks, network, credentials, Kits, sandbox.yaml and git.
  • Environment variables: the variables that move this directory, every other variable Kraft reads, and the variables a worker gets.
  • Add-ons and collections: collection.json, addon.json, addons.yaml and addons.lock, the naming rules, and when an add-on loads, updates and is restored.
  • Repo libraries: a repository's own .kraft/ library, where it is read from, how a person accepts it, and repo-libraries.lock.
Copyright © 2026