Skip to content

Configuration

LumenFlow is configured via workspace.yaml in your project root (software_delivery block).

software_delivery:
  lanes:
    definitions:
      - name: 'Framework: Core'
        code_paths: ['src/**']
  gates:
    format: true
    lint: true
    typecheck: true
    test: true

Directory paths configuration

FieldTypeDefaultDescription
appsWebstring""Working directory for a web app, if one exists.
worktreesstring"worktrees/"Directory where WU lifecycle worktrees are created.
aistring"ai/"Directory for AI-related assets.
claudestring".claude/"Directory for Claude-specific configuration.
docsstring"docs/"Root directory for project documentation.
packagesstring"packages/"Root directory for workspace packages.
toolsstring"tools/"Directory for build and generator tooling.
memoryBankstring"memory-bank/"Directory backing the shared memory layer.
wuDirstring"docs/tasks/wu"Directory of WU YAML specs.
initiativesDirstring"docs/tasks/initiatives"Directory of initiative YAML records.
backlogPathstring"docs/tasks/backlog.md"Path to the generated backlog markdown file.
statusPathstring"docs/tasks/status.md"Path to the generated status markdown file.
skillsDirstring".lumenflow/skills"Canonical directory for LumenFlow skills.
agentsDirstring".claude/agents"Directory of agent definition files for the default client.
adrDirstring"docs/architecture-decisions"Directory of architecture decision records (ADRs).
plansDirstring"docs/plans"Directory of planning documents.
templatesDirstring".lumenflow/templates"Directory of WU and initiative template files.
onboardingDirstring"docs/_frameworks/lumenflow/agent/onboarding"Directory of agent onboarding documentation.
completeGuidePathstring"docs/_frameworks/lumenflow/lumenflow-complete.md"Path to the full LumenFlow workflow guide.
quickRefPathstringsee belowPath to the agent quick-reference commands document.
startingPromptPathstringsee belowPath to the agent starting-prompt document.
sizingGuidePathstring"docs/_frameworks/lumenflow/wu-sizing-guide.md"Path to the WU sizing guide document.
governancePathstring"docs/governance/project-governance.md"Path to the project governance document.
safeGitPathstring"scripts/safe-git"Path to the safe-git wrapper script relative to the project root.

quickRefPath default

docs/_frameworks/lumenflow/agent/onboarding/quick-ref-commands.md

startingPromptPath default

docs/_frameworks/lumenflow/agent/onboarding/starting-prompt.md

State paths configuration (.lumenflow directory structure)

FieldTypeDefaultDescription
basestring".lumenflow"Kernel-shared base state directory, not pack-namespaced.
stateDirstring".lumenflow/state/packs/software-delivery"Root state directory for the Software Delivery pack.
archiveDirstring".lumenflow/state/packs/software-delivery/archive"Directory holding archived WU events.
stampsDirstring".lumenflow/state/packs/software-delivery/stamps"Directory holding completion stamps for done WUs.
mergeLockstring".lumenflow/state/packs/software-delivery/merge.lock"Path to the merge lock file serializing lifecycle merges to main.
telemetrystring".lumenflow/state/packs/software-delivery/telemetry"Directory holding local telemetry state.
sessionsstring".lumenflow/sessions"Kernel-shared agent sessions directory, not pack-namespaced.
incidentsstring".lumenflow/state/packs/software-delivery/incidents"Directory holding recorded incident records.
commandsLogstring".lumenflow/state/packs/software-delivery/commands.log"Path to the executed-commands audit log file.
eventArchivalobjectsee belowControls archival of old WU events to prevent unbounded growth.

eventArchival default

archiveAfter: 7776000000
keepArchives: true

Git configuration

