Skip to content

Neo environment variables (generated)

Every NEO_* runtime variable Neo reads, one row per entry, generated from the ENV_SETTINGS registry. The hand-written ../user/env-vars.md wraps this same table in narrative prose (parse- convention legend, default-on capabilities, config bridge); this file is the bare inventory.

VariableKindDefaultDescriptionOriginal site
NEO_MEMORY_DREAMINGflag-off-sentinelonSoul capability: weekly dream/consolidation passruntime/capability-flags.ts:64
NEO_REFLECTIONflag-off-sentinelonSoul capability: cross-session reflection passruntime/capability-flags.ts:64
NEO_ATTUNEMENTflag-off-sentinelonSoul capability: emotional-attunement heuristicsruntime/capability-flags.ts:64
NEO_HEARTBEATflag-off-sentinelonSoul capability: proactive heartbeat jobruntime/capability-flags.ts:64
NEO_SIGNALSflag-off-sentinelonSoul capability: Gmail/Calendar signal pollerruntime/capability-flags.ts:64
NEO_HOMEpath~/.neoRoot ~/.neo directory override (test isolation)runtime/paths.ts:20 (canonical)
NEO_DAEMONflag-on-sentineloff (unset)Always-on daemon explicit opt-inruntime/daemon/spawn.ts:84
NEO_DAEMON_SINGLE_HOSTflag-oneoff (unset)Skip the synced-filesystem daemon refusalruntime/daemon/daemon.ts:139 + spawn.ts:87
NEO_DAEMON_DAILY_TOKEN_BUDGETcustom2000000Daily Tier-0 token cap; off/0 = unlimitedruntime/daemon/budget.ts:183-191
NEO_DAEMON_ACTIVITY_GATEflag-off-sentinelonSkip dream/reflect passes on a quiet houseruntime/daemon/activity-gate.ts:71-73
NEO_HEARTBEAT_CONTENT_GATEflag-off-sentinelonSkip heartbeat LLM call when content is unchangedruntime/daemon/heartbeat-content-gate.ts:79-82
NEO_JOB_TIMEOUT_MSint-nonneg1200000 (20m)Global daemon-job wall-clock ceiling (0 disables)runtime/daemon/job-timeout.ts:72-80
NEO_JOB_TIMEOUT_MS_<JOBNAME>int-nonnegfalls through to NEO_JOB_TIMEOUT_MSPer-job ceiling override (e.g. NEO_JOB_TIMEOUT_MS_DREAM)runtime/daemon/job-timeout.ts:72-80
NEO_DREAM_MIN_INTERVAL_MSint-nonneg3600000 (1h)Dream job re-entry throttle floorruntime/daemon/jobs/dream-job.ts:61-69
NEO_HEARTBEAT_MIN_INTERVAL_MSint-nonneg1800000 (30m)Heartbeat job re-entry throttle floorruntime/daemon/jobs/heartbeat-job.ts:135-143
NEO_REFLECTION_MIN_INTERVAL_MSint-nonneg3600000 (1h)Reflection job re-entry throttle floorruntime/daemon/jobs/reflection-job.ts:85-93
NEO_SIGNALS_MIN_INTERVAL_MSint-nonneg600000 (10m)Signal-poller job re-entry throttle floorruntime/daemon/jobs/signal-poller-job.ts:88-96
NEO_EFFICIENCY_ATTEST_MIN_INTERVAL_MSint-nonneg60000 (1m)Monitoring-attestation job re-entry throttle floorruntime/daemon/jobs/attestation-job.ts
NEO_HEARTBEAT_ACTIVE_HOURSstringalways activeHeartbeat active-hours window "START-END" (local 24h)runtime/daemon/jobs/heartbeat-job.ts:324
NEO_MEMORY_DREAMING_CRONcron0 2 * * 0Dream pass cron overrideruntime/dream-scheduler.ts:53-57
NEO_HEARTBEAT_CRONcron*/30 * * * *Heartbeat cron overrideruntime/heartbeat-scheduler.ts:37-41
NEO_REFLECTION_CRONcron0 3 * * *Reflection pass cron overrideruntime/reflect-scheduler.ts:35-39
NEO_SIGNALS_CRONcron*/15 * * * *Signal-poll cron overrideruntime/signal-scheduler.ts:39-43
NEO_EFFICIENCY_ATTESTflag-off-sentinelonContext-efficiency monitoring-attestation refresh job (default-on)runtime/reflect-scheduler.ts (efficiencyAttestationEnabled)
NEO_EFFICIENCY_ATTEST_CRONcron*/10 * * * * (every 10m)Monitoring-attestation refresh cron overrideruntime/reflect-scheduler.ts (efficiencyAttestCron)
NEO_SESSION_IDLE_MSint-positive1800000 (30m)Agent-server idle-session eviction windowruntime/agent-cli.ts:174
NEO_SESSION_SWEEP_MSint-positive60000 (1m)Agent-server idle-sweep cadenceruntime/agent-cli.ts:176
NEO_REQUEST_TIMEOUT_MSint-positive0 (disabled)Agent-server per-request hard cap (0 = disabled)runtime/agent-cli.ts:184
NEO_DEBUG_TOOL_SCHEMAflag-oneoff (unset)Tool-schema cache determinism guardruntime/tool-schema-cache.ts:42-44
NEO_PRINT_MODE_LOGSflag-oneoff (unset)Keep structured logs (stderr) in print moderuntime/cli.ts:149
NEO_DEBUG_CODEX_BODYflag-oneoff (unset)Dump Codex request bodies to stderrproviders/openai-oauth-http-provider.ts:845
NEO_EGRESS_GATE_DEBUGflag-oneoff (unset)Egress-gate diagnostic logging (never weakens the gate)security/egress-gate/gate.ts (new in Wave R1a)
NEO_MODELstringunset (providers.json defaultModel)One-shot default-model override (/model command)runtime/config-loader.ts:333
NEO_PROVIDERstringunset (providers.json defaultProvider)One-shot default-provider overrideruntime/config-loader.ts:334
NEO_PROVIDER_TIMEOUT_MSint-positive600000 (10m, Number() convention)Provider SDK client timeoutproviders/provider-timeout.ts:34-40
NEO_UNATTENDED_RETRYflag-one-or-trueoff (unset)Persistent retry for unattended (daemon) runsproviders/retry.ts:113-116
NEO_VERSIONstring0.1.0Version stamped into the Codex-facing user agentproviders/openai-oauth-http-provider.ts:139 + openai-image-client.ts:121
NEO_MEMORY_RAG_MIN_SIMILARITYcustom0.15RAG cosine-similarity floor; off disablesmemory/embeddings/retrieval.ts:42-58
NEO_MEMORY_RAG_DECAY_RANKINGflag-off-sentinelonRAG decay-aware (retrievability) rankingmemory/embeddings/retrieval.ts:66-68
NEO_REFLECTION_FEEDBACKflag-off-sentinelonInject reflection insights into the agent loopcore/agent-loop/core.ts:49-51
NEO_ATTUNEMENT_LIVEcustomoff (heuristic floor only)Opt-in per-turn LLM live-state read (=== 'llm')runtime/agent-sections.ts:309-311
NEO_MEMORY_RAGcustomauto (on iff embedder configured)RAG prefetch mode (on/ensemble/off; unset = auto)memory/prefetch.ts:100
NEO_MEMORY_EMBEDDING_CONFLICTSmulti-sentinel-falsyonEmbedding-similarity conflict detection in dreammemory/embeddings/conflict-detector.ts:60-65
NEO_MEMORY_CONFLICT_ADJUDICATIONmulti-sentinel-falsyonLLM conflict adjudication in dreammemory/distillation/dream.ts:98-103
NEO_MEMORY_ARCHIVE_BACKSTOPflag-off-sentinelonDream archive backstop for stale memoriesmemory/distillation/dream.ts:881-883
NEO_MEMORY_ARCHIVE_BACKSTOP_CYCLESint-positivemodule default (3)Archive-backstop cycle threshold (int >= 1, parseInt)memory/distillation/dream.ts:886-892
NEO_AUTO_MEMORY_DIRpathgetNeoDir()Auto-memory base directory overridememory/auto-memory/paths.ts:35-37
NEO_TOOL_RESULTS_DIRpath~/.neo/tool-resultsTruncated-tool-result persistence directorycore/executor/helpers.ts:453-455
NEO_MEDIA_DIRpath~/.neo/mediaInbound channel-media persistence directorychannels/_media-store.ts:52
NEO_TELEMETRY_FILEpath~/.neo/telemetry/events.jsonlTelemetry events.jsonl path (token-report)bin/token-report.ts:22
NEO_PROFILEstringmobile_minimalChannel gateway tool-policy profile namebin/neo-tg.ts:61 + bin/neo-wa.ts:78
NEO_BINpathunset (required by channels)Path to compiled neo.js for NdjsonChild spawnschannels/_ndjson-child.ts:17
NEO_ENGINEcustomembeddedChannel endpoint engine ('isolated' opts out of embedded)channels/_endpoint.ts:51
NEO_DISABLE_BYPASSflag-truthyoff (1/true/yes/on, trim+ci)Kill-switch for bypass permissions modepermissions/bypass-killswitch.ts:21-25
NEO_LIVE_DRIVER_ENABLEflag-oneoff (unset)Consent gate for the live eval driver (real LLM calls)eval/live-driver/scheduler.ts:81
NEO_BEHAVIOR_EVAL_DIRpath./.neo/behavior-evalBehavior-eval output directoryruntime/live-queue.ts:294
NEO_BUNDLED_SKILLS_ROOTpathresolved from package layoutBundled-skills root override (non-empty string)skills/bundled-extractor.ts:64-68
NEO_POWERSHELL_PATHpathauto-detectedPowerShell executable path override (non-empty string)util/powershell-path.ts:81-85
NEO_WINDOWS_JOB_CONTAINMENTflag-off-sentinelonWindows managed-Job containment; literal off selects observable direct-root-only rollbackruntime/windows-job-containment.ts
NEO_UPDATE_CHECKflag-off-sentinelonPassive npm-registry version check that powers the TUI update banner; off disablesruntime/update-check.ts
NEO_EFFICIENCY_CHECKPOINT_LEVELlever-ceilingoffCompaction-checkpoint lever (W1) operator ceiling — can only narrow behavior below the provisioned policy, never enable beyond itruntime/env-settings.ts (new — Context-Efficiency W0)
NEO_EFFICIENCY_COMPRESSION_LEVELlever-ceilingoffCommand-output-compression lever (W2) operator ceiling — can only narrow behavior below the provisioned policy, never enable beyond itruntime/env-settings.ts (new — Context-Efficiency W0)
NEO_EFFICIENCY_READ_CACHE_LEVELlever-ceilingoffRead-cache lever (W3) operator ceiling — can only narrow behavior below the provisioned policy, never enable beyond itruntime/env-settings.ts (new — Context-Efficiency W0)
NEO_EFFICIENCY_ROUTING_LEVELlever-ceilingoffModel-routing-downshift lever (W4) operator ceiling — can only narrow behavior below the provisioned policy, never enable beyond itruntime/env-settings.ts (new — Context-Efficiency W0)
NEO_EFFICIENCY_BEHAVIORAL_LEVELlever-ceilingoffBehavioral-steering lever (W5) operator ceiling — can only narrow behavior below the provisioned policy, never enable beyond itruntime/env-settings.ts (new — Context-Efficiency W5)
NEO_EFFICIENCY_CONSERVE_LEVELlever-ceilingoffQuota-conserve lever (R2b) operator ceiling — can only narrow behavior below the provisioned policy, never enable beyond itruntime/env-settings.ts (new — Context-Efficiency R2b)
NEO_EFFICIENCY_DUPLICATE_GUARD_LEVELlever-ceilingoffDuplicate-guard lever (R3b) operator ceiling — can only narrow behavior below the provisioned policy, never enable beyond itruntime/env-settings.ts (new — Context-Efficiency R3b)
NEO_CODE_HARNESS_SELF_HEALflag-off-sentinelonCross-backend self-heal (R3a): re-dispatch a transport-killed delegated run once on a sibling backend serving the same model class. Set to off to restore hard-failruntime/env-settings.ts (new — Context-Efficiency R3a)
NEO_SUPPRESS_WARNINGSflag-truthyoff (1/true/yes, trim+ci; module-cached with refresh hook)Suppress warn-level structured-log output. Left owned by logger.ts: it is module-cached at logger-module load with its own live-refresh hook, and importing it into env-settings.ts would risk a circular import back into the logger every other module (including this one, transitively via errors) depends on.observability/logger.ts:55
NEO_FLAG_<NAME>flag-truthyfalls through to flags.json then call-site defaultFeature-flag env override family (truthy/falsy pair). Left owned by feature-flags.ts: it is a dynamic family (one var PER flag name, resolved at runtime from flags.json keys), not a fixed set of named vars a static registry entry can enumerate.runtime/feature-flags.ts:42-48 (dynamic family — stays owned there)