Skip to main content
Noēsis can be configured through multiple sources. This page documents all available options and how to set them.

Configuration precedence

Configuration is resolved in this order (highest to lowest priority):
  1. ns.set() calls in Python code
  2. Environment variables (e.g., NOESIS_PLANNER)
  3. noesis.toml configuration file
  4. Default values

Configuration options

runs_dir

Directory where artifacts are stored.
SourceSetting
Pythonns.set(runs_dir="./my-runs")
EnvironmentNOESIS_RUNS_DIR=./my-runs
TOMLruns_dir = "./my-runs"
Default".noesis/episodes"

planner_mode

Controls planning strategy and direction behavior.
SourceSetting
Pythonns.set(planner_mode="meta")
EnvironmentNOESIS_PLANNER=meta
TOMLplanner_mode = "meta"
Default"meta"
Values:
ValueDescription
metaMetaPlanner-enabled planning (direction search / directives)
minimalMinimal planning; skips direction search and runs a simple planner
planner_mode controls planning strategy. Governance is controlled separately via governance_mode and governance_failure_policy.

agents

Reserved/unused in v1.0.0. Parsed into the runtime config but not read by the CLI/runtime execution paths in this release.
SourceSetting
Pythonns.set(agents="agents.yaml")
EnvironmentNOESIS_AGENTS=agents.yaml
TOMLagents = "agents.yaml"
Default"agents.yaml"

tasks

Reserved/unused in v1.0.0. Parsed into the runtime config but not read by the CLI/runtime execution paths in this release.
SourceSetting
Pythonns.set(tasks="tasks.yaml")
EnvironmentNOESIS_TASKS=tasks.yaml
TOMLtasks = "tasks.yaml"
Default"tasks.yaml"

timeout_sec

Episode timeout in seconds.
SourceSetting
Pythonns.set(timeout_sec=120)
EnvironmentNOESIS_TIMEOUT_SEC=120
TOMLtimeout_sec = 120
Default60

learn_mode

Controls how learning proposals are handled.
SourceSetting
Pythonns.set(learn_mode="record")
EnvironmentNOESIS_LEARN_MODE=record
TOMLlearn_mode = "record"
Default"record"
Values:
ValueDescription
offDisable learning
recordRecord proposals only
applyAuto-apply approved proposals

learn_auto_apply_min_confidence

Minimum confidence for auto-applying learn proposals.
SourceSetting
Pythonns.set(learn_auto_apply_min_confidence=0.9)
EnvironmentNOESIS_LEARN_AUTO_APPLY_MIN_CONFIDENCE=0.9
TOMLlearn_auto_apply_min_confidence = 0.9
Default0.75

learn_auto_apply_min_successes

Minimum successful triggers before auto-applying.
SourceSetting
Pythonns.set(learn_auto_apply_min_successes=5)
EnvironmentNOESIS_LEARN_AUTO_APPLY_MIN_SUCCESSES=5
TOMLlearn_auto_apply_min_successes = 5
Default3

intuition_mode

Controls intuition advisory posture.
SourceSetting
Pythonns.set(intuition_mode="advisory")
EnvironmentNOESIS_INTUITION_MODE=advisory
TOMLintuition_mode = "advisory"
Default"advisory"
Values:
ValueDescription
advisoryIntuition provides hints only
interventiveIntuition can modify plans
hybridCombination based on confidence

direction_min_confidence

Minimum confidence threshold for applying plan directives.
SourceSetting
Pythonns.set(direction_min_confidence=0.8)
EnvironmentNOESIS_DIRECTION_MIN_CONFIDENCE=0.8
TOMLdirection_min_confidence = 0.8
Default0.5

governance_mode

Controls pre-act governance behavior.
SourceSetting
Pythonns.set(governance_mode="enforce")
EnvironmentNOESIS_GOVERNANCE_MODE=enforce
TOMLgovernance_mode = "enforce"
Default"off"
Values:
ValueDescription
offGovernance disabled
auditRecord decisions; never blocks execution
enforceVeto terminates the episode before Act

governance_failure_policy