FieldTypeDefaultDescription
mainBranchstring"main"Name of the repository main branch.
defaultRemotestring"origin"Name of the default git remote.
laneBranchPrefixstring"lane/"Prefix applied to every claimed lane branch name.
tempBranchPrefixstring"tmp/"Prefix applied to short-lived micro-worktree branch names.
realGitPathstring"/usr/bin/git"Path to the real git executable used by lifecycle commands.
maxBranchDriftinteger20Maximum commits a lane branch may be behind main before rebase is required.
branchDriftWarninginteger15Commits-behind-main threshold that emits a branch drift warning.
branchDriftInfointeger10Commits-behind-main threshold that emits an informational branch drift note.
requireRemotebooleantrueWhen true, wu:create and wu:claim fail without a remote “origin”.
agentBranchPatternsstring[][]Custom agent branch patterns merged with the registry patterns.
agentBranchPatternsOverridestring[]-Agent branch patterns that fully replace the registry patterns when set.
disableAgentPatternRegistrybooleanfalseDisables fetching agent branch patterns from the registry (airgapped mode).
push_retryobjectsee belowRetry-with-rebase behaviour for non-fast-forward push errors.

push_retry default

enabled: true
retries: 3
min_delay_ms: 100
max_delay_ms: 1000
jitter: true

WU (Work Unit) configuration

FieldTypeDefaultDescription
idPatternstring"^WU-\d+$"Regex pattern a WU id must match.
minDescriptionLengthinteger50Minimum accepted length, in characters, of a WU description.
maxCommitSubjectinteger100Maximum accepted length, in characters, of a lifecycle commit subject line.
defaultPrioritystring"P2"Priority assigned to a new WU when none is supplied.
defaultStatusstring"ready"Status assigned to a new WU when none is supplied.
defaultTypestring"feature"Type assigned to a new WU when none is supplied.
briefobjectsee belowClaim-time wu:brief automation policy and freshness threshold.

brief default

policyMode: auto
freshnessMinutes: 1440

Quality gates configuration

FieldTypeDefaultDescription
maxEslintWarningsinteger100Maximum ESLint warning count the lint gate tolerates before failing.
enableCoveragebooleantrueEnables the test coverage gate.
minCoveragenumber90Minimum required test coverage percentage.
enableSafetyCriticalTestsbooleantrueEnables the safety-critical-test gate.
enableInvariantsbooleantrueEnables the invariants gate.
tdd_diff_evidenceobject-Controls which WU types the TDD diff-evidence gate applies to and how it enforces.
tdd_orderingobject-Controls the RED-first commit-order gate: which WU types it applies to and its thresholds.
execution_lockobjectsee belowRepository-scoped bounded gate semaphore controlling concurrent gate runs.
shared_build_output_rootsstring[][]Build-output roots this workspace shares with other checkouts, for the gate build-output lock only (not gates.execution_lock).
executionobject-Custom per-gate commands, with optional preset expansion, overriding the hardcoded defaults.
commandsobjectsee belowConfigurable test/lint/typecheck/format commands consumed by the gates runner.
ignore_patternsstring[]-Glob patterns to ignore when detecting changed tests for the scoped test gate.
lane_health”warn” | “error” | “off”"warn"How the lane health check behaves during gates: warn, error, or off.
co_changeobject[][]Rules requiring a companion file change when trigger files are modified.
conditional_commandsobject[][]Commands that run only when their trigger_patterns match changed files.
include_builtin_co_change_defaultsbooleantrueMerges the built-in database schema-to-migration co-change rules when true.
delivery_reviewobjectsee belowNative delivery review gate evaluating acceptance-criteria satisfaction.
overridesobjectsee belowPer-gate-id overrides of framework gate definition defaults, keyed by gate id.
local_prepobjectsee belowOpt-in local-prep profile extending wu:prep with build/integration/e2e-smoke gates.
resourcesobject-Vendor-agnostic environment variables and per-runner resource caps for gate subprocesses.
parity_suitesstring[][]Repo-specific parity/drift test paths appended to the always-on framework defaults.
throughput_baselineobjectsee belowRelease throughput ratchet baseline path and tolerance percentage.

execution_lock default

concurrency: 2

shared_build_output_roots description

Build-output roots this workspace shares with other checkouts, for the gate build-output lock only (not gates.execution_lock). Empty (the default) keys each run on its own resolved output root, so disjoint checkouts run concurrently. One declared root serializes every run declaring the identical root. Two or more distinct roots cannot be one lock directory, so the workspace falls back to the machine-wide lock. Relative entries resolve against the checkout root and are compared after native realpath, which collapses symlinks and junctions but not Windows subst or mapped drives: declare the same spelling everywhere.

commands default

test_full: ''
test_docs_only: ''
test_incremental: ''
migration_verify: ''

