Skip to content

Environment Variables

Runtime Selection

Variable Meaning
KEDI_ADAPTER Default framework adapter for the Python API/CLI
KEDI_AGENT Default harness for the Python API
KEDI_ADAPTER_MODEL Default model for the selected backend
MODEL_NAME CLI fallback model and codegen fallback
KEDI_PARALLEL Override default concurrency or select sequential execution

KEDI_ADAPTER and KEDI_AGENT are mutually exclusive. Python configure(), decorator arguments, source directives, and CLI options can provide more local selection. KEDI_PARALLEL accepts 0/1, true/false, on/off, or a positive worker count; invalid values fail rather than silently selecting a mode. Unset or empty enables concurrency with eight workers. Use KEDI_PARALLEL=0 for sequential execution; no variable is needed to enable concurrency.

Code Generation

Variable CLI equivalent
KEDI_CODEGEN_AGENT --codegen-agent
KEDI_CODEGEN_MODEL --codegen-model
KEDI_CODEGEN_RETRIES --codegen-retries

MODEL_NAME is also consulted by the Pydantic codegen service when no explicit codegen model is supplied.

Optimization

Variable CLI equivalent
KEDI_OPTIMIZER --optimizer
KEDI_OPTIMIZER_MODEL --optimizer-model
KEDI_OPTIMIZER_REFLECTION_MODEL --optimizer-reflection-model
KEDI_OPTIMIZER_MAX_METRIC_CALLS --optimizer-max-metric-calls
KEDI_OPTIMIZER_MODEL_MAX_TOKENS --optimizer-model-max-tokens
KEDI_OPTIMIZER_REFLECTION_MODEL_MAX_TOKENS --optimizer-reflection-model-max-tokens
KEDI_OPTIMIZER_REFLECTION_MINIBATCH_SIZE --optimizer-reflection-minibatch-size
KEDI_OPTIMIZER_MAX_VALIDATION_EXAMPLES --optimizer-max-validation-examples
KEDI_DEBUG_OPTIMIZED=1 Print optimized prompt-loading diagnostics

The debug variable is for diagnosis and may reveal prompt content; do not leave it enabled in normal production logs.

Packages

Variable Contract
KEDI_HOME Absolute Kedi state root; relative paths are rejected
KEDI_REGISTRY_MOCK_ROOT Local mock registry root until the public registry exists

Installed packages live beneath $KEDI_HOME/registry or the platform default Kedi home. Git package operations set GIT_TERMINAL_PROMPT=0 so unattended installs fail instead of waiting for credentials.

Filesystem and Interactive State

Variable Contract
KEDI_WORKSPACE_POLICY Unset/empty or strict enforces workspace containment; none disables that containment, not all secret/deletion rules
KEDI_HISTORY REPL input history file, default ~/.kedi_history
KEDI_CODEX_AUTH_FILE Explicit Codex Responses auth file; see Codex models

See Filesystem before changing workspace policy. It does not sandbox embedded Python or external agents.

Notebook Server

Variable Contract
HOST, PORT Notebook bind defaults, 127.0.0.1 and 8788
KEDI_NOTEBOOK_TOKEN Notebook API bearer token; required off loopback
KEDI_NOTEBOOK_ENV_HOME Root for managed host virtual environments
KEDI_NOTEBOOK_SECRETS_PATH Secret Manager JSON path; default ~/.kedi/notebook/secrets.json

Notebook reads .env from its working directory without overriding existing process values, then applies its Secret Manager entries. Updating Secret Manager resets active runtimes. These files and their contents must not be committed.

Benchmark Instrumentation

KEDI_HARBOR_LOGFIRE=1 opts the Harbor integration into installing and configuring Logfire and Kedi instrumentation. It is disabled when unset or different from 1. Exporting telemetry also depends on Logfire credentials; this flag is not authentication. Leave it unset for an uninstrumented run.

Provider Credentials

Provider SDKs read their own variables, such as GROQ_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY, or ANTHROPIC_API_KEY. Kedi forwards selection and settings but does not rename provider credentials. The exact required variable depends on the model string and adapter.

ACP, Claude, and Codex process settings can also supply an explicit env mapping. It is merged with the current process environment where that adapter documents process spawning.

.env Loading and Security

The Python API's default configuration loads .env through its environment setup. Explicit arguments and scoped configuration take precedence. Do not depend on .env loading inside a separately spawned harness unless that process also loads or receives the values.

Never put secrets in .kedi source, optimizer datasets, debug exports, or committed environment files. MarkdownDebugExporter does not redact values. Bundled filesystem tools treat .env names as sensitive, but arbitrary Python code is not intercepted by the approval layer.