Skip to content

Environment Variable Reference

ARI honours roughly 90 environment variables, drawn together here for convenience. Most have sensible defaults; the Required? column flags the ones a fresh checkout cannot operate without.

docs/reference/configuration.md walks the same surface as a tutorial; this page is the alphabetical lookup.

v0.5.0 removed the global $HOME/.ari/ directory. Where this reference says "must be set", the legacy fallback emits a DeprecationWarning and disappears in v1.0.

Core (ARI_*)

Checkpoint + paths

VariablePurposeDefaultRequired?
ARI_CHECKPOINT_DIRActive checkpoint root(none — must be set)
ARI_WORKSPACEParent directory for new runs (used by orchestrator skill)(none)✓ for ari-skill-orchestrator
ARI_WORK_DIRPer-node working directory root (ari-skill-coding)/tmp/ari_work
ARI_LOG_DIRApplication log directory$ARI_CHECKPOINT_DIR
ARI_ROOTARI source tree root (used in tests)(auto-detect)
ARI_SOURCE_FILEOverride input experiment.md path(none)

LLM model selection

VariablePurposeDefault
ARI_LLM_MODELDefault LiteLLM model id(none)
ARI_LLM_API_BASELiteLLM API base overrideLiteLLM default
ARI_MODELCross-skill fallback model id(falls through to ARI_LLM_MODEL)
ARI_MODEL_EVALModel for the LLM evaluatorfalls through to ARI_MODEL
ARI_MODEL_JUDGEModel for the BFTS judgefalls through to ARI_MODEL
ARI_MODEL_LINEAGEModel for stagnation / lineage decisions (v0.7.0)falls through to ARI_MODEL
ARI_MODEL_ROOT_SELECTModel that picks the seed ideafalls through to ARI_MODEL
ARI_MODEL_IDEAModel for generate_ideasfalls through to ARI_MODEL
ARI_MODEL_REPLICATEModel for replicator high-level reasoning (v0.7.0)falls through to ARI_MODEL
ARI_MODEL_REPLICATORModel used by ari-skill-paper-re.build_reproduce_shfalls through
ARI_MODEL_RUBRIC_GENModel for ari-skill-replicate.generate_rubricfalls through
ARI_MODEL_RUBRIC_AUDITModel for ari-skill-replicate.audit_rubricfalls through
LLM_MODELCross-skill fallback (used by ari-skill-transform, ari-skill-plot)(none)
LLM_API_BASEAPI base for LLM_MODEL(none)

Idea skill — VirSci-live

Opt-in vendor-wrap path for generate_ideas. Default-off keeps current behaviour (the lightweight re-implemented discussion loop). When on, generate_ideas runs VirSci's real multi-agent mechanism on a live Semantic Scholar snapshot; on missing deps / any runtime error it degrades to the re-impl loop. The deliberation LLM follows ARI_MODEL_IDEA.

VariablePurposeDefault
ARI_IDEA_VIRSCI_REALToggle the real vendor-wrap path (1/true). Unset ⇒ current re-impl behaviour(unset / off)
ARI_IDEA_VIRSCI_KDiscussion turns (vendor group_max_discuss_iteration)7
ARI_IDEA_VIRSCI_TEAM_SIZEMax team members (vendor max_teammember)3
ARI_IDEA_VIRSCI_N_AUTHORSAuthor pool size for select_coauthors16
ARI_IDEA_VIRSCI_N_PAPERSSPECTER2 retrieval corpus size800
ARI_IDEA_VIRSCI_MAX_TEAMSCap on teams driven through generate_idea=n_ideas
ARI_IDEA_VIRSCI_SPECTER2_MODELLocal query embedderallenai/specter2_base

BFTS exploration

VariablePurposeDefault
ARI_MAX_NODESHard cap on BFTS nodes(workflow-controlled)
ARI_MAX_DEPTHHard cap on tree depth(workflow-controlled)
ARI_MAX_REACTReAct iteration cap per node(workflow-controlled)
ARI_PARALLELConcurrent node executors1
ARI_TIMEOUT_NODEPer-node wall-time cap (seconds)(none)
ARI_BFTS_ALLOW_WEBOpt-in: expose web-skill (web_search / fetch_url / arXiv / Semantic Scholar) to the BFTS node agent during exploration. Default-off keeps the search loop reproducible (P5); when on, ARI records a non-reproducible-trajectory marker (bfts_web_provenance.json). idea-skill's survey already does a bounded literature lookup regardless. 1/true/yes/on to enablefalse
ARI_RECURSION_DEPTHCurrent depth in nested ARI runs (auto-set)(auto)
ARI_MAX_RECURSION_DEPTHCap for orchestrator recursion3
ARI_PARENT_RUN_IDParent run id during recursion (auto-set)(auto)
ARI_DISABLED_TOOLS_FOR_CHILDToolset trimmed for child runs(none)
ARI_REACT_MEMORY_SEARCH_LIMITsearch_memory top_k ceiling(skill default)

Backend + executor