delivery_review default

enabled: false
auto_run: false
block_partial: false
verifier_command: ''
verifier_command_mode: always
skip_types:
  - documentation
  - process

overrides default

{}

local_prep default

build:
  enabled: false
build_scope: applicable
integration_test:
  enabled: false
e2e_smoke:
  enabled: false
  tag: smoke
latency_budget_warn_ms: 180000
latency_budget:
  enforced: false
  docs_only_ms: 3600000
  broad_ms: 3600000
  full_ms: 7200000
report_all: true
reuse_evidence: false

throughput_baseline default

path: .lumenflow/throughput-baseline.json
tolerance_percent: 25

Memory layer configuration

FieldTypeDefaultDescription
directorystring"memory-bank/"Directory backing the shared memory layer.
sessionTtlinteger604800000Time-to-live, in milliseconds, for agent session records.
checkpointTtlinteger2592000000Time-to-live, in milliseconds, for memory checkpoints.
enableAutoCleanupbooleantrueEnables automatic TTL-based cleanup of memory entries.
progress_signalsobject-Progress signal triggers and cadence for sub-agent coordination.
signalCleanupobjectsee belowTTL-based cleanup thresholds for signals.jsonl.
delegation_context_max_sizeinteger4096Maximum bytes of memory context injected into delegation prompts.
spawn_context_max_sizeunknown-Deprecated; rejected at parse time. Use delegation_context_max_size instead.
enforcementobject-Auto-checkpoint hooks and checkpoint requirement for wu:done.
decayobject-Automated archival of stale memory nodes during lifecycle events.

signalCleanup default

ttl: 604800000
unreadTtl: 2592000000
maxEntries: 500

Progress signals configuration for sub-agent coordination

FieldTypeDefaultDescription
enabledbooleanfalseMakes progress signals mandatory (vs. optional) in spawn prompts.
frequencyinteger0Sends a progress signal every N tool calls; 0 disables frequency-based signals.
on_milestonebooleantrueSignals after each acceptance criterion is completed.
on_tests_passbooleantrueSignals when tests first pass.
before_gatesbooleantrueSignals before running gates.
on_blockedbooleantrueSignals when work becomes blocked.
auto_checkpointbooleanfalseAutomatically checkpoints memory at signal milestones.

UI configuration

FieldTypeDefaultDescription
errorBoxWidthinteger70Character width of rendered CLI error boxes.
statusPreviewLinesinteger5Number of lines shown in a status preview.
readinessBoxWidthinteger50Character width of rendered CLI readiness boxes.

YAML serialization configuration

FieldTypeDefaultDescription
lineWidthinteger100Line-wrap width for generated YAML output; -1 disables wrapping.

Agents configuration

FieldTypeDefaultDescription
defaultClientstring"claude-code"Client identity used when a command is not given an explicit —client.
clientsobjectsee agents.clients.*Per-client configuration overrides, keyed by client id.
routingobject-Vendor-neutral role defaults and initiative-specific model routing overrides.
rosterstring[]see belowRecommended default roster of agent names for orchestration.
mandatoryobjectsee belowAgents that are mandatory for a claim, and the trigger patterns that require them.
methodologyobjectsee agents.methodologyAgent-facing project methodology defaults (TDD, architecture, etc.).
stream_watchdogobject-Silent-agent kill timeout and heartbeat cadence for orchestrator stream watchdogs.
monitor_quality_signalsobject-Mid-execution quality signal policy: flags production code committed with no tests.
monitor_trajectory_signalsobject-Trajectory classifier thresholds for stagnating/thrashing signal detection.
signalsobject-Idle-orchestrator push-eligible signal types and idle threshold.
context_disciplineobjectsee belowAdvisory context-loading discipline guidance projected into agent surfaces.
lifecycle_enforcementobjectsee belowLifecycle enforcement backstop policy version and integrity manifest path.

roster default

- general-purpose
- lumenflow-pm
- test-engineer
- code-reviewer
- bug-triage
- lumenflow-enforcer
- initiative-architect

mandatory default

names: []
triggers: {}

context_discipline default

enabled: true
full_file_read_exceptions: []

lifecycle_enforcement default