How to handle governance errors/timeouts.
SourceSetting
Pythonns.set(governance_failure_policy="fail_closed")
EnvironmentNOESIS_GOVERNANCE_FAILURE_POLICY=fail_closed
TOMLgovernance_failure_policy = "fail_closed"
DefaultDepends on mode (audit→fail_open, enforce→fail_closed)
Values:
ValueDescription
fail_openOn error, allow action to proceed
fail_closedOn error, treat as veto

governance_timeout_ms

Reserved/unused in v1.0.0. Parsed into the runtime config but not enforced during episode execution in this release.
SourceSetting
Pythonns.set(governance_timeout_ms=250)
EnvironmentNOESIS_GOVERNANCE_TIMEOUT_MS=250
TOMLgovernance_timeout_ms = 250
DefaultNone

policy_aliases

Mapping of policy alias → import spec. Used by the CLI --policy flag to resolve short names.
SourceSetting
Pythonns.set(policy_aliases={"safe": "my.module:SafetyPolicy"})
TOMLpolicy_aliases = { safe = "my.module:SafetyPolicy" }
Default{}

learn_home

Directory for learning data storage.
SourceSetting
Pythonns.set(learn_home="./learn")
EnvironmentNOESIS_LEARN_HOME=./learn
TOMLlearn_home = "./learn"
Default~/.noesis/state

prompt_provenance_enabled

Enable prompt provenance logging.
SourceSetting
Pythonns.set(prompt_provenance_enabled=True)
EnvironmentNOESIS_PROMPT_PROVENANCE_ENABLED=true
TOMLprompt_provenance_enabled = true
Defaultfalse

prompt_provenance_mode

Mode for prompt provenance storage.
SourceSetting
Pythonns.set(prompt_provenance_mode="hash_only")
EnvironmentNOESIS_PROMPT_PROVENANCE_MODE=hash_only
TOMLprompt_provenance_mode = "hash_only"
Default"hash_only"
Values:
ValueDescription
fullStore full prompt content
hash_onlyStore only content hashes (default)
redactedStore redacted content
prompt_provenance_mode="full" may record prompt content. Use hash_only or redacted for sensitive environments.

Configuration file

Noēsis searches for a config file by walking upward from the current working directory. Supported filenames are noesis.toml and .noesis.toml. The recommended form is a [noesis] table (if the table is missing, Noēsis falls back to treating the full TOML file as the config mapping):
noesis.toml
[noesis]
runs_dir = "./.noesis/episodes"
agents = "agents.yaml"
tasks = "tasks.yaml"
planner_mode = "meta"
learn_mode = "record"
learn_home = "./learn"
intuition_mode = "advisory"
direction_min_confidence = 0.7
governance_mode = "off"
governance_failure_policy = "fail_open"
learn_auto_apply_min_confidence = 0.85
learn_auto_apply_min_successes = 3
prompt_provenance_enabled = false
prompt_provenance_mode = "hash_only"

Environment variables

The following runtime configuration options have environment variable equivalents:
OptionEnvironment variable
runs_dirNOESIS_RUNS_DIR
planner_modeNOESIS_PLANNER
agentsNOESIS_AGENTS
tasksNOESIS_TASKS
timeout_secNOESIS_TIMEOUT_SEC
learn_modeNOESIS_LEARN_MODE
learn_homeNOESIS_LEARN_HOME
intuition_modeNOESIS_INTUITION_MODE
direction_min_confidenceNOESIS_DIRECTION_MIN_CONFIDENCE
governance_modeNOESIS_GOVERNANCE_MODE
governance_failure_policyNOESIS_GOVERNANCE_FAILURE_POLICY
governance_timeout_msNOESIS_GOVERNANCE_TIMEOUT_MS
learn_auto_apply_min_confidenceNOESIS_LEARN_AUTO_APPLY_MIN_CONFIDENCE
learn_auto_apply_min_successesNOESIS_LEARN_AUTO_APPLY_MIN_SUCCESSES
prompt_provenance_enabledNOESIS_PROMPT_PROVENANCE_ENABLED
prompt_provenance_modeNOESIS_PROMPT_PROVENANCE_MODE
policy_aliases has no environment variable form in v1.0.0 (configure it via ns.set() or noesis.toml).NOESIS_DIR_MIN_CONFIDENCE is a deprecated alias for NOESIS_DIRECTION_MIN_CONFIDENCE (if set, Noēsis warns and uses it).
Example:
# Set via environment
export NOESIS_PLANNER=meta
export NOESIS_RUNS_DIR=./artifacts
export NOESIS_DIRECTION_MIN_CONFIDENCE=0.8
export NOESIS_AGENTS=agents.yaml
export NOESIS_TASKS=tasks.yaml

