Environment Variables Reference#
This page provides a centralized reference for all environment variables that can be configured in data/config/custom.env.
For changes to take effect, restart the affected services:
./graphistry stop && ./graphistry up -d
# Or for specific services:
./graphistry stop forge-etl-python && ./graphistry up -d
Logging Configuration#
Variable |
Description |
Default |
|---|---|---|
|
System-wide log level |
|
|
Graphistry application log level |
|
Log levels: TRACE, DEBUG, INFO, WARN, ERROR
Notes:
TRACE: Slow due to heavy CPU-GPU trafficDEBUG: Large log volumes requiring rotationINFO: May cause large log volumes over time
Service Restart Schedules#
Variable |
Description |
Default |
|---|---|---|
|
Cron schedule for all service restarts |
disabled |
|
Cron schedule for streamgl-gpu worker restarts |
disabled |
Examples:
CRON_RESTART="5 */12 * * *" # 5min past every 12th hour
STREAMGL_GPU_WORKER_CRON_RESTART="5 */8 * * *" # 5min past every 8th hour
Timeout and Retry Settings#
HTTP Agent Settings (Transport Layer)#
Variable |
Description |
Default |
|---|---|---|
|
HTTP request timeout |
60000 |
|
HTTP keep-alive duration |
60000 |
Service Communication (Application Layer)#
Variable |
Description |
Default |
|---|---|---|
|
streamgl-viz to streamgl-gpu timeout |
30000 |
|
Number of retries for viz-to-gpu requests |
10 |
GPU Memory Watcher#
Optional safety feature for forge-etl-python that monitors GPU memory and can automatically terminate runaway processes before OOM errors.
Variable |
Description |
Default |
|---|---|---|
|
Enable GPU memory monitoring ( |
disabled |
|
How often to check GPU memory |
15 |
|
Log heartbeat interval (0 = disabled) |
disabled |
|
Log warning when memory exceeds this |
disabled |
|
Start deferred kill process |
disabled |
|
Kill if still above this after defer period |
disabled |
|
Wait time before killing |
300 |
|
Immediate kill (no defer) |
disabled |
Threshold formats: Percentage (70%, 90%) or absolute MB (8192MB, 16384MB)
Example production configuration:
FEP_GPU_WATCHER_ENABLED=1
FEP_GPU_WATCHER_POLL_SECONDS=30
FEP_GPU_WATCHER_WARN_THRESHOLD=70%
FEP_GPU_WATCHER_KILL_THRESHOLD=90%
FEP_GPU_WATCHER_IDLE_THRESHOLD=60%
FEP_GPU_WATCHER_EMERGENCY_THRESHOLD=95%
See Performance Tuning - GPU Memory Watcher for details.
Per-Service GPU Assignment#
By default, CUDA_VISIBLE_DEVICES applies to all GPU services. For advanced multi-GPU configurations, override per service.
Fallback chain:
Service-specific variable (e.g.,
FORGE_CUDA_VISIBLE_DEVICES)Global
CUDA_VISIBLE_DEVICESDefault: GPU 0
Variable |
Service |
|---|---|
|
Global default for all services |
|
forge-etl-python |
|
streamgl-gpu |
|
dask-cuda-worker |
|
dask-scheduler |
|
graph-app-kit-public |
|
graph-app-kit-private |
|
notebook |
Format support:
Integer format:
0,1,2,3(standard CUDA format)UUID format:
GPU-xxx,GPU-yyy(VMware/Nutanix/MIG environments)Mixed format NOT supported for streamgl-gpu
Examples:
# Single GPU (default)
# Leave all commented out, defaults to GPU 0
# Multi-GPU isolation
FORGE_CUDA_VISIBLE_DEVICES=0
STREAMGL_CUDA_VISIBLE_DEVICES=1
# Multi-GPU shared (round-robin assignment)
CUDA_VISIBLE_DEVICES=0,1,2,3
# VMware/Nutanix/MIG
CUDA_VISIBLE_DEVICES=GPU-xxx,GPU-yyy
See Performance Tuning - Per-Service GPU Assignment for details.
Multi-Worker GPU Configuration#
Configure worker counts for multi-GPU utilization. Workers are assigned to GPUs using round-robin distribution.
Variable |
Description |
Default |
|---|---|---|
|
forge-etl-python Hypercorn workers |
4 |
|
streamgl-gpu workers |
4 |
|
dask-cuda-worker instances |
1 |
GPU underutilization policy (matches PyTorch/dask-cuda behavior):
Workers < GPUs: Service logs WARNING, unused GPUs remain idle
Workers > GPUs: Round-robin assignment distributes workers evenly
Workers = GPUs: One-to-one assignment (optimal)
Examples:
# Dual GPU
CUDA_VISIBLE_DEVICES=0,1
FORGE_NUM_WORKERS=8
STREAMGL_NUM_WORKERS=8
DASK_NUM_WORKERS=2
# Quad GPU
CUDA_VISIBLE_DEVICES=0,1,2,3
FORGE_NUM_WORKERS=16
STREAMGL_NUM_WORKERS=16
DASK_NUM_WORKERS=4
Tip: Use the GPU Configuration Wizard to auto-generate optimal settings:
./etc/scripts/gpu-config-wizard.sh -E ./data/config/custom.env
See Performance Tuning - Multi-Worker Configuration for details.
RMM GPU Settings#
RAPIDS Memory Manager settings for GPU memory allocation.
Variable |
Description |
Default |
|---|---|---|
|
Allocator type: |
|
|
Enable memory pooling |
|
|
Initial pool size in bytes |
|
|
Maximum pool size in bytes |
None (full GPU) |
|
Enable RMM logging |
|
Note: For vGPU environments (VMware, Nutanix), set RMM_ALLOCATOR=default as vGPUs don’t support CUDA Unified Memory.
See Performance Tuning - RMM GPU Settings for details.
Cache Configuration#
Control CPU and GPU cache sizes for forge-etl-python. Sizes are per-worker.
Variable |
Description |
Default |
|---|---|---|
|
Override all CPU cache counts |
varies |
|
Override large CPU cache counts |
varies |
|
Override small CPU cache counts |
varies |
|
Override all GPU cache counts |
varies |
|
Override large GPU cache counts |
~30 |
|
Override small GPU cache counts |
varies |
Important GPU caches:
N_CACHE_ROUTES_SHAPER_TIMEBARN_CACHE_ROUTES_SHAPER_HISTOGRAMN_CACHE_ROUTES_SHAPER_SELECT_IDS_IN_GROUPN_CACHE_ARROW_LOADER_FETCH_WARM
Important CPU caches:
N_CACHE_ARROW_LOADER_FETCH_VGRAPHN_CACHE_ARROW_LOADER_FETCH_ENCODINGSN_CACHE_ARROW_LOADER_FETCH_HELPERN_CACHE_ARROW_DOWNLOADER_FETCH_UNSHAPEDN_CACHE_ARROW_DOWNLOADER_FETCH_SHAPE
See Performance Tuning - Cache Size for details.
Upload Settings#
Variable |
Description |
Default |
|---|---|---|
|
Maximum upload size |
|
Examples: 1M, 100M, 1G, 10G
Maps / Geospatial#
Enable Kepler.gl-based geospatial map visualizations.
Variable |
Description |
Default |
|---|---|---|
|
Enable geospatial map support |
|
Example:
GRAPHISTRY_ENABLE_KEPLER=true
See the PyGraphistry Maps documentation for usage details.
Quick Reference by Use Case#
Production Hardening#
LOG_LEVEL=INFO
GRAPHISTRY_LOG_LEVEL=INFO
FEP_GPU_WATCHER_ENABLED=1
FEP_GPU_WATCHER_WARN_THRESHOLD=70%
FEP_GPU_WATCHER_KILL_THRESHOLD=90%
FEP_GPU_WATCHER_EMERGENCY_THRESHOLD=95%
COOKIE_SECURE=true
Multi-GPU Setup (4 GPUs)#
CUDA_VISIBLE_DEVICES=0,1,2,3
FORGE_NUM_WORKERS=16
STREAMGL_NUM_WORKERS=16
DASK_NUM_WORKERS=4
Development / Debugging#
LOG_LEVEL=DEBUG
GRAPHISTRY_LOG_LEVEL=DEBUG
VMware / Nutanix vGPU#
RMM_ALLOCATOR=default
CUDA_VISIBLE_DEVICES=GPU-xxx,GPU-yyy
Maps / Geospatial#
GRAPHISTRY_ENABLE_KEPLER=true