enabled: true
policy_version: software-delivery-lifecycle-policy/v1
integrity_manifest: .lumenflow/state/packs/software-delivery/lifecycle-enforcement/integrity-manifest.json

Methodology defaults (agent-facing project defaults)

FieldTypeDefaultDescription
enabledbooleantrueEnables the generated Project Defaults methodology output.
enforcement”required” | “recommended”"required"Whether the listed methodology principles are required or merely recommended.
principlesstring[]see belowMethodology principles applied to every WU by default.
notesstring-Free-text notes appended to the Project Defaults block.

principles default

- TDD
- Hexagonal Architecture
- SOLID
- DRY
- YAGNI
- KISS
- Library-First

Client configuration (per-client settings)

FieldTypeDefaultDescription
preambleunknown-Preamble file path for this client, or false to disable it.
skillsDirstring-Skills directory path override for this client.
agentsDirstring-Agents directory path override for this client.
blocksobject[][]Client-specific content blocks injected into wu:spawn output.
skillsobject-Recommended and lane-specific skill guidance for wu:spawn.
methodologyobject-Vendor-neutral methodology delivery facts for this host adapter.
capabilities_mapobject-Maps abstract classifier capability tags to this client’s skill names.
featuresobject-Per-client activation flags for native pack/runtime features.
routingobject-Per-client mapping from the vendor-neutral model_profile vocabulary to this client’s model aliases.
capabilitiesobject-Declarative per-client capability flags, such as harnessPush.

Advisory mid-turn file-edit feedback hook configuration

FieldTypeDefaultDescription
enabledbooleanfalseEnables the advisory mid-turn file-edit feedback hook.
commandstring-Command run to produce advisory mid-turn feedback after a file edit.

LumenFlow supports different package managers and consumer-owned test runner labels. Configure these inside the software_delivery block:

FieldTypeDefaultDescription
package_manager"pnpm" | "npm" | "yarn" | "bun""pnpm"Package manager for CLI operations
test_runnerstring-Optional label for your configured test runner
build_commandstring"pnpm build"Custom build command for CLI bootstrap

test_runner is metadata for your workspace, not a production default. LumenFlow does not infer a runner from source files or inject runner-specific behaviour unless you configure matching gate commands or gates.resources rules.

software_delivery:
  package_manager: npm
  test_runner: jest
  build_command: npm run build
  gates:
    commands:
      test_full: npm test
      test_docs_only: npm test -- --testPathPattern=docs
      test_incremental: npm test -- --onlyChanged
software_delivery:
  package_manager: yarn
  test_runner: jest
  build_command: yarn nx build @hellmai/lumenflow-cli
  gates:
    commands:
      test_full: yarn nx run-many --target=test --all
      test_docs_only: yarn nx test docs
      test_incremental: yarn nx affected --target=test
software_delivery:
  package_manager: bun
  test_runner: 'bun:test'
  build_command: bun run --filter @hellmai/lumenflow-cli build
  gates:
    commands:
      test_full: bun test
      test_incremental: bun test

Config values can be overridden via environment variables:

LUMENFLOW_MAIN_BRANCH=develop pnpm wu:done --id WU-001
VariableOverrides
LUMENFLOW_CONFIGConfig file path
LUMENFLOW_MAIN_BRANCHgit.mainBranch
LUMENFLOW_WU_SPECSdirectories.wuDir
LUMENFLOW_CLI_DIST_CACHECLI build cache root (default ~/.lumenflow/cache/cli-dist)

Lifecycle commands that require a freshly built CLI resolve the build output by a digest of its inputs (sources, dependencies, build configuration, Node major and ABI) and keep it in a per-machine cache outside every checkout. An output that already matches the current inputs is used as-is, a cached build for the same digest is activated instead of rebuilt, and activation replaces each file by rename so a concurrent reader never sees a missing or partial one.

# Move the cache root (for a sandbox, a test run, or a non-default home)
LUMENFLOW_CLI_DIST_CACHE=/var/tmp/lumenflow-cli-dist pnpm wu:prep --id WU-001

A cache root that resolves inside a checkout is refused with a logged reason and the default root is used instead: cached build outputs written into a checkout appear as untracked files and block the lifecycle dirty-checkout guard for every work unit on that checkout.

Validate your config:

pnpm validate