VariablePurpose
ARI_BACKENDBackend selector for the agent runtime
ARI_EXECUTORExecutor backend (sync / async)
ARI_CONTAINER_IMAGESIF / OCI image for sandboxed execution
ARI_CONTAINER_MODEexec / shell (singularity invocation style)
ARI_CONTAINERS_DIRContainer image cache root
ARI_MAX_CHILD_PROCSRLIMIT_NPROC cap inside the coding sandbox (default 1024)
ARI_LOG_LEVELPython logging level (INFO / DEBUG / ...)

Memory backend

VariablePurpose
ARI_MEMORY_BACKENDletta (default) or in_memory (no Letta required; ephemeral RAM-only backend for local smoke tests)
ARI_MEMORY_AUTO_RESTOREAuto-restore from memory_backup.jsonl.gz on resume
ARI_MEMORY_ACCESS_LOGPath to memory_access.jsonl
ARI_MEMORY_CONSOLIDATETyped-memory consolidation + artifact-grounded verified_context.json for paper claims. Default ON; set 0/false/no/off to disable
ARI_CURRENT_NODE_IDSet by the agent loop; skills read it but never set it
ARI_LETTA_VENVVirtualenv path for the bundled Letta server

Reviewer rubrics + paper review

VariablePurpose
ARI_RUBRICSelects which reviewer_rubrics/<id>.yaml is active
ARI_RUBRIC_DIROverride rubric directory
ARI_STRICT_DYNAMICForce dynamic-axis generation for ari-skill-paper
ARI_NUM_REFLECTIONSReflection rounds in review_compiled_paper
ARI_NUM_REVIEWS_ENSEMBLEEnsemble size for rubric review
ARI_JUDGE_N_RUNSSimpleJudge re-run count for grade_with_simplejudge

Claim-evidence gate

VariablePurposeDefault
ARI_CLAIM_GATE_MODEClaim-evidence / metric-correctness gate evaluation switch. off never blocks; warn reports errors/warnings but never blocks finalize; strict blocks the final gate when blocking errors existwarn (off / warn / strict)
ARI_COMPARISON_SCOPEGoverns whether a cross-environment comparison is treated as a transparency warning (any) or a blocking error (same_environment, for single-architecture optimization studies)any (any / same_environment)

Rubric auto-generation (v0.7.0)

