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"./runs"

planner_mode

Controls the level of governance and observability.
SourceSetting
Pythonns.set(planner_mode="meta")
EnvironmentNOESIS_PLANNER=meta
TOMLplanner_mode = "meta"
Default"meta"
Values:
ValueDescription
metaFull governance with MetaPlanner and PreActGovernor
minimalSkip governance, use legacy stepwise planner

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

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

Control prompt provenance logging.
SourceSetting
Pythonns.set(prompt_provenance_enabled=True)
EnvironmentNOESIS_PROMPT_PROVENANCE_ENABLED=true
TOMLprompt_provenance_enabled = true
Defaultfalse
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"

Configuration file

Create a noesis.toml in your project root:
noesis.toml
[noesis]
runs_dir = "./runs"
planner_mode = "meta"
learn_mode = "record"
learn_home = "./learn"
intuition_mode = "advisory"
direction_min_confidence = 0.7
learn_auto_apply_min_confidence = 0.85
learn_auto_apply_min_successes = 3
prompt_provenance_enabled = false
prompt_provenance_mode = "hash_only"

Environment variables

All 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
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
Example:
# Set via environment
export NOESIS_PLANNER=meta
export NOESIS_RUNS_DIR=./artifacts
export NOESIS_DIRECTION_MIN_CONFIDENCE=0.8

# 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="./runs",
    planner_mode="meta",
    direction_min_confidence=0.5,
    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 overrides

Some options can be overridden per episode:
import noesis as ns

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

# Override for specific episode
episode_id = ns.run(
    "quick test",
    tags={"override": "true"},
    seed=42,  # per-call seed for reproducibility
)

CLI configuration

Configure the CLI via environment variables (the CLI does not expose --runs-dir or --planner flags):
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 = "./runs"
planner_mode = "minimal"
direction_min_confidence = 0.5
prompt_provenance_enabled = false

Staging

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

Production

noesis.toml
[noesis]
runs_dir = "/var/noesis/runs"
planner_mode = "meta"
learn_mode = "record"
learn_auto_apply_min_confidence = 0.95
learn_auto_apply_min_successes = 5
prompt_provenance_enabled = true
prompt_provenance_mode = "hash_only"

Next steps