Environment Variables#
This page lists every environment variable the GaP engine and the open-robot-skills bundles read, grouped by subsystem. Variables are optional unless marked required; “unset” means the documented in-code default applies.
Tip
Explicit function arguments and config-file values beat environment variables throughout GaP. Use env vars for per-shell or per-worker configuration; use config files for anything you want recorded with a run.
Engine runtime#
Read by the executor and skill-registry resolution (Execution, Executor semantics).
Variable |
Type / default |
Effect |
|---|---|---|
|
path; default: the workflow directory |
Trace output directory when no |
|
int; default |
Super-step (node-visit) cap per execution. Exceeding it raises |
|
float; default |
Seconds a streaming node gets to honor its |
|
float; default |
Poll rate of the graph-scoped observation stream. Precedence: |
|
int; default |
Persist every Nth observation-stream read into the trace’s |
|
|
Skill-registry roots, precedence-ordered. A full override: when set, project/user config and the auto-discovered sibling checkout are skipped. Every entry must be a valid skills checkout (a directory with a |
|
|
With |
Safety guards#
Call-count caps for guard-tagged tools (perception, planning,
sim_step — see Connector tools).
Unset means unlimited. Per-workflow gap.tools.guards.set_limits()
overrides take priority over the environment; the benchmark harness sets
its safety_limits: config block this way per trial. Counters reset at
the start of each execute(); a violation raises GuardLimitExceeded
(a BaseException — not catchable with except Exception).
Variable |
Type / default |
Effect |
|---|---|---|
|
int; default: unlimited |
Cap on |
|
int; default: unlimited |
Cap on |
|
int; default: unlimited |
Cap on |
Generation and LLM providers#
Read by gap generate and the agent pipeline
(Generation,
LLM providers).
Variable |
Type / default |
Effect |
|---|---|---|
|
path; default: unset (caching disabled) |
Disk cache for LLM completions during generation. Keyed by provider + model + generation knobs + prompt; only correct for deterministic (temperature-0) calls. |
|
|
Bypass the prompt cache even when a cache dir is configured. |
|
string |
API key for the default |
|
strings |
Vertex AI project and region. The benchmark launcher exports them into spawned workers from the config’s |
|
path |
Explicit Application Default Credentials file for the |
|
path; default: |
Where |
The launcher also forwards a config-file llm.api_key into the
OPENROUTER_API_KEY variable for spawned benchmark workers, since
config-derived values would not otherwise survive the process spawn.
Simulation and environments#
Read by the env layer and the parallel benchmark workers (Environments, Connectors).
Variable |
Type / default |
Effect |
|---|---|---|
|
string; workers default to |
MuJoCo rendering backend. Spawned benchmark workers |
|
comma-separated GPU ids; default: unset |
Round-robins benchmark workers across GPUs: worker i gets |
|
|
LIBERO joint-motion mode: |
|
|
Opt into the perturbed LIBERO variant (scripted moving basket) for envs built without an explicit |
|
path; default: |
Location of the vab LIBERO fork (variance/packing suites). |
|
path; default: |
Location of the LIBERO-PRO fork (classic suites). |
|
path; default: unset ( |
UR URDF used for forward kinematics in the UR+ZED connector. |
|
path to a 4×4 camera→wrist |
Hand-eye calibration for the UR+ZED connector. Missing calibration degrades silently to identity (warning only) — camera poses then equal the wrist pose. |
Note
Two variables in this area are set by GaP itself, not by you:
Spawned benchmark workers export
CUDA_VISIBLE_DEVICESandMUJOCO_EGL_DEVICE_IDto their assigned GPU id fromGAP_MUJOCO_EGL_DEVICES, pinning the whole stack (torch, curobo, EGL) to one physical device. Don’t set these manually for benchmark runs.gap.envs.loadersetsTORCH_FORCE_NO_WEIGHTS_ONLY_LOAD=1(asetdefault) to keep torch ≥ 2.6 loading the LIBERO init-state pickles.
Fast execution mode (LIBERO sim)#
Execution-speed optimizations for the LIBERO connector/env, all resolved in one
place (gap/env_config.py) and each validated to preserve task success on the
grocery pick-and-place. Fast mode is on by default — set GAP_FAST=0 to
restore the conservative (legacy) path. Any individual flag explicitly set in
the environment still wins over the unified default — so you can keep fast
mode on and selectively turn one thing back off, e.g.
GAP_CUROBO_CUDA_GRAPH=0 gap run ....
Variable |
Type / default |
|
Effect |
|---|---|---|---|
|
bool; default on |
— |
Unified switch, on by default: streaming + no-motion-render + cuRobo CUDA graph. Set |
|
bool; default on |
on |
Follow a planned joint trajectory with a continuous path-following servo (no per-waypoint convergence + settle). |
|
float |
|
Per-tick joint-step clamp as a fraction of the joint controller’s |
|
bool; default off |
off (opt-in) |
OSC Cartesian servo on |
|
bool; default on |
off |
Whether to render the cameras during motion segments. |
|
bool; default off |
on |
Capture cuRobo’s v0.8 pose planner into a CUDA graph — ~8× faster warm plans after a one-time capture. Biggest win at batch scale; only valid when the collision world is fixed across plans (e.g. the free-space |
Policies#
Variable |
Type / default |
Effect |
|---|---|---|
|
path |
Your openpi (or MolmoAct-flavored openpi) checkout. The built-in policy presets ( |
Perception bundles (open-robot-skills)#
Read by bundle code at import or call time; each bundle’s SKILL.md
declares its requirements, surfaced by gap check. See the
Tool catalog.
vlm bundle#
Variable |
Type / default |
Effect |
|---|---|---|
|
|
Which backend |
|
string; default: |
Model name. OpenRouter accepts Gemini slugs with or without the |
|
URL; default: |
OpenAI-compatible chat-completions endpoint for the |
|
string; default: unset |
API key for the |
|
string |
Vertex project for the |
|
string; default |
Vertex region for the |
Other perception bundles#
Variable |
Type / default |
Effect |
|---|---|---|
|
torch device; default |
Device for the SAM3 image model and video tracker. |
|
torch device; default |
Device for Grounding DINO. |
|
HF model id; default |
Grounding DINO checkpoint. |
|
string; default |
Model for |
|
string |
API key for the gemini-er bundle, via the google-genai SDK’s default resolution (either works). |
|
URL; required for the molmo bundle |
Molmo has no hosted API — point this at a self-hosted vLLM server’s OpenAI-compatible endpoint, e.g. |
|
string; default |
Model name served at |
|
|
Disk cache for the |
|
path; default: |
Where that cache lives — per-checkout by default, easy to wipe. |
|
|
|
Miscellaneous#
Variable |
Type / default |
Effect |
|---|---|---|
|
string |
Hugging Face access token for gated model repos, used when bundle weights download from the Hub. Weights download lazily on first model call; |
|
path |
Required when installing the curobo extra ( |
|
any non-empty value |
Disables colored graph rendering in |
|
compiler path |
Used by Triton to JIT-compile the SAM3 video tracker’s NMS kernels. The sam3 bundle repairs a missing or stale |