VariablePurpose
ARI_RUBRIC_GEN_TARGET_LEAVESTarget leaf count for generate_rubric
ARI_RUBRIC_GEN_TEMPERATURELLM temperature override
ARI_RUBRIC_GEN_TWO_STAGEUse the two-stage skeleton + subtree synthesis
ARI_PAPERBENCH_RUBRIC_DIROverride search root for venue-conditioned PaperBench rubric templates (unreleased — see docs/reference/rubric_schema.md#venue-conditioned-templates)

PaperBench reproducibility (v0.7.0)

VariablePurposeDefault
ARI_PAPERBENCH_PATHOverride the bundled vendor/paperbench/ pathvendor/paperbench/
ARI_REPLICATOR_TIME_LIMIT_SECWall-time cap for run_reproduce43200 (12 h)
ARI_REPLICATOR_ITERATIVEUse the iterative replicator agent
ARI_REPLICATOR_MAX_STEPSIteration cap when iterative is on

Orchestrator skill

VariablePurposeDefault
ARI_ORCHESTRATOR_PORTMCP server port9890
ARI_ORCHESTRATOR_LOGSLog directory$ARI_WORKSPACE/orchestrator_logs
ARI_ORCHESTRATOR_DRY_RUNSkip real ari run (smoke testing)
ARI_ORCHESTRATOR_SSE_ONESHOTOne-shot SSE response mode
ARI_ORCHESTRATOR_SSE_TIMEOUTSSE timeout (seconds)

Transform skill

VariablePurpose
ARI_TRANSFORM_MEMORY_MAX_CHARSTotal memory budget per call
ARI_TRANSFORM_MEMORY_MAX_ENTRIESPer-call entry cap

Web / retrieval skill

VariablePurpose
ARI_RETRIEVAL_BACKENDsemantic_scholar / arxiv / alphaxiv

Publish + registry + clone

VariablePurpose
ARI_PUBLISH_DRYRUNForce --dry-run (CI safety, v0.7.0)
ARI_PUBLISH_SETTINGSPath to a publish settings JSON
ARI_REGISTRY_DATAsqlite + artifact root for ari registry serve (must be set)
ARI_REGISTRY_TOKENBearer token for ari clone ari://... and ari ear publish --backend ari-registry
ARI_REGISTRY_URLOverride the registry endpoint
ARI_REGISTRY_NAMEDefault registry name when multiple are listed
ARI_REGISTRIES_FILEOverride registries.yaml location (else looked up under the active checkpoint)
ARI_LOCAL_TARBALL_OUTOutput path for the local-tarball publish backend
ARI_GH_REPOGitHub repo target for the gh backend
ARI_GH_MODErelease / repo mode for the gh backend
ARI_CLONE_HTTP_TIMEOUTHTTP timeout for ari clone

SLURM defaults

VariablePurpose
ARI_SLURM_PARTITIONDefault partition
ARI_SLURM_CPUSDefault --cpus-per-task
ARI_SLURM_GPUSDefault --gres=gpu:N
ARI_SLURM_MEM_GBDefault memory request
ARI_SLURM_WALLTIMEDefault --time
ARI_SLURM_ALLOW_NO_GRES1 ⇒ when the cluster has no GRES configured for GPUs, silently drop --gres / --gpus-* flags (legacy v0.7.2 behaviour). Default (unset) ⇒ raise RuntimeError with an actionable message so a GPU request never silently runs on CPU.

PaperBench reproduction phase (Stage 2)

VariablePurpose
ARI_PHASE1_SANDBOXauto / local / docker / apptainer / singularity / slurm. Forces the sandbox runner used by server.run_reproduce and bridge.reproduce_submission.
ARI_PHASE1_DOCKER_IMAGEDefault docker image when sandbox_kind=docker and no explicit container_image is supplied. Defaults to ubuntu:24.04.
ARI_PHASE1_APPTAINER_IMAGEDefault SIF / docker URI when sandbox_kind=apptainer/singularity and no explicit container_image is supplied.
ARI_PHASE1_SINGULARITY_IMAGELegacy alias for ARI_PHASE1_APPTAINER_IMAGE.
ARI_PHASE1_ALLOW_FALLBACK1 ⇒ when a requested sandbox tool is missing (docker daemon / apptainer / sbatch / partition), fall back to host-local execution with only a warning (legacy v0.7.2 behaviour). Default (unset) ⇒ raise RuntimeError so the user's isolation intent isn't silently bypassed.
ARI_PAPERBENCH_PATHOverride the vendored PaperBench source tree path (default: ari-skill-paper-re/vendor/paperbench/project/paperbench).
ARI_REPLICATOR_TIME_LIMIT_SECDefault Stage 1 agent rollout time budget when the caller passes 0.
ARI_REPLICATOR_ITERATIVE1 ⇒ default to IterativeAgent variant for Stage 1 rollouts.
ARI_REPLICATOR_MAX_STEPSDefault Stage 1 step cap.
ARI_AGENT_ENV_PATHDefault path to the vendor-style agent.env file (one KEY=VALUE per line) that bridge.rollout_submission auto-loads when its agent_env_path argument is unset. Falls back to ~/.ari/agent.env when this is also empty. This vendored PaperBench-replicate credentials lookup (ari-skill-paper-re/src/_paperbench_bridge.py) is distinct from ARI's own $HOME/.ari/ run storage removed in v0.5.0, so the fallback remains live. Used to surface per-paper credentials (e.g. HF_TOKEN) to the Stage 1 agent.
HF_TOKENHugging Face Hub token. When set on the calling process, bridge.rollout_submission automatically forwards it into the agent's env (vendor nano/eval.py:172-179 well-known-credential pattern). Required for any PaperBench paper whose Stage 1 rollout invokes huggingface-cli login.
ARI_JUDGE_N_RUNSDefault n_runs for the SimpleJudge call when the wizard / caller passes 0. PaperBench paper §4.1 single-pass default is 1.
ARI_MODEL_JUDGEDefault judge model id (LiteLLM-routed).
ARI_MODEL_REPLICATORDefault Stage 1 rollout model id.

SLURM (SLURM_*)

VariablePurpose
SLURM_MODElocal (default) / ssh
SLURM_SSH_HOSTSSH host for remote SLURM mode
SLURM_SSH_USERSSH user (defaults to current user)
SLURM_SSH_PORTSSH port (default 22)
SLURM_SSH_KEYPrivate key path
SLURM_SSH_PASSWORDOptional password (prefer key)
SLURM_DEFAULT_PARTITIONDefault partition for sub-jobs ARI launches
SLURM_PARTITIONPer-job partition override
SLURM_VALID_PARTITIONSComma-separated allow-list
SLURM_LOG_DIRWhere to write *.out / *.err
SLURM_CLUSTER_NAMEDisplay name shown in the dashboard
SLURM_JOB_ID / SLURM_JOB_NODELIST / SLURM_JOB_PARTITIONSet by SLURM itself when ARI runs inside a job

Letta (LETTA_*)

VariablePurpose
LETTA_BASE_URLLetta API base (default http://127.0.0.1:8283)
LETTA_API_KEYAPI key when Letta requires auth
LETTA_EMBEDDING_CONFIGPath to embedding config JSON (required)

Ollama / OpenAI (OLLAMA_* / OPENAI_*)

VariablePurpose
OLLAMA_HOSTOllama listen address (default 127.0.0.1:11434)
OLLAMA_BASE_URLLiteLLM-side base URL
OPENAI_API_KEYOpenAI / OpenAI-compatible API key

VLM

VariablePurposeDefault
VLM_MODELVision LLM for figure / table reviewopenai/gpt-4o

See also

  • docs/reference/configuration.md — narrative tour of the same env vars, grouped by use case.
  • ari-core/ari/config.py — Pydantic settings model that consumes most of the ARI_* group.
  • Each skill's README.md — env vars specific to that skill.