# Or inline
NOESIS_PLANNER=minimal NOESIS_RUNS_DIR=./artifacts noesis run "quick test"

Python API

Setting configuration

import noesis as ns

# Set individual options
ns.set(runs_dir="./artifacts")
ns.set(planner_mode="meta")
ns.set(direction_min_confidence=0.8)

# Set multiple at once
ns.set(
    runs_dir="./artifacts",
    planner_mode="meta",
    learn_mode="record",
    prompt_provenance_enabled=False,
)

Reading configuration

import noesis as ns

config = ns.get()  # returns a mapping

print(f"Runs dir: {config['runs_dir']}")
print(f"Planner mode: {config['planner_mode']}")
print(f"Direction min confidence: {config['direction_min_confidence']}")

Resetting configuration

import noesis as ns

# Set back to defaults explicitly
ns.set(
    runs_dir="./.noesis/episodes",
    planner_mode="meta",
    direction_min_confidence=0.5,
    governance_mode="off",
    learn_mode="record",
    learn_auto_apply_min_confidence=0.75,
    learn_auto_apply_min_successes=3,
    prompt_provenance_enabled=False,
    prompt_provenance_mode="hash_only",
)

Per-episode parameters

Some parameters can be set per episode at call time:
import noesis as ns

# Global config
ns.set(planner_mode="meta")

# Per-episode parameters
episode_id = ns.run(
    "quick test",
    seed=42,                        # reproducibility seed
    tags={"env": "staging"},        # metadata tags
    intuition=True,                 # enable/disable intuition
)
Global configuration (via ns.set()) applies to all episodes. Per-call parameters like seed, tags, and intuition are set at run time.

CLI configuration

Most CLI configuration is done via environment variables:
NOESIS_RUNS_DIR=./artifacts noesis run "task"
NOESIS_PLANNER=minimal noesis run "task"
NOESIS_DIRECTION_MIN_CONFIDENCE=0.8 noesis run "task"

Configuration validation

Noēsis validates configuration on startup:
import noesis as ns

# Invalid planner mode raises ValueError
try:
    ns.set(planner_mode="invalid")
except ValueError as e:
    print(f"Invalid config: {e}")

Best practices

Use environment variables for deployment. Set NOESIS_RUNS_DIR, NOESIS_PLANNER, and related knobs per environment.
Don’t commit secrets. If using noesis.toml, ensure it doesn’t contain sensitive values and is in .gitignore if needed.
Use per-call seeds for debugging. Pass seed= to ns.run/ns.solve when you need reproducibility; unset it for production.

Example configurations

Development

noesis.toml
[noesis]
runs_dir = "./.noesis/episodes"
planner_mode = "minimal"
direction_min_confidence = 0.5
governance_mode = "off"
prompt_provenance_enabled = false

Staging

noesis.toml
[noesis]
runs_dir = "./.noesis/episodes"
planner_mode = "meta"
learn_mode = "record"
direction_min_confidence = 0.5
governance_mode = "audit"
prompt_provenance_enabled = false

Production

noesis.toml
[noesis]
runs_dir = "/var/noesis/episodes"
planner_mode = "meta"
learn_mode = "record"
governance_mode = "enforce"
governance_failure_policy = "fail_closed"
learn_auto_apply_min_confidence = 0.95
learn_auto_apply_min_successes = 5
prompt_provenance_enabled = true
prompt_provenance_mode = "hash_only"

